mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
Compare commits
4 Commits
f236706d6a
...
62bd6e41ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
62bd6e41ef | ||
|
|
293c7b42c6 | ||
|
|
788da62777 | ||
|
|
2c7f24a913 |
@@ -295,6 +295,8 @@ Singleton {
|
||||
property bool enableFprint: false
|
||||
property int maxFprintTries: 3
|
||||
property bool fprintdAvailable: false
|
||||
property string lockScreenActiveMonitor: "all"
|
||||
property string lockScreenInactiveColor: "#000000"
|
||||
property bool hideBrightnessSlider: false
|
||||
|
||||
property int notificationTimeoutLow: 5000
|
||||
|
||||
@@ -194,6 +194,8 @@ var SPEC = {
|
||||
enableFprint: { def: false },
|
||||
maxFprintTries: { def: 3 },
|
||||
fprintdAvailable: { def: false, persist: false },
|
||||
lockScreenActiveMonitor: { def: "all" },
|
||||
lockScreenInactiveColor: { def: "#000000" },
|
||||
hideBrightnessSlider: { def: false },
|
||||
|
||||
notificationTimeoutLow: { def: 5000 },
|
||||
|
||||
@@ -15,9 +15,9 @@ Item {
|
||||
property real modalWidth: 400
|
||||
property real modalHeight: 300
|
||||
property var targetScreen
|
||||
readonly property var effectiveScreen: targetScreen || contentWindow.screen
|
||||
readonly property real screenWidth: effectiveScreen?.width
|
||||
readonly property real screenHeight: effectiveScreen?.height
|
||||
readonly property var effectiveScreen: contentWindow.screen ?? targetScreen
|
||||
readonly property real screenWidth: effectiveScreen?.width ?? 1920
|
||||
readonly property real screenHeight: effectiveScreen?.height ?? 1080
|
||||
readonly property real dpr: effectiveScreen ? CompositorService.getScreenScale(effectiveScreen) : 1
|
||||
property bool showBackground: true
|
||||
property real backgroundOpacity: 0.5
|
||||
@@ -58,6 +58,12 @@ Item {
|
||||
function open() {
|
||||
ModalManager.openModal(root);
|
||||
closeTimer.stop();
|
||||
const focusedScreen = CompositorService.getFocusedScreen();
|
||||
if (focusedScreen) {
|
||||
contentWindow.screen = focusedScreen;
|
||||
if (useBackgroundWindow)
|
||||
backgroundWindow.screen = focusedScreen;
|
||||
}
|
||||
shouldBeVisible = true;
|
||||
contentWindow.visible = false;
|
||||
if (useBackgroundWindow)
|
||||
@@ -102,6 +108,30 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Quickshell
|
||||
function onScreensChanged() {
|
||||
if (!contentWindow.screen)
|
||||
return;
|
||||
const currentScreenName = contentWindow.screen.name;
|
||||
let screenStillExists = false;
|
||||
for (let i = 0; i < Quickshell.screens.length; i++) {
|
||||
if (Quickshell.screens[i].name === currentScreenName) {
|
||||
screenStillExists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (screenStillExists)
|
||||
return;
|
||||
const newScreen = CompositorService.getFocusedScreen();
|
||||
if (newScreen) {
|
||||
contentWindow.screen = newScreen;
|
||||
if (useBackgroundWindow)
|
||||
backgroundWindow.screen = newScreen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: closeTimer
|
||||
interval: animationDuration + 120
|
||||
|
||||
@@ -1,866 +0,0 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
|
||||
Item {
|
||||
id: powerTab
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
anchors.topMargin: Theme.spacingL
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: lockScreenSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.surfaceContainerHigh
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: lockScreenSection
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "lock"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Lock Screen")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Power Actions")
|
||||
description: I18n.tr("Show power, restart, and logout buttons on the lock screen")
|
||||
checked: SettingsData.lockScreenShowPowerActions
|
||||
onToggled: checked => SettingsData.set("lockScreenShowPowerActions", checked)
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("loginctl not available - lock integration requires DMS socket connection")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.warning
|
||||
visible: !SessionService.loginctlAvailable
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Enable loginctl lock integration")
|
||||
description: I18n.tr("Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen")
|
||||
checked: SessionService.loginctlAvailable && SettingsData.loginctlLockIntegration
|
||||
enabled: SessionService.loginctlAvailable
|
||||
onToggled: checked => {
|
||||
if (SessionService.loginctlAvailable) {
|
||||
SettingsData.set("loginctlLockIntegration", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Lock before suspend")
|
||||
description: I18n.tr("Automatically lock the screen when the system prepares to suspend")
|
||||
checked: SettingsData.lockBeforeSuspend
|
||||
visible: SessionService.loginctlAvailable && SettingsData.loginctlLockIntegration
|
||||
onToggled: checked => SettingsData.set("lockBeforeSuspend", checked)
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Enable fingerprint authentication")
|
||||
description: I18n.tr("Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)")
|
||||
checked: SettingsData.enableFprint
|
||||
visible: SettingsData.fprintdAvailable
|
||||
onToggled: checked => SettingsData.set("enableFprint", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: timeoutSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.surfaceContainerHigh
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: timeoutSection
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "schedule"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Idle Settings")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
width: Math.max(0, parent.width - parent.children[0].width - parent.children[1].width - powerCategory.width - Theme.spacingM * 3)
|
||||
height: parent.height
|
||||
}
|
||||
|
||||
DankButtonGroup {
|
||||
id: powerCategory
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: BatteryService.batteryAvailable
|
||||
model: ["AC Power", "Battery"]
|
||||
currentIndex: 0
|
||||
selectionMode: "single"
|
||||
checkEnabled: false
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Prevent idle for media")
|
||||
description: I18n.tr("Inhibit idle timeout when audio or video is playing")
|
||||
checked: SettingsData.preventIdleForMedia
|
||||
visible: IdleService.idleMonitorAvailable
|
||||
onToggled: checked => SettingsData.set("preventIdleForMedia", checked)
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Fade to lock screen")
|
||||
description: I18n.tr("Gradually fade the screen before locking with a configurable grace period")
|
||||
checked: SettingsData.fadeToLockEnabled
|
||||
onToggled: checked => SettingsData.set("fadeToLockEnabled", checked)
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
id: fadeGracePeriodDropdown
|
||||
property var periodOptions: ["1 second", "2 seconds", "3 seconds", "4 seconds", "5 seconds", "10 seconds", "15 seconds", "20 seconds", "30 seconds"]
|
||||
property var periodValues: [1, 2, 3, 4, 5, 10, 15, 20, 30]
|
||||
|
||||
width: parent.width
|
||||
addHorizontalPadding: true
|
||||
text: I18n.tr("Fade grace period")
|
||||
options: periodOptions
|
||||
visible: SettingsData.fadeToLockEnabled
|
||||
enabled: SettingsData.fadeToLockEnabled
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentPeriod = SettingsData.fadeToLockGracePeriod;
|
||||
const index = periodValues.indexOf(currentPeriod);
|
||||
currentValue = index >= 0 ? periodOptions[index] : "5 seconds";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = periodOptions.indexOf(value);
|
||||
if (index >= 0) {
|
||||
SettingsData.set("fadeToLockGracePeriod", periodValues[index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
id: lockDropdown
|
||||
property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"]
|
||||
property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800]
|
||||
|
||||
addHorizontalPadding: true
|
||||
text: I18n.tr("Automatically lock after")
|
||||
options: timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acLockTimeout : SettingsData.batteryLockTimeout;
|
||||
const index = lockDropdown.timeoutValues.indexOf(currentTimeout);
|
||||
lockDropdown.currentValue = index >= 0 ? lockDropdown.timeoutOptions[index] : "Never";
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acLockTimeout : SettingsData.batteryLockTimeout;
|
||||
const index = timeoutValues.indexOf(currentTimeout);
|
||||
currentValue = index >= 0 ? timeoutOptions[index] : "Never";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = timeoutOptions.indexOf(value);
|
||||
if (index >= 0) {
|
||||
const timeout = timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acLockTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batteryLockTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
id: monitorDropdown
|
||||
property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"]
|
||||
property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800]
|
||||
|
||||
addHorizontalPadding: true
|
||||
text: I18n.tr("Turn off monitors after")
|
||||
options: timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acMonitorTimeout : SettingsData.batteryMonitorTimeout;
|
||||
const index = monitorDropdown.timeoutValues.indexOf(currentTimeout);
|
||||
monitorDropdown.currentValue = index >= 0 ? monitorDropdown.timeoutOptions[index] : "Never";
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acMonitorTimeout : SettingsData.batteryMonitorTimeout;
|
||||
const index = timeoutValues.indexOf(currentTimeout);
|
||||
currentValue = index >= 0 ? timeoutOptions[index] : "Never";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = timeoutOptions.indexOf(value);
|
||||
if (index >= 0) {
|
||||
const timeout = timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acMonitorTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batteryMonitorTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
id: suspendDropdown
|
||||
property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"]
|
||||
property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800]
|
||||
|
||||
addHorizontalPadding: true
|
||||
text: I18n.tr("Suspend system after")
|
||||
options: timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acSuspendTimeout : SettingsData.batterySuspendTimeout;
|
||||
const index = suspendDropdown.timeoutValues.indexOf(currentTimeout);
|
||||
suspendDropdown.currentValue = index >= 0 ? suspendDropdown.timeoutOptions[index] : "Never";
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acSuspendTimeout : SettingsData.batterySuspendTimeout;
|
||||
const index = timeoutValues.indexOf(currentTimeout);
|
||||
currentValue = index >= 0 ? timeoutOptions[index] : "Never";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = timeoutOptions.indexOf(value);
|
||||
if (index >= 0) {
|
||||
const timeout = timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acSuspendTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batterySuspendTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
visible: SessionService.hibernateSupported
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Suspend behavior")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceText
|
||||
leftPadding: Theme.spacingM
|
||||
}
|
||||
|
||||
DankButtonGroup {
|
||||
id: suspendBehaviorSelector
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
model: ["Suspend", "Hibernate", "Suspend then Hibernate"]
|
||||
selectionMode: "single"
|
||||
checkEnabled: false
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const behavior = powerCategory.currentIndex === 0 ? SettingsData.acSuspendBehavior : SettingsData.batterySuspendBehavior;
|
||||
suspendBehaviorSelector.currentIndex = behavior;
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const behavior = powerCategory.currentIndex === 0 ? SettingsData.acSuspendBehavior : SettingsData.batterySuspendBehavior;
|
||||
currentIndex = behavior;
|
||||
}
|
||||
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (selected) {
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acSuspendBehavior", index);
|
||||
} else {
|
||||
SettingsData.set("batterySuspendBehavior", index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Idle monitoring not supported - requires newer Quickshell version")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.error
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: !IdleService.idleMonitorAvailable
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: powerMenuCustomSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.surfaceContainerHigh
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: powerMenuCustomSection
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "tune"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Power Menu Customization")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Customize which actions appear in the power menu")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Use Grid Layout")
|
||||
description: I18n.tr("Display power menu actions in a grid instead of a list")
|
||||
checked: SettingsData.powerMenuGridLayout
|
||||
onToggled: checked => SettingsData.set("powerMenuGridLayout", checked)
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
id: defaultActionDropdown
|
||||
width: parent.width
|
||||
addHorizontalPadding: true
|
||||
text: I18n.tr("Default selected action")
|
||||
options: ["Reboot", "Log Out", "Power Off", "Lock", "Suspend", "Restart DMS", "Hibernate"]
|
||||
property var actionValues: ["reboot", "logout", "poweroff", "lock", "suspend", "restart", "hibernate"]
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentAction = SettingsData.powerMenuDefaultAction || "logout";
|
||||
const index = actionValues.indexOf(currentAction);
|
||||
currentValue = index >= 0 ? options[index] : "Log Out";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = options.indexOf(value);
|
||||
if (index >= 0) {
|
||||
SettingsData.set("powerMenuDefaultAction", actionValues[index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Reboot")
|
||||
checked: SettingsData.powerMenuActions.includes("reboot")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("reboot")) {
|
||||
actions.push("reboot");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "reboot");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Log Out")
|
||||
checked: SettingsData.powerMenuActions.includes("logout")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("logout")) {
|
||||
actions.push("logout");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "logout");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Power Off")
|
||||
checked: SettingsData.powerMenuActions.includes("poweroff")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("poweroff")) {
|
||||
actions.push("poweroff");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "poweroff");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Lock")
|
||||
checked: SettingsData.powerMenuActions.includes("lock")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("lock")) {
|
||||
actions.push("lock");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "lock");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Suspend")
|
||||
checked: SettingsData.powerMenuActions.includes("suspend")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("suspend")) {
|
||||
actions.push("suspend");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "suspend");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Restart DMS")
|
||||
description: I18n.tr("Restart the DankMaterialShell")
|
||||
checked: SettingsData.powerMenuActions.includes("restart")
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("restart")) {
|
||||
actions.push("restart");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "restart");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Hibernate")
|
||||
description: I18n.tr("Only visible if hibernate is supported by your system")
|
||||
checked: SettingsData.powerMenuActions.includes("hibernate")
|
||||
visible: SessionService.hibernateSupported
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes("hibernate")) {
|
||||
actions.push("hibernate");
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== "hibernate");
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: powerCommandConfirmSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.surfaceContainerHigh
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: powerCommandConfirmSection
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "check_circle"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Power Action Confirmation")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Hold to Confirm Power Actions")
|
||||
description: I18n.tr("Require holding button/key to confirm power off, restart, suspend, hibernate and logout")
|
||||
checked: SettingsData.powerActionConfirm
|
||||
onToggled: checked => SettingsData.set("powerActionConfirm", checked)
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
visible: SettingsData.powerActionConfirm
|
||||
|
||||
Item {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
height: holdDurationLabel.height
|
||||
|
||||
StyledText {
|
||||
id: holdDurationLabel
|
||||
text: I18n.tr("Hold Duration")
|
||||
font.pixelSize: Appearance.fontSize.normal
|
||||
font.weight: Font.Medium
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: SettingsData.powerActionHoldDuration + "s"
|
||||
font.pixelSize: Appearance.fontSize.normal
|
||||
font.weight: Font.Medium
|
||||
color: Theme.primary
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankSlider {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
minimum: 1
|
||||
maximum: 10
|
||||
unit: "s"
|
||||
wheelEnabled: false
|
||||
showValue: false
|
||||
thumbOutlineColor: Theme.surfaceContainerHigh
|
||||
value: SettingsData.powerActionHoldDuration
|
||||
onSliderValueChanged: newValue => SettingsData.set("powerActionHoldDuration", newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: powerCommandCustomization.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.surfaceContainerHigh
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: powerCommandCustomization
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingL
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "developer_mode"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Custom Power Actions")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard lock procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customLockCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/myLock.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionLock) {
|
||||
text = SettingsData.customPowerActionLock;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionLock", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard logout procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customLogoutCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/myLogout.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionLogout) {
|
||||
text = SettingsData.customPowerActionLogout;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionLogout", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard suspend procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customSuspendCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/mySuspend.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionSuspend) {
|
||||
text = SettingsData.customPowerActionSuspend;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionSuspend", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard hibernate procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customHibernateCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/myHibernate.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionHibernate) {
|
||||
text = SettingsData.customPowerActionHibernate;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionHibernate", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard reboot procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customRebootCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/myReboot.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionReboot) {
|
||||
text = SettingsData.customPowerActionReboot;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionReboot", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
anchors.left: parent.left
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Command or script to run instead of the standard power off procedure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customPowerOffCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "/usr/bin/myPowerOff.sh"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.customPowerActionPowerOff) {
|
||||
text = SettingsData.customPowerActionPowerOff;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("customPowerActionPowerOff", text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,15 +19,14 @@ FocusScope {
|
||||
color: "transparent"
|
||||
|
||||
Loader {
|
||||
id: personalizationLoader
|
||||
|
||||
id: wallpaperLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 0
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: Component {
|
||||
PersonalizationTab {
|
||||
WallpaperTab {
|
||||
parentModal: root.parentModal
|
||||
}
|
||||
}
|
||||
@@ -41,7 +40,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: timeWeatherLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 1
|
||||
visible: active
|
||||
@@ -58,7 +56,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: keybindsLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 2
|
||||
visible: active
|
||||
@@ -77,7 +74,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: topBarLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 3
|
||||
visible: active
|
||||
@@ -95,14 +91,13 @@ FocusScope {
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: widgetsLoader
|
||||
|
||||
id: workspacesLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 4
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: WidgetTweaksTab {}
|
||||
sourceComponent: WorkspacesTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
@@ -113,7 +108,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: dockLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 5
|
||||
visible: active
|
||||
@@ -132,7 +126,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: displaysLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 6
|
||||
visible: active
|
||||
@@ -149,7 +142,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: networkLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 7
|
||||
visible: active
|
||||
@@ -166,7 +158,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: printerLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 8
|
||||
visible: active
|
||||
@@ -183,7 +174,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: launcherLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 9
|
||||
visible: active
|
||||
@@ -200,7 +190,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: themeColorsLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 10
|
||||
visible: active
|
||||
@@ -216,14 +205,13 @@ FocusScope {
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: powerLoader
|
||||
|
||||
id: lockScreenLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 11
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: PowerSettings {}
|
||||
sourceComponent: LockScreenTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
@@ -234,7 +222,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: pluginsLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 12
|
||||
visible: active
|
||||
@@ -253,7 +240,6 @@ FocusScope {
|
||||
|
||||
Loader {
|
||||
id: aboutLoader
|
||||
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 13
|
||||
visible: active
|
||||
@@ -267,5 +253,151 @@ FocusScope {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: typographyMotionLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 14
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: TypographyMotionTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: soundsLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 15
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: SoundsTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: mediaPlayerLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 16
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: MediaPlayerTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: notificationsLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 17
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: NotificationsTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: osdLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 18
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: OSDTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: runningAppsLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 19
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: RunningAppsTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: systemUpdaterLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 20
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: SystemUpdaterTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: powerSleepLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 21
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: PowerSleepTab {}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: widgetsLoader
|
||||
anchors.fill: parent
|
||||
active: root.currentIndex === 22
|
||||
visible: active
|
||||
focus: active
|
||||
|
||||
sourceComponent: WidgetsTab {
|
||||
parentModal: root.parentModal
|
||||
}
|
||||
|
||||
onActiveChanged: {
|
||||
if (active && item) {
|
||||
Qt.callLater(() => item.forceActiveFocus());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ FloatingWindow {
|
||||
title: I18n.tr("Settings", "settings window title")
|
||||
minimumSize: Qt.size(500, 400)
|
||||
implicitWidth: 800
|
||||
implicitHeight: 800
|
||||
implicitHeight: 940
|
||||
color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
|
||||
visible: false
|
||||
|
||||
@@ -121,29 +121,18 @@ FloatingWindow {
|
||||
focus: true
|
||||
|
||||
Keys.onPressed: event => {
|
||||
const tabCount = 13;
|
||||
if (event.key === Qt.Key_Escape) {
|
||||
hide();
|
||||
event.accepted = true;
|
||||
return;
|
||||
}
|
||||
if (event.key === Qt.Key_Down) {
|
||||
currentTabIndex = (currentTabIndex + 1) % tabCount;
|
||||
if (event.key === Qt.Key_Down || (event.key === Qt.Key_Tab && !event.modifiers)) {
|
||||
sidebar.navigateNext();
|
||||
event.accepted = true;
|
||||
return;
|
||||
}
|
||||
if (event.key === Qt.Key_Up) {
|
||||
currentTabIndex = (currentTabIndex - 1 + tabCount) % tabCount;
|
||||
event.accepted = true;
|
||||
return;
|
||||
}
|
||||
if (event.key === Qt.Key_Tab && !event.modifiers) {
|
||||
currentTabIndex = (currentTabIndex + 1) % tabCount;
|
||||
event.accepted = true;
|
||||
return;
|
||||
}
|
||||
if (event.key === Qt.Key_Backtab || (event.key === Qt.Key_Tab && event.modifiers & Qt.ShiftModifier)) {
|
||||
currentTabIndex = (currentTabIndex - 1 + tabCount) % tabCount;
|
||||
if (event.key === Qt.Key_Up || event.key === Qt.Key_Backtab || (event.key === Qt.Key_Tab && event.modifiers & Qt.ShiftModifier)) {
|
||||
sidebar.navigatePrevious();
|
||||
event.accepted = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -7,105 +7,335 @@ import qs.Services
|
||||
import qs.Widgets
|
||||
|
||||
Rectangle {
|
||||
id: sidebarContainer
|
||||
id: root
|
||||
|
||||
property int currentIndex: 0
|
||||
property var parentModal: null
|
||||
readonly property var allSidebarItems: [
|
||||
property var expandedCategories: ({})
|
||||
property var autoExpandedCategories: ({})
|
||||
|
||||
readonly property var categoryStructure: [
|
||||
{
|
||||
"id": "personalization",
|
||||
"text": I18n.tr("Personalization"),
|
||||
"icon": "person",
|
||||
"icon": "palette",
|
||||
"children": [
|
||||
{
|
||||
"text": I18n.tr("Wallpaper"),
|
||||
"icon": "wallpaper",
|
||||
"tabIndex": 0
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Theme & Colors"),
|
||||
"icon": "format_paint",
|
||||
"tabIndex": 10
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Typography & Motion"),
|
||||
"icon": "text_fields",
|
||||
"tabIndex": 14
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Time & Weather"),
|
||||
"icon": "schedule",
|
||||
"tabIndex": 1
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Keyboard Shortcuts"),
|
||||
"icon": "keyboard",
|
||||
"shortcutsOnly": true,
|
||||
"tabIndex": 2
|
||||
"text": I18n.tr("Sounds"),
|
||||
"icon": "volume_up",
|
||||
"tabIndex": 15,
|
||||
"soundsOnly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dankbar",
|
||||
"text": I18n.tr("Dank Bar"),
|
||||
"icon": "toolbar",
|
||||
"children": [
|
||||
{
|
||||
"text": I18n.tr("Settings"),
|
||||
"icon": "tune",
|
||||
"tabIndex": 3
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Widgets"),
|
||||
"icon": "widgets",
|
||||
"tabIndex": 22
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "workspaces_widgets",
|
||||
"text": I18n.tr("Workspaces & Widgets"),
|
||||
"icon": "dashboard",
|
||||
"collapsedByDefault": true,
|
||||
"children": [
|
||||
{
|
||||
"text": I18n.tr("Workspaces"),
|
||||
"icon": "view_module",
|
||||
"tabIndex": 4
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Media Player"),
|
||||
"icon": "music_note",
|
||||
"tabIndex": 16
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Notifications"),
|
||||
"icon": "notifications",
|
||||
"tabIndex": 17
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("On-screen Displays"),
|
||||
"icon": "tune",
|
||||
"tabIndex": 18
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Running Apps"),
|
||||
"icon": "apps",
|
||||
"tabIndex": 19,
|
||||
"hyprlandNiriOnly": true
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("System Updater"),
|
||||
"icon": "refresh",
|
||||
"tabIndex": 20
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dock_launcher",
|
||||
"text": I18n.tr("Dock & Launcher"),
|
||||
"icon": "apps",
|
||||
"collapsedByDefault": true,
|
||||
"children": [
|
||||
{
|
||||
"text": I18n.tr("Dock"),
|
||||
"icon": "dock_to_bottom",
|
||||
"tabIndex": 5
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Launcher"),
|
||||
"icon": "grid_view",
|
||||
"tabIndex": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "input",
|
||||
"text": I18n.tr("Keyboard Shortcuts"),
|
||||
"icon": "keyboard",
|
||||
"tabIndex": 2,
|
||||
"shortcutsOnly": true
|
||||
},
|
||||
{
|
||||
"id": "displays",
|
||||
"text": I18n.tr("Displays"),
|
||||
"icon": "monitor",
|
||||
"tabIndex": 6
|
||||
},
|
||||
{
|
||||
"id": "network",
|
||||
"text": I18n.tr("Network"),
|
||||
"icon": "wifi",
|
||||
"dmsOnly": true,
|
||||
"tabIndex": 7
|
||||
"tabIndex": 7,
|
||||
"dmsOnly": true
|
||||
},
|
||||
{
|
||||
"id": "printers",
|
||||
"text": I18n.tr("Printers"),
|
||||
"icon": "print",
|
||||
"cupsOnly": true,
|
||||
"tabIndex": 8
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Launcher"),
|
||||
"icon": "apps",
|
||||
"tabIndex": 9
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Theme & Colors"),
|
||||
"icon": "palette",
|
||||
"tabIndex": 10
|
||||
"tabIndex": 8,
|
||||
"cupsOnly": true
|
||||
},
|
||||
{
|
||||
"id": "power_security",
|
||||
"text": I18n.tr("Power & Security"),
|
||||
"icon": "power",
|
||||
"icon": "security",
|
||||
"collapsedByDefault": true,
|
||||
"children": [
|
||||
{
|
||||
"text": I18n.tr("Lock Screen"),
|
||||
"icon": "lock",
|
||||
"tabIndex": 11
|
||||
},
|
||||
{
|
||||
"text": I18n.tr("Power & Sleep"),
|
||||
"icon": "power_settings_new",
|
||||
"tabIndex": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "plugins",
|
||||
"text": I18n.tr("Plugins"),
|
||||
"icon": "extension",
|
||||
"tabIndex": 12
|
||||
},
|
||||
{
|
||||
"id": "separator",
|
||||
"separator": true
|
||||
},
|
||||
{
|
||||
"id": "about",
|
||||
"text": I18n.tr("About"),
|
||||
"icon": "info",
|
||||
"tabIndex": 13
|
||||
}
|
||||
]
|
||||
readonly property var sidebarItems: allSidebarItems.filter(item => {
|
||||
|
||||
function isItemVisible(item) {
|
||||
if (item.dmsOnly && NetworkService.usingLegacy)
|
||||
return false;
|
||||
if (item.cupsOnly && !CupsService.cupsAvailable)
|
||||
return false;
|
||||
if (item.shortcutsOnly && !KeybindsService.available)
|
||||
return false;
|
||||
if (item.soundsOnly && !AudioService.soundsAvailable)
|
||||
return false;
|
||||
if (item.hyprlandNiriOnly && !CompositorService.isNiri && !CompositorService.isHyprland)
|
||||
return false;
|
||||
return true;
|
||||
})
|
||||
}
|
||||
|
||||
function hasVisibleChildren(category) {
|
||||
if (!category.children)
|
||||
return false;
|
||||
return category.children.some(child => isItemVisible(child));
|
||||
}
|
||||
|
||||
function isCategoryVisible(category) {
|
||||
if (category.separator)
|
||||
return true;
|
||||
if (!isItemVisible(category))
|
||||
return false;
|
||||
if (category.children && !hasVisibleChildren(category))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function toggleCategory(categoryId) {
|
||||
var newExpanded = Object.assign({}, expandedCategories);
|
||||
newExpanded[categoryId] = !isCategoryExpanded(categoryId);
|
||||
expandedCategories = newExpanded;
|
||||
|
||||
var newAutoExpanded = Object.assign({}, autoExpandedCategories);
|
||||
delete newAutoExpanded[categoryId];
|
||||
autoExpandedCategories = newAutoExpanded;
|
||||
}
|
||||
|
||||
function isCategoryExpanded(categoryId) {
|
||||
if (expandedCategories[categoryId] !== undefined) {
|
||||
return expandedCategories[categoryId];
|
||||
}
|
||||
var category = categoryStructure.find(cat => cat.id === categoryId);
|
||||
if (category && category.collapsedByDefault) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function isChildActive(category) {
|
||||
if (!category.children)
|
||||
return false;
|
||||
return category.children.some(child => child.tabIndex === currentIndex);
|
||||
}
|
||||
|
||||
function findParentCategory(tabIndex) {
|
||||
for (var i = 0; i < categoryStructure.length; i++) {
|
||||
var cat = categoryStructure[i];
|
||||
if (cat.children) {
|
||||
for (var j = 0; j < cat.children.length; j++) {
|
||||
if (cat.children[j].tabIndex === tabIndex) {
|
||||
return cat;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function autoExpandForTab(tabIndex) {
|
||||
var parent = findParentCategory(tabIndex);
|
||||
if (!parent)
|
||||
return;
|
||||
|
||||
if (!isCategoryExpanded(parent.id)) {
|
||||
var newExpanded = Object.assign({}, expandedCategories);
|
||||
newExpanded[parent.id] = true;
|
||||
expandedCategories = newExpanded;
|
||||
|
||||
var newAutoExpanded = Object.assign({}, autoExpandedCategories);
|
||||
newAutoExpanded[parent.id] = true;
|
||||
autoExpandedCategories = newAutoExpanded;
|
||||
}
|
||||
}
|
||||
|
||||
function autoCollapseIfNeeded(oldTabIndex, newTabIndex) {
|
||||
var oldParent = findParentCategory(oldTabIndex);
|
||||
var newParent = findParentCategory(newTabIndex);
|
||||
|
||||
if (oldParent && oldParent !== newParent && autoExpandedCategories[oldParent.id]) {
|
||||
var newExpanded = Object.assign({}, expandedCategories);
|
||||
newExpanded[oldParent.id] = false;
|
||||
expandedCategories = newExpanded;
|
||||
|
||||
var newAutoExpanded = Object.assign({}, autoExpandedCategories);
|
||||
delete newAutoExpanded[oldParent.id];
|
||||
autoExpandedCategories = newAutoExpanded;
|
||||
}
|
||||
}
|
||||
|
||||
function navigateNext() {
|
||||
const currentItemIndex = sidebarItems.findIndex(item => item.tabIndex === currentIndex);
|
||||
const nextIndex = (currentItemIndex + 1) % sidebarItems.length;
|
||||
currentIndex = sidebarItems[nextIndex].tabIndex;
|
||||
var flatItems = getFlatNavigableItems();
|
||||
var currentPos = flatItems.findIndex(item => item.tabIndex === currentIndex);
|
||||
var oldIndex = currentIndex;
|
||||
if (currentPos === -1) {
|
||||
currentIndex = flatItems[0]?.tabIndex ?? 0;
|
||||
} else {
|
||||
var nextPos = (currentPos + 1) % flatItems.length;
|
||||
currentIndex = flatItems[nextPos].tabIndex;
|
||||
}
|
||||
autoCollapseIfNeeded(oldIndex, currentIndex);
|
||||
autoExpandForTab(currentIndex);
|
||||
}
|
||||
|
||||
function navigatePrevious() {
|
||||
const currentItemIndex = sidebarItems.findIndex(item => item.tabIndex === currentIndex);
|
||||
const prevIndex = (currentItemIndex - 1 + sidebarItems.length) % sidebarItems.length;
|
||||
currentIndex = sidebarItems[prevIndex].tabIndex;
|
||||
var flatItems = getFlatNavigableItems();
|
||||
var currentPos = flatItems.findIndex(item => item.tabIndex === currentIndex);
|
||||
var oldIndex = currentIndex;
|
||||
if (currentPos === -1) {
|
||||
currentIndex = flatItems[0]?.tabIndex ?? 0;
|
||||
} else {
|
||||
var prevPos = (currentPos - 1 + flatItems.length) % flatItems.length;
|
||||
currentIndex = flatItems[prevPos].tabIndex;
|
||||
}
|
||||
autoCollapseIfNeeded(oldIndex, currentIndex);
|
||||
autoExpandForTab(currentIndex);
|
||||
}
|
||||
|
||||
function getFlatNavigableItems() {
|
||||
var items = [];
|
||||
for (var i = 0; i < categoryStructure.length; i++) {
|
||||
var cat = categoryStructure[i];
|
||||
if (cat.separator || !isCategoryVisible(cat))
|
||||
continue;
|
||||
|
||||
if (cat.tabIndex !== undefined && !cat.children) {
|
||||
items.push(cat);
|
||||
}
|
||||
|
||||
if (cat.children) {
|
||||
for (var j = 0; j < cat.children.length; j++) {
|
||||
var child = cat.children[j];
|
||||
if (isItemVisible(child)) {
|
||||
items.push(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
width: 270
|
||||
@@ -120,17 +350,16 @@ Rectangle {
|
||||
|
||||
Column {
|
||||
id: sidebarColumn
|
||||
|
||||
width: parent.width
|
||||
leftPadding: Theme.spacingS
|
||||
rightPadding: Theme.spacingS
|
||||
bottomPadding: Theme.spacingL
|
||||
topPadding: Theme.spacingM + 2
|
||||
spacing: Theme.spacingXS
|
||||
spacing: 2
|
||||
|
||||
ProfileSection {
|
||||
width: parent.width - parent.leftPadding - parent.rightPadding
|
||||
parentModal: sidebarContainer.parentModal
|
||||
parentModal: root.parentModal
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
@@ -142,55 +371,184 @@ Rectangle {
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.leftPadding - parent.rightPadding
|
||||
height: Theme.spacingL
|
||||
height: Theme.spacingM
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: sidebarRepeater
|
||||
model: root.categoryStructure
|
||||
|
||||
model: sidebarContainer.sidebarItems
|
||||
|
||||
delegate: Rectangle {
|
||||
delegate: Column {
|
||||
id: categoryDelegate
|
||||
required property int index
|
||||
required property var modelData
|
||||
|
||||
property bool isActive: sidebarContainer.currentIndex === modelData.tabIndex
|
||||
|
||||
width: parent.width - parent.leftPadding - parent.rightPadding
|
||||
height: 44
|
||||
visible: root.isCategoryVisible(modelData)
|
||||
spacing: 2
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
visible: categoryDelegate.modelData.separator === true
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width
|
||||
height: Theme.spacingS
|
||||
visible: categoryDelegate.modelData.separator === true
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: categoryRow
|
||||
width: parent.width
|
||||
height: 40
|
||||
radius: Theme.cornerRadius
|
||||
color: isActive ? Theme.primary : tabMouseArea.containsMouse ? Theme.surfaceHover : "transparent"
|
||||
visible: categoryDelegate.modelData.separator !== true
|
||||
color: {
|
||||
var hasTab = categoryDelegate.modelData.tabIndex !== undefined && !categoryDelegate.modelData.children;
|
||||
var isActive = hasTab && root.currentIndex === categoryDelegate.modelData.tabIndex;
|
||||
if (isActive)
|
||||
return Theme.primary;
|
||||
if (categoryMouseArea.containsMouse)
|
||||
return Theme.surfaceHover;
|
||||
return "transparent";
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: modelData.icon || ""
|
||||
name: categoryDelegate.modelData.icon || ""
|
||||
size: Theme.iconSize - 2
|
||||
color: parent.parent.isActive ? Theme.primaryText : Theme.surfaceText
|
||||
color: {
|
||||
var hasTab = categoryDelegate.modelData.tabIndex !== undefined && !categoryDelegate.modelData.children;
|
||||
var isActive = hasTab && root.currentIndex === categoryDelegate.modelData.tabIndex;
|
||||
return isActive ? Theme.primaryText : Theme.surfaceText;
|
||||
}
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: modelData.text || ""
|
||||
text: categoryDelegate.modelData.text || ""
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: parent.parent.isActive ? Theme.primaryText : Theme.surfaceText
|
||||
font.weight: parent.parent.isActive ? Font.Medium : Font.Normal
|
||||
font.weight: {
|
||||
var hasTab = categoryDelegate.modelData.tabIndex !== undefined && !categoryDelegate.modelData.children;
|
||||
var isActive = hasTab && root.currentIndex === categoryDelegate.modelData.tabIndex;
|
||||
var childActive = root.isChildActive(categoryDelegate.modelData);
|
||||
return (isActive || childActive) ? Font.Medium : Font.Normal;
|
||||
}
|
||||
color: {
|
||||
var hasTab = categoryDelegate.modelData.tabIndex !== undefined && !categoryDelegate.modelData.children;
|
||||
var isActive = hasTab && root.currentIndex === categoryDelegate.modelData.tabIndex;
|
||||
return isActive ? Theme.primaryText : Theme.surfaceText;
|
||||
}
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - (categoryDelegate.modelData.children ? expandIcon.width + Theme.spacingS : 0)
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
id: expandIcon
|
||||
name: root.isCategoryExpanded(categoryDelegate.modelData.id) ? "expand_less" : "expand_more"
|
||||
size: Theme.iconSize - 4
|
||||
color: Theme.surfaceVariantText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: categoryDelegate.modelData.children !== undefined && categoryDelegate.modelData.children.length > 0
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: categoryMouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: {
|
||||
if (categoryDelegate.modelData.children) {
|
||||
root.toggleCategory(categoryDelegate.modelData.id);
|
||||
} else if (categoryDelegate.modelData.tabIndex !== undefined) {
|
||||
root.currentIndex = categoryDelegate.modelData.tabIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: Theme.shortDuration
|
||||
easing.type: Theme.standardEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
id: childrenColumn
|
||||
width: parent.width
|
||||
spacing: 2
|
||||
visible: categoryDelegate.modelData.children !== undefined && root.isCategoryExpanded(categoryDelegate.modelData.id)
|
||||
clip: true
|
||||
|
||||
Repeater {
|
||||
model: categoryDelegate.modelData.children || []
|
||||
|
||||
delegate: Rectangle {
|
||||
id: childDelegate
|
||||
required property int index
|
||||
required property var modelData
|
||||
|
||||
width: childrenColumn.width
|
||||
height: 36
|
||||
radius: Theme.cornerRadius
|
||||
visible: root.isItemVisible(modelData)
|
||||
color: {
|
||||
var isActive = root.currentIndex === modelData.tabIndex;
|
||||
if (isActive)
|
||||
return Theme.primary;
|
||||
if (childMouseArea.containsMouse)
|
||||
return Theme.surfaceHover;
|
||||
return "transparent";
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingL + Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: childDelegate.modelData.icon || ""
|
||||
size: Theme.iconSize - 4
|
||||
color: {
|
||||
var isActive = root.currentIndex === childDelegate.modelData.tabIndex;
|
||||
return isActive ? Theme.primaryText : Theme.surfaceVariantText;
|
||||
}
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: childDelegate.modelData.text || ""
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
font.weight: root.currentIndex === childDelegate.modelData.tabIndex ? Font.Medium : Font.Normal
|
||||
color: {
|
||||
var isActive = root.currentIndex === childDelegate.modelData.tabIndex;
|
||||
return isActive ? Theme.primaryText : Theme.surfaceText;
|
||||
}
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: tabMouseArea
|
||||
|
||||
id: childMouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: () => {
|
||||
sidebarContainer.currentIndex = modelData.tabIndex;
|
||||
onClicked: {
|
||||
root.currentIndex = childDelegate.modelData.tabIndex;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,3 +563,6 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,13 +84,23 @@ Scope {
|
||||
WlSessionLockSurface {
|
||||
id: lockSurface
|
||||
|
||||
color: "transparent"
|
||||
property string currentScreenName: screen?.name ?? ""
|
||||
property bool isActiveScreen: {
|
||||
if (Quickshell.screens.length <= 1)
|
||||
return true;
|
||||
if (SettingsData.lockScreenActiveMonitor === "all")
|
||||
return true;
|
||||
return currentScreenName === SettingsData.lockScreenActiveMonitor;
|
||||
}
|
||||
|
||||
color: isActiveScreen ? "transparent" : SettingsData.lockScreenInactiveColor
|
||||
|
||||
LockSurface {
|
||||
anchors.fill: parent
|
||||
visible: lockSurface.isActiveScreen
|
||||
lock: sessionLock
|
||||
sharedPasswordBuffer: root.sharedPasswordBuffer
|
||||
screenName: lockSurface.screen?.name ?? ""
|
||||
screenName: lockSurface.currentScreenName
|
||||
isLocked: shouldLock
|
||||
onUnlockRequested: {
|
||||
root.unlock();
|
||||
|
||||
@@ -3,6 +3,7 @@ import QtQuick.Effects
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: aboutTab
|
||||
@@ -122,13 +123,17 @@ Item {
|
||||
|
||||
Row {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingL
|
||||
spacing: parent.width < 350 ? Theme.spacingM : Theme.spacingL
|
||||
|
||||
property bool compactLogo: parent.width < 400
|
||||
property bool hideLogo: parent.width < 280
|
||||
|
||||
Image {
|
||||
id: logoImage
|
||||
|
||||
visible: !parent.hideLogo
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 120
|
||||
width: parent.compactLogo ? 80 : 120
|
||||
height: width * (569.94629 / 506.50931)
|
||||
fillMode: Image.PreserveAspectFit
|
||||
smooth: true
|
||||
@@ -148,7 +153,7 @@ Item {
|
||||
Text {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: "DANK LINUX"
|
||||
font.pixelSize: 48
|
||||
font.pixelSize: parent.compactLogo ? 32 : 48
|
||||
font.weight: Font.Bold
|
||||
font.family: interFont.name
|
||||
color: Theme.surfaceText
|
||||
@@ -163,7 +168,8 @@ Item {
|
||||
|
||||
StyledText {
|
||||
text: {
|
||||
if (!SystemUpdateService.shellVersion) return "dms";
|
||||
if (!SystemUpdateService.shellVersion)
|
||||
return "dms";
|
||||
|
||||
let version = SystemUpdateService.shellVersion;
|
||||
|
||||
@@ -194,6 +200,82 @@ Item {
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
Row {
|
||||
id: resourceButtonsRow
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingS
|
||||
|
||||
property bool compactMode: parent.width < 400
|
||||
|
||||
DankButton {
|
||||
id: docsButton
|
||||
text: resourceButtonsRow.compactMode ? "" : I18n.tr("Docs")
|
||||
iconName: "menu_book"
|
||||
iconSize: 18
|
||||
backgroundColor: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.08)
|
||||
textColor: Theme.surfaceText
|
||||
onClicked: Qt.openUrlExternally("https://danklinux.com/docs")
|
||||
onHoveredChanged: {
|
||||
if (hovered)
|
||||
resourceTooltip.show(resourceButtonsRow.compactMode ? I18n.tr("Docs") + " - danklinux.com/docs" : "danklinux.com/docs", docsButton, 0, 0, "bottom");
|
||||
else
|
||||
resourceTooltip.hide();
|
||||
}
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: pluginsButton
|
||||
text: resourceButtonsRow.compactMode ? "" : I18n.tr("Plugins")
|
||||
iconName: "extension"
|
||||
iconSize: 18
|
||||
backgroundColor: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.08)
|
||||
textColor: Theme.surfaceText
|
||||
onClicked: Qt.openUrlExternally("https://plugins.danklinux.com")
|
||||
onHoveredChanged: {
|
||||
if (hovered)
|
||||
resourceTooltip.show(resourceButtonsRow.compactMode ? I18n.tr("Plugins") + " - plugins.danklinux.com" : "plugins.danklinux.com", pluginsButton, 0, 0, "bottom");
|
||||
else
|
||||
resourceTooltip.hide();
|
||||
}
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: githubButton
|
||||
text: resourceButtonsRow.compactMode ? "" : I18n.tr("GitHub")
|
||||
iconName: "code"
|
||||
iconSize: 18
|
||||
backgroundColor: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.08)
|
||||
textColor: Theme.surfaceText
|
||||
onClicked: Qt.openUrlExternally("https://github.com/AvengeMedia/DankMaterialShell")
|
||||
onHoveredChanged: {
|
||||
if (hovered)
|
||||
resourceTooltip.show(resourceButtonsRow.compactMode ? "GitHub - AvengeMedia/DankMaterialShell" : "github.com/AvengeMedia/DankMaterialShell", githubButton, 0, 0, "bottom");
|
||||
else
|
||||
resourceTooltip.hide();
|
||||
}
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: kofiButton
|
||||
text: resourceButtonsRow.compactMode ? "" : I18n.tr("Ko-fi")
|
||||
iconName: "favorite"
|
||||
iconSize: 18
|
||||
backgroundColor: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.12)
|
||||
textColor: Theme.primary
|
||||
onClicked: Qt.openUrlExternally("https://ko-fi.com/danklinux")
|
||||
onHoveredChanged: {
|
||||
if (hovered)
|
||||
resourceTooltip.show(resourceButtonsRow.compactMode ? I18n.tr("Ko-fi") + " - ko-fi.com/danklinux" : "ko-fi.com/danklinux", kofiButton, 0, 0, "bottom");
|
||||
else
|
||||
resourceTooltip.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankTooltipV2 {
|
||||
id: resourceTooltip
|
||||
}
|
||||
|
||||
Item {
|
||||
id: communityIcons
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
@@ -459,166 +541,6 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: techSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: techSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "code"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Resources")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Grid {
|
||||
width: parent.width
|
||||
columns: 2
|
||||
columnSpacing: Theme.spacingL
|
||||
rowSpacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Website:")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: `<a href="https://danklinux.com" style="text-decoration:none; color:${Theme.primary};">danklinux.com</a>`
|
||||
linkColor: Theme.primary
|
||||
textFormat: Text.RichText
|
||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
acceptedButtons: Qt.NoButton
|
||||
propagateComposedEvents: true
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Plugins:")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: `<a href="https://plugins.danklinux.com" style="text-decoration:none; color:${Theme.primary};">plugins.danklinux.com</a>`
|
||||
linkColor: Theme.primary
|
||||
textFormat: Text.RichText
|
||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
acceptedButtons: Qt.NoButton
|
||||
propagateComposedEvents: true
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Github:")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 4
|
||||
|
||||
StyledText {
|
||||
text: `<a href="https://github.com/AvengeMedia/DankMaterialShell" style="text-decoration:none; color:${Theme.primary};">DankMaterialShell</a>`
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
linkColor: Theme.primary
|
||||
textFormat: Text.RichText
|
||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
acceptedButtons: Qt.NoButton
|
||||
propagateComposedEvents: true
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("- Support Us With a Star ⭐")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("System Monitoring:")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 4
|
||||
|
||||
StyledText {
|
||||
text: `<a href="https://github.com/AvengeMedia/dgop" style="text-decoration:none; color:${Theme.primary};">dgop</a>`
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
linkColor: Theme.primary
|
||||
textFormat: Text.RichText
|
||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
acceptedButtons: Qt.NoButton
|
||||
propagateComposedEvents: true
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("- Stateless System Monitoring")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
visible: DMSService.isConnected
|
||||
width: parent.width
|
||||
@@ -772,57 +694,20 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
// Support Section
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: supportSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Row {
|
||||
id: supportSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
spacing: Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
DankIcon {
|
||||
name: "volunteer_activism"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Support Development")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: `<a href="https://github.com/AvengeMedia/DankMaterialShell/blob/master/LICENSE" style="text-decoration:none; color:${Theme.surfaceVariantText};">MIT License</a>`
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
textFormat: Text.RichText
|
||||
wrapMode: Text.NoWrap
|
||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.spacing - kofiButton.width - supportSection.children[0].width
|
||||
height: 1
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: kofiButton
|
||||
text: I18n.tr("Donate on Ko-fi")
|
||||
iconName: "favorite"
|
||||
iconSize: 20
|
||||
backgroundColor: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.08)
|
||||
textColor: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onClicked: Qt.openUrlExternally("https://ko-fi.com/danklinux")
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
acceptedButtons: Qt.NoButton
|
||||
propagateComposedEvents: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -120,12 +120,10 @@ Item {
|
||||
function onBindSaved(key) {
|
||||
keybindsTab._savedScrollY = flickable.contentY;
|
||||
keybindsTab._preserveScroll = true;
|
||||
keybindsTab._editingKey = key;
|
||||
}
|
||||
function onBindRemoved(key) {
|
||||
keybindsTab._savedScrollY = flickable.contentY;
|
||||
keybindsTab._preserveScroll = true;
|
||||
keybindsTab._editingKey = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -597,15 +595,50 @@ Item {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
bindData: modelData
|
||||
isExpanded: keybindsTab.expandedKey === modelData.action
|
||||
restoreKey: isExpanded ? keybindsTab._editingKey : ""
|
||||
panelWindow: keybindsTab.parentModal
|
||||
onToggleExpand: keybindsTab.toggleExpanded(modelData.action)
|
||||
onSaveBind: (originalKey, newData) => {
|
||||
KeybindsService.saveBind(originalKey, newData);
|
||||
keybindsTab._editingKey = newData.key;
|
||||
keybindsTab.expandedKey = modelData.action;
|
||||
}
|
||||
onRemoveBind: key => KeybindsService.removeBind(key)
|
||||
onRestoreKeyConsumed: keybindsTab._editingKey = ""
|
||||
onRemoveBind: key => {
|
||||
const remainingKey = bindItem.keys.find(k => k.key !== key)?.key ?? "";
|
||||
KeybindsService.removeBind(key);
|
||||
keybindsTab._editingKey = remainingKey;
|
||||
}
|
||||
onIsExpandedChanged: {
|
||||
if (!isExpanded || !keybindsTab._editingKey)
|
||||
return;
|
||||
const keyExists = keys.some(k => k.key === keybindsTab._editingKey);
|
||||
if (keyExists) {
|
||||
restoreKey = keybindsTab._editingKey;
|
||||
keybindsTab._editingKey = "";
|
||||
}
|
||||
}
|
||||
|
||||
onKeysChanged: {
|
||||
if (!isExpanded || !keybindsTab._editingKey)
|
||||
return;
|
||||
const keyExists = keys.some(k => k.key === keybindsTab._editingKey);
|
||||
if (keyExists) {
|
||||
restoreKey = keybindsTab._editingKey;
|
||||
keybindsTab._editingKey = "";
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: keybindsTab
|
||||
function on_EditingKeyChanged() {
|
||||
if (!bindItem.isExpanded || !keybindsTab._editingKey)
|
||||
return;
|
||||
const keyExists = bindItem.keys.some(k => k.key === keybindsTab._editingKey);
|
||||
if (keyExists) {
|
||||
bindItem.restoreKey = keybindsTab._editingKey;
|
||||
keybindsTab._editingKey = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,10 @@ import qs.Common
|
||||
import qs.Modals.FileBrowser
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: recentAppsTab
|
||||
id: root
|
||||
|
||||
FileBrowserModal {
|
||||
id: logoFileBrowser
|
||||
@@ -13,9 +14,7 @@ Item {
|
||||
browserIcon: "image"
|
||||
browserType: "generic"
|
||||
filterExtensions: ["*.svg", "*.png", "*.jpg", "*.jpeg", "*.webp"]
|
||||
onFileSelected: path => {
|
||||
SettingsData.set("launcherLogoCustomPath", path.replace("file://", ""));
|
||||
}
|
||||
onFileSelected: path => SettingsData.set("launcherLogoCustomPath", path.replace("file://", ""))
|
||||
}
|
||||
|
||||
DankFlickable {
|
||||
@@ -30,40 +29,10 @@ Item {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
StyledRect {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
height: launcherLogoSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: launcherLogoSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "apps"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Launcher Button Logo")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
iconName: "apps"
|
||||
title: I18n.tr("Launcher Button Logo")
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
@@ -75,7 +44,7 @@ Item {
|
||||
|
||||
Item {
|
||||
width: parent.width
|
||||
height: logoModeGroup.height
|
||||
height: logoModeGroup.implicitHeight
|
||||
|
||||
DankButtonGroup {
|
||||
id: logoModeGroup
|
||||
@@ -112,16 +81,22 @@ Item {
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
if (index === 0) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
SettingsData.set("launcherLogoMode", "apps");
|
||||
} else if (index === 1) {
|
||||
break;
|
||||
case 1:
|
||||
SettingsData.set("launcherLogoMode", "os");
|
||||
} else if (index === 2) {
|
||||
break;
|
||||
case 2:
|
||||
SettingsData.set("launcherLogoMode", "dank");
|
||||
} else if (index === 3) {
|
||||
break;
|
||||
case 3:
|
||||
SettingsData.set("launcherLogoMode", "compositor");
|
||||
} else if (index === 4) {
|
||||
break;
|
||||
case 4:
|
||||
SettingsData.set("launcherLogoMode", "custom");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,16 +105,8 @@ Item {
|
||||
Row {
|
||||
width: parent.width
|
||||
visible: SettingsData.launcherLogoMode === "custom"
|
||||
opacity: visible ? 1 : 0
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width - selectButton.width - Theme.spacingM
|
||||
height: 36
|
||||
@@ -173,14 +140,6 @@ Item {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingL
|
||||
visible: SettingsData.launcherLogoMode !== "apps"
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
@@ -214,18 +173,23 @@ Item {
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
if (index === 0) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
SettingsData.set("launcherLogoColorOverride", "");
|
||||
} else if (index === 1) {
|
||||
break;
|
||||
case 1:
|
||||
SettingsData.set("launcherLogoColorOverride", "primary");
|
||||
} else if (index === 2) {
|
||||
break;
|
||||
case 2:
|
||||
SettingsData.set("launcherLogoColorOverride", "surface");
|
||||
} else if (index === 3) {
|
||||
break;
|
||||
case 3:
|
||||
const currentOverride = SettingsData.launcherLogoColorOverride;
|
||||
const isPreset = currentOverride === "" || currentOverride === "primary" || currentOverride === "surface";
|
||||
if (isPreset) {
|
||||
SettingsData.set("launcherLogoColorOverride", "#ffffff");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -253,7 +217,8 @@ Item {
|
||||
anchors.fill: parent
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: {
|
||||
if (PopoutService.colorPickerModal) {
|
||||
if (!PopoutService.colorPickerModal)
|
||||
return;
|
||||
PopoutService.colorPickerModal.selectedColor = SettingsData.launcherLogoColorOverride;
|
||||
PopoutService.colorPickerModal.pickerTitle = I18n.tr("Choose Launcher Logo Color");
|
||||
PopoutService.colorPickerModal.onColorSelectedCallback = function (selectedColor) {
|
||||
@@ -265,184 +230,57 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
StyledText {
|
||||
SettingsSliderRow {
|
||||
text: I18n.tr("Size Offset")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
DankSlider {
|
||||
width: 100
|
||||
height: 20
|
||||
minimum: -12
|
||||
maximum: 12
|
||||
value: SettingsData.launcherLogoSizeOffset
|
||||
unit: ""
|
||||
showValue: true
|
||||
wheelEnabled: false
|
||||
thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
onSliderValueChanged: newValue => {
|
||||
SettingsData.set("launcherLogoSizeOffset", newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
defaultValue: 0
|
||||
onSliderValueChanged: newValue => SettingsData.set("launcherLogoSizeOffset", newValue)
|
||||
}
|
||||
|
||||
Item {
|
||||
Column {
|
||||
width: parent.width
|
||||
height: customControlsFlow.height
|
||||
spacing: Theme.spacingM
|
||||
visible: {
|
||||
const override = SettingsData.launcherLogoColorOverride;
|
||||
return override !== "" && override !== "primary" && override !== "surface";
|
||||
}
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
|
||||
Flow {
|
||||
id: customControlsFlow
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingS
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
SettingsSliderRow {
|
||||
text: I18n.tr("Brightness")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
DankSlider {
|
||||
width: 100
|
||||
height: 20
|
||||
minimum: 0
|
||||
maximum: 100
|
||||
value: Math.round(SettingsData.launcherLogoBrightness * 100)
|
||||
unit: "%"
|
||||
showValue: true
|
||||
wheelEnabled: false
|
||||
thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
onSliderValueChanged: newValue => {
|
||||
SettingsData.set("launcherLogoBrightness", newValue / 100);
|
||||
}
|
||||
}
|
||||
defaultValue: 100
|
||||
onSliderValueChanged: newValue => SettingsData.set("launcherLogoBrightness", newValue / 100)
|
||||
}
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
SettingsSliderRow {
|
||||
text: I18n.tr("Contrast")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
DankSlider {
|
||||
width: 100
|
||||
height: 20
|
||||
minimum: 0
|
||||
maximum: 200
|
||||
value: Math.round(SettingsData.launcherLogoContrast * 100)
|
||||
unit: "%"
|
||||
showValue: true
|
||||
wheelEnabled: false
|
||||
thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
onSliderValueChanged: newValue => {
|
||||
SettingsData.set("launcherLogoContrast", newValue / 100);
|
||||
}
|
||||
}
|
||||
defaultValue: 100
|
||||
onSliderValueChanged: newValue => SettingsData.set("launcherLogoContrast", newValue / 100)
|
||||
}
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Invert on mode change")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: 32
|
||||
height: 18
|
||||
checked: SettingsData.launcherLogoColorInvertOnMode
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
onToggled: checked => {
|
||||
SettingsData.set("launcherLogoColorInvertOnMode", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("launcherLogoColorInvertOnMode", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
height: launchPrefixSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: launchPrefixSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "terminal"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Launch Prefix")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
iconName: "terminal"
|
||||
title: I18n.tr("Launch Prefix")
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
@@ -456,278 +294,58 @@ Item {
|
||||
width: parent.width
|
||||
text: SettingsData.launchPrefix
|
||||
placeholderText: I18n.tr("Enter launch prefix (e.g., 'uwsm-app')")
|
||||
onTextEdited: {
|
||||
SettingsData.set("launchPrefix", text);
|
||||
}
|
||||
}
|
||||
onTextEdited: SettingsData.set("launchPrefix", text)
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
height: sortingSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
iconName: "sort_by_alpha"
|
||||
title: I18n.tr("Sorting & Layout")
|
||||
|
||||
Column {
|
||||
id: sortingSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "sort_by_alpha"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Sort Alphabetically")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.children[0].width - parent.children[1].width - sortToggle.width - Theme.spacingM * 3
|
||||
height: 1
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: sortToggle
|
||||
|
||||
width: 32
|
||||
height: 18
|
||||
description: I18n.tr("When enabled, apps are sorted alphabetically. When disabled, apps are sorted by usage frequency.")
|
||||
checked: SettingsData.sortAppsAlphabetically
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onToggled: checked => {
|
||||
SettingsData.set("sortAppsAlphabetically", checked);
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("sortAppsAlphabetically", checked)
|
||||
}
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("When enabled, apps are sorted alphabetically. When disabled, apps are sorted by usage frequency.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: gridColumnsSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: gridColumnsSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "grid_view"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
SettingsSliderRow {
|
||||
text: I18n.tr("Grid Columns")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("Adjust the number of columns in grid view mode.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankSlider {
|
||||
width: 100
|
||||
height: 20
|
||||
description: I18n.tr("Adjust the number of columns in grid view mode.")
|
||||
minimum: 2
|
||||
maximum: 8
|
||||
value: SettingsData.appLauncherGridColumns
|
||||
unit: ""
|
||||
showValue: true
|
||||
wheelEnabled: false
|
||||
thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
onSliderValueChanged: newValue => {
|
||||
SettingsData.set("appLauncherGridColumns", newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
defaultValue: 5
|
||||
onSliderValueChanged: newValue => SettingsData.set("appLauncherGridColumns", newValue)
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
height: niriOverviewSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
iconName: "open_in_new"
|
||||
title: I18n.tr("Niri Integration")
|
||||
visible: CompositorService.isNiri
|
||||
|
||||
Column {
|
||||
id: niriOverviewSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "open_in_new"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Close Overview on Launch")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.children[0].width - parent.children[1].width - niriOverviewToggle.width - Theme.spacingM * 3
|
||||
height: 1
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: niriOverviewToggle
|
||||
|
||||
width: 32
|
||||
height: 18
|
||||
description: I18n.tr("When enabled, launching an app from the launcher will automatically close the Niri overview if it's open.")
|
||||
checked: SettingsData.spotlightCloseNiriOverview
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onToggled: checked => {
|
||||
SettingsData.set("spotlightCloseNiriOverview", checked);
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("spotlightCloseNiriOverview", checked)
|
||||
}
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("When enabled, launching an app from the launcher will automatically close the Niri overview if it's open.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: niriOverlayEnabledSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
visible: CompositorService.isNiri
|
||||
|
||||
Column {
|
||||
id: niriOverlayEnabledSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "layers"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Enable Overview Overlay")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.children[0].width - parent.children[1].width - niriOverlayToggle.width - Theme.spacingM * 3
|
||||
height: 1
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: niriOverlayToggle
|
||||
|
||||
width: 32
|
||||
height: 18
|
||||
description: I18n.tr("When enabled, shows the launcher overlay when typing in Niri overview mode. Disable this if you prefer to not have the launcher when typing on Niri overview or want to use other launcher in the overview.")
|
||||
checked: SettingsData.niriOverviewOverlayEnabled
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onToggled: checked => {
|
||||
SettingsData.set("niriOverviewOverlayEnabled", checked);
|
||||
}
|
||||
onToggled: checked => SettingsData.set("niriOverviewOverlayEnabled", checked)
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
text: I18n.tr("When enabled, shows the launcher overlay when typing in Niri overview mode. Disable this if you prefer to not have the launcher when typing on Niri overview or want to use other launcher in the overview.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: recentlyUsedSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: recentlyUsedSection
|
||||
iconName: "history"
|
||||
title: I18n.tr("Recently Used Apps")
|
||||
|
||||
property var rankedAppsModel: {
|
||||
var apps = [];
|
||||
@@ -746,43 +364,26 @@ Item {
|
||||
apps.sort(function (a, b) {
|
||||
if (a.usageCount !== b.usageCount)
|
||||
return b.usageCount - a.usageCount;
|
||||
|
||||
return a.name.localeCompare(b.name);
|
||||
});
|
||||
return apps.slice(0, 20);
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "history"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Recently Used Apps")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
width: parent.width - clearAllButton.width - Theme.spacingM
|
||||
text: I18n.tr("Apps are ordered by usage frequency, then last used, then alphabetically.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - parent.children[0].width - parent.children[1].width - clearAllButton.width - Theme.spacingM * 3
|
||||
height: 1
|
||||
}
|
||||
|
||||
DankActionButton {
|
||||
id: clearAllButton
|
||||
|
||||
iconName: "delete_sweep"
|
||||
iconSize: Theme.iconSize - 2
|
||||
iconColor: Theme.error
|
||||
@@ -794,29 +395,19 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("Apps are ordered by usage frequency, then last used, then alphabetically.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
|
||||
Column {
|
||||
id: rankedAppsList
|
||||
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
|
||||
Repeater {
|
||||
model: recentlyUsedSection.rankedAppsModel
|
||||
model: parent.parent.rankedAppsModel
|
||||
|
||||
delegate: Rectangle {
|
||||
width: rankedAppsList.width
|
||||
height: 48
|
||||
radius: Theme.cornerRadius
|
||||
color: Qt.rgba(Theme.surfaceContainer.r, Theme.surfaceContainer.g, Theme.surfaceContainer.b, 0.3)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.1)
|
||||
border.width: 0
|
||||
|
||||
Row {
|
||||
@@ -863,7 +454,6 @@ Item {
|
||||
text: {
|
||||
if (!modelData.lastUsed)
|
||||
return "Never used";
|
||||
|
||||
var date = new Date(modelData.lastUsed);
|
||||
var now = new Date();
|
||||
var diffMs = now - date;
|
||||
@@ -872,16 +462,12 @@ Item {
|
||||
var diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
||||
if (diffMins < 1)
|
||||
return I18n.tr("Last launched just now");
|
||||
|
||||
if (diffMins < 60)
|
||||
return I18n.tr("Last launched %1 minute%2 ago").arg(diffMins).arg(diffMins === 1 ? "" : "s");
|
||||
|
||||
if (diffHours < 24)
|
||||
return I18n.tr("Last launched %1 hour%2 ago").arg(diffHours).arg(diffHours === 1 ? "" : "s");
|
||||
|
||||
if (diffDays < 7)
|
||||
return I18n.tr("Last launched %1 day%2 ago").arg(diffDays).arg(diffDays === 1 ? "" : "s");
|
||||
|
||||
return I18n.tr("Last launched %1").arg(date.toLocaleDateString());
|
||||
}
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
@@ -910,12 +496,11 @@ Item {
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: recentlyUsedSection.rankedAppsModel.length === 0 ? "No apps have been launched yet." : ""
|
||||
text: parent.parent.rankedAppsModel.length === 0 ? "No apps have been launched yet." : ""
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceVariantText
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
visible: recentlyUsedSection.rankedAppsModel.length === 0
|
||||
}
|
||||
visible: parent.parent.rankedAppsModel.length === 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
183
quickshell/Modules/Settings/LockScreenTab.qml
Normal file
183
quickshell/Modules/Settings/LockScreenTab.qml
Normal file
@@ -0,0 +1,183 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "lock"
|
||||
title: I18n.tr("Lock Screen")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Show Power Actions")
|
||||
description: I18n.tr("Show power, restart, and logout buttons on the lock screen")
|
||||
checked: SettingsData.lockScreenShowPowerActions
|
||||
onToggled: checked => SettingsData.set("lockScreenShowPowerActions", checked)
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("loginctl not available - lock integration requires DMS socket connection")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.warning
|
||||
visible: !SessionService.loginctlAvailable
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Enable loginctl lock integration")
|
||||
description: I18n.tr("Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen")
|
||||
checked: SessionService.loginctlAvailable && SettingsData.loginctlLockIntegration
|
||||
enabled: SessionService.loginctlAvailable
|
||||
onToggled: checked => {
|
||||
if (!SessionService.loginctlAvailable)
|
||||
return;
|
||||
SettingsData.set("loginctlLockIntegration", checked);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Lock before suspend")
|
||||
description: I18n.tr("Automatically lock the screen when the system prepares to suspend")
|
||||
checked: SettingsData.lockBeforeSuspend
|
||||
visible: SessionService.loginctlAvailable && SettingsData.loginctlLockIntegration
|
||||
onToggled: checked => SettingsData.set("lockBeforeSuspend", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Enable fingerprint authentication")
|
||||
description: I18n.tr("Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)")
|
||||
checked: SettingsData.enableFprint
|
||||
visible: SettingsData.fprintdAvailable
|
||||
onToggled: checked => SettingsData.set("enableFprint", checked)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "monitor"
|
||||
title: I18n.tr("Lock Screen Display")
|
||||
visible: Quickshell.screens.length > 1
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: lockScreenMonitorDropdown
|
||||
text: I18n.tr("Active Lock Screen Monitor")
|
||||
options: {
|
||||
var opts = [I18n.tr("All Monitors")];
|
||||
var screens = Quickshell.screens;
|
||||
for (var i = 0; i < screens.length; i++) {
|
||||
opts.push(SettingsData.getScreenDisplayName(screens[i]));
|
||||
}
|
||||
return opts;
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.lockScreenActiveMonitor === "all") {
|
||||
currentValue = I18n.tr("All Monitors");
|
||||
return;
|
||||
}
|
||||
var screens = Quickshell.screens;
|
||||
for (var i = 0; i < screens.length; i++) {
|
||||
if (screens[i].name === SettingsData.lockScreenActiveMonitor) {
|
||||
currentValue = SettingsData.getScreenDisplayName(screens[i]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
currentValue = I18n.tr("All Monitors");
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
if (value === I18n.tr("All Monitors")) {
|
||||
SettingsData.set("lockScreenActiveMonitor", "all");
|
||||
return;
|
||||
}
|
||||
var screens = Quickshell.screens;
|
||||
for (var i = 0; i < screens.length; i++) {
|
||||
if (SettingsData.getScreenDisplayName(screens[i]) === value) {
|
||||
SettingsData.set("lockScreenActiveMonitor", screens[i].name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
visible: SettingsData.lockScreenActiveMonitor !== "all"
|
||||
|
||||
Column {
|
||||
width: parent.width - inactiveColorPreview.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Inactive Monitor Color")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Color displayed on monitors without the lock screen")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: inactiveColorPreview
|
||||
width: 48
|
||||
height: 48
|
||||
radius: Theme.cornerRadius
|
||||
color: SettingsData.lockScreenInactiveColor
|
||||
border.color: Theme.outline
|
||||
border.width: 1
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: {
|
||||
if (!PopoutService.colorPickerModal)
|
||||
return;
|
||||
PopoutService.colorPickerModal.selectedColor = SettingsData.lockScreenInactiveColor;
|
||||
PopoutService.colorPickerModal.pickerTitle = I18n.tr("Inactive Monitor Color");
|
||||
PopoutService.colorPickerModal.onColorSelectedCallback = function (selectedColor) {
|
||||
SettingsData.set("lockScreenInactiveColor", selectedColor);
|
||||
};
|
||||
PopoutService.colorPickerModal.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
quickshell/Modules/Settings/MediaPlayerTab.qml
Normal file
42
quickshell/Modules/Settings/MediaPlayerTab.qml
Normal file
@@ -0,0 +1,42 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "music_note"
|
||||
title: I18n.tr("Media Player Settings")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Wave Progress Bars")
|
||||
description: I18n.tr("Use animated wave progress bars for media playback")
|
||||
checked: SettingsData.waveProgressEnabled
|
||||
onToggled: checked => SettingsData.set("waveProgressEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Scroll song title")
|
||||
description: I18n.tr("Scroll title if it doesn't fit in widget")
|
||||
checked: SettingsData.scrollTitleEnabled
|
||||
onToggled: checked => SettingsData.set("scrollTitleEnabled", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
208
quickshell/Modules/Settings/NotificationsTab.qml
Normal file
208
quickshell/Modules/Settings/NotificationsTab.qml
Normal file
@@ -0,0 +1,208 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
readonly property var timeoutOptions: [
|
||||
{
|
||||
text: I18n.tr("Never"),
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
text: I18n.tr("1 second"),
|
||||
value: 1000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("3 seconds"),
|
||||
value: 3000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("5 seconds"),
|
||||
value: 5000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("8 seconds"),
|
||||
value: 8000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("10 seconds"),
|
||||
value: 10000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("15 seconds"),
|
||||
value: 15000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("30 seconds"),
|
||||
value: 30000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("1 minute"),
|
||||
value: 60000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("2 minutes"),
|
||||
value: 120000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("5 minutes"),
|
||||
value: 300000
|
||||
},
|
||||
{
|
||||
text: I18n.tr("10 minutes"),
|
||||
value: 600000
|
||||
}
|
||||
]
|
||||
|
||||
function getTimeoutText(value) {
|
||||
if (value === undefined || value === null || isNaN(value))
|
||||
return I18n.tr("5 seconds");
|
||||
for (let i = 0; i < timeoutOptions.length; i++) {
|
||||
if (timeoutOptions[i].value === value)
|
||||
return timeoutOptions[i].text;
|
||||
}
|
||||
if (value === 0)
|
||||
return I18n.tr("Never");
|
||||
if (value < 1000)
|
||||
return value + "ms";
|
||||
if (value < 60000)
|
||||
return Math.round(value / 1000) + " " + I18n.tr("seconds");
|
||||
return Math.round(value / 60000) + " " + I18n.tr("minutes");
|
||||
}
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "notifications"
|
||||
title: I18n.tr("Notification Popups")
|
||||
|
||||
SettingsDropdownRow {
|
||||
text: I18n.tr("Popup Position")
|
||||
description: I18n.tr("Choose where notification popups appear on screen")
|
||||
currentValue: {
|
||||
if (SettingsData.notificationPopupPosition === -1)
|
||||
return "Top Center";
|
||||
switch (SettingsData.notificationPopupPosition) {
|
||||
case SettingsData.Position.Top:
|
||||
return "Top Right";
|
||||
case SettingsData.Position.Bottom:
|
||||
return "Bottom Left";
|
||||
case SettingsData.Position.Left:
|
||||
return "Top Left";
|
||||
case SettingsData.Position.Right:
|
||||
return "Bottom Right";
|
||||
default:
|
||||
return "Top Right";
|
||||
}
|
||||
}
|
||||
options: ["Top Right", "Top Left", "Top Center", "Bottom Right", "Bottom Left"]
|
||||
onValueChanged: value => {
|
||||
switch (value) {
|
||||
case "Top Right":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Top);
|
||||
break;
|
||||
case "Top Left":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Left);
|
||||
break;
|
||||
case "Top Center":
|
||||
SettingsData.set("notificationPopupPosition", -1);
|
||||
break;
|
||||
case "Bottom Right":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Right);
|
||||
break;
|
||||
case "Bottom Left":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Bottom);
|
||||
break;
|
||||
}
|
||||
SettingsData.sendTestNotifications();
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Notification Overlay")
|
||||
description: I18n.tr("Display all priorities over fullscreen apps")
|
||||
checked: SettingsData.notificationOverlayEnabled
|
||||
onToggled: checked => SettingsData.set("notificationOverlayEnabled", checked)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "notifications_off"
|
||||
title: I18n.tr("Do Not Disturb")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Enable Do Not Disturb")
|
||||
description: I18n.tr("Suppress notification popups while enabled")
|
||||
checked: SessionData.doNotDisturb
|
||||
onToggled: checked => SessionData.setDoNotDisturb(checked)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "timer"
|
||||
title: I18n.tr("Notification Timeouts")
|
||||
|
||||
SettingsDropdownRow {
|
||||
text: I18n.tr("Low Priority")
|
||||
description: I18n.tr("Timeout for low priority notifications")
|
||||
currentValue: root.getTimeoutText(SettingsData.notificationTimeoutLow)
|
||||
options: root.timeoutOptions.map(opt => opt.text)
|
||||
onValueChanged: value => {
|
||||
for (let i = 0; i < root.timeoutOptions.length; i++) {
|
||||
if (root.timeoutOptions[i].text === value) {
|
||||
SettingsData.set("notificationTimeoutLow", root.timeoutOptions[i].value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
text: I18n.tr("Normal Priority")
|
||||
description: I18n.tr("Timeout for normal priority notifications")
|
||||
currentValue: root.getTimeoutText(SettingsData.notificationTimeoutNormal)
|
||||
options: root.timeoutOptions.map(opt => opt.text)
|
||||
onValueChanged: value => {
|
||||
for (let i = 0; i < root.timeoutOptions.length; i++) {
|
||||
if (root.timeoutOptions[i].text === value) {
|
||||
SettingsData.set("notificationTimeoutNormal", root.timeoutOptions[i].value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
text: I18n.tr("Critical Priority")
|
||||
description: I18n.tr("Timeout for critical priority notifications")
|
||||
currentValue: root.getTimeoutText(SettingsData.notificationTimeoutCritical)
|
||||
options: root.timeoutOptions.map(opt => opt.text)
|
||||
onValueChanged: value => {
|
||||
for (let i = 0; i < root.timeoutOptions.length; i++) {
|
||||
if (root.timeoutOptions[i].text === value) {
|
||||
SettingsData.set("notificationTimeoutCritical", root.timeoutOptions[i].value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
147
quickshell/Modules/Settings/OSDTab.qml
Normal file
147
quickshell/Modules/Settings/OSDTab.qml
Normal file
@@ -0,0 +1,147 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "tune"
|
||||
title: I18n.tr("On-screen Displays")
|
||||
|
||||
SettingsDropdownRow {
|
||||
text: I18n.tr("OSD Position")
|
||||
description: I18n.tr("Choose where on-screen displays appear on screen")
|
||||
currentValue: {
|
||||
switch (SettingsData.osdPosition) {
|
||||
case SettingsData.Position.Top:
|
||||
return "Top Right";
|
||||
case SettingsData.Position.Left:
|
||||
return "Top Left";
|
||||
case SettingsData.Position.TopCenter:
|
||||
return "Top Center";
|
||||
case SettingsData.Position.Right:
|
||||
return "Bottom Right";
|
||||
case SettingsData.Position.Bottom:
|
||||
return "Bottom Left";
|
||||
case SettingsData.Position.BottomCenter:
|
||||
return "Bottom Center";
|
||||
case SettingsData.Position.LeftCenter:
|
||||
return "Left Center";
|
||||
case SettingsData.Position.RightCenter:
|
||||
return "Right Center";
|
||||
default:
|
||||
return "Bottom Center";
|
||||
}
|
||||
}
|
||||
options: ["Top Right", "Top Left", "Top Center", "Bottom Right", "Bottom Left", "Bottom Center", "Left Center", "Right Center"]
|
||||
onValueChanged: value => {
|
||||
switch (value) {
|
||||
case "Top Right":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Top);
|
||||
break;
|
||||
case "Top Left":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Left);
|
||||
break;
|
||||
case "Top Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.TopCenter);
|
||||
break;
|
||||
case "Bottom Right":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Right);
|
||||
break;
|
||||
case "Bottom Left":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Bottom);
|
||||
break;
|
||||
case "Bottom Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.BottomCenter);
|
||||
break;
|
||||
case "Left Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.LeftCenter);
|
||||
break;
|
||||
case "Right Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.RightCenter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Always Show Percentage")
|
||||
description: I18n.tr("Display volume and brightness percentage values in OSD popups")
|
||||
checked: SettingsData.osdAlwaysShowValue
|
||||
onToggled: checked => SettingsData.set("osdAlwaysShowValue", checked)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Volume")
|
||||
description: I18n.tr("Show on-screen display when volume changes")
|
||||
checked: SettingsData.osdVolumeEnabled
|
||||
onToggled: checked => SettingsData.set("osdVolumeEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Media Volume")
|
||||
description: I18n.tr("Show on-screen display when media player volume changes")
|
||||
checked: SettingsData.osdMediaVolumeEnabled
|
||||
onToggled: checked => SettingsData.set("osdMediaVolumeEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Brightness")
|
||||
description: I18n.tr("Show on-screen display when brightness changes")
|
||||
checked: SettingsData.osdBrightnessEnabled
|
||||
onToggled: checked => SettingsData.set("osdBrightnessEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Idle Inhibitor")
|
||||
description: I18n.tr("Show on-screen display when idle inhibitor state changes")
|
||||
checked: SettingsData.osdIdleInhibitorEnabled
|
||||
onToggled: checked => SettingsData.set("osdIdleInhibitorEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Microphone Mute")
|
||||
description: I18n.tr("Show on-screen display when microphone is muted/unmuted")
|
||||
checked: SettingsData.osdMicMuteEnabled
|
||||
onToggled: checked => SettingsData.set("osdMicMuteEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Caps Lock")
|
||||
description: I18n.tr("Show on-screen display when caps lock state changes")
|
||||
checked: SettingsData.osdCapsLockEnabled
|
||||
onToggled: checked => SettingsData.set("osdCapsLockEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Power Profile")
|
||||
description: I18n.tr("Show on-screen display when power profile changes")
|
||||
checked: SettingsData.osdPowerProfileEnabled
|
||||
onToggled: checked => SettingsData.set("osdPowerProfileEnabled", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
459
quickshell/Modules/Settings/PowerSleepTab.qml
Normal file
459
quickshell/Modules/Settings/PowerSleepTab.qml
Normal file
@@ -0,0 +1,459 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
readonly property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"]
|
||||
readonly property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800]
|
||||
|
||||
function getTimeoutIndex(timeout) {
|
||||
var idx = timeoutValues.indexOf(timeout);
|
||||
return idx >= 0 ? idx : 0;
|
||||
}
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "schedule"
|
||||
title: I18n.tr("Idle Settings")
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Power source")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: BatteryService.batteryAvailable
|
||||
}
|
||||
|
||||
Item {
|
||||
width: Theme.spacingS
|
||||
height: 1
|
||||
visible: BatteryService.batteryAvailable
|
||||
}
|
||||
|
||||
DankButtonGroup {
|
||||
id: powerCategory
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: BatteryService.batteryAvailable
|
||||
model: ["AC Power", "Battery"]
|
||||
currentIndex: 0
|
||||
selectionMode: "single"
|
||||
checkEnabled: false
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Prevent idle for media")
|
||||
description: I18n.tr("Inhibit idle timeout when audio or video is playing")
|
||||
checked: SettingsData.preventIdleForMedia
|
||||
visible: IdleService.idleMonitorAvailable
|
||||
onToggled: checked => SettingsData.set("preventIdleForMedia", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Fade to lock screen")
|
||||
description: I18n.tr("Gradually fade the screen before locking with a configurable grace period")
|
||||
checked: SettingsData.fadeToLockEnabled
|
||||
onToggled: checked => SettingsData.set("fadeToLockEnabled", checked)
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: fadeGracePeriodDropdown
|
||||
property var periodOptions: ["1 second", "2 seconds", "3 seconds", "4 seconds", "5 seconds", "10 seconds", "15 seconds", "20 seconds", "30 seconds"]
|
||||
property var periodValues: [1, 2, 3, 4, 5, 10, 15, 20, 30]
|
||||
|
||||
text: I18n.tr("Fade grace period")
|
||||
options: periodOptions
|
||||
visible: SettingsData.fadeToLockEnabled
|
||||
enabled: SettingsData.fadeToLockEnabled
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentPeriod = SettingsData.fadeToLockGracePeriod;
|
||||
const index = periodValues.indexOf(currentPeriod);
|
||||
currentValue = index >= 0 ? periodOptions[index] : "5 seconds";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = periodOptions.indexOf(value);
|
||||
if (index < 0)
|
||||
return;
|
||||
SettingsData.set("fadeToLockGracePeriod", periodValues[index]);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: lockDropdown
|
||||
text: I18n.tr("Automatically lock after")
|
||||
options: root.timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acLockTimeout : SettingsData.batteryLockTimeout;
|
||||
lockDropdown.currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acLockTimeout : SettingsData.batteryLockTimeout;
|
||||
currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = root.timeoutOptions.indexOf(value);
|
||||
if (index < 0)
|
||||
return;
|
||||
const timeout = root.timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acLockTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batteryLockTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: monitorDropdown
|
||||
text: I18n.tr("Turn off monitors after")
|
||||
options: root.timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acMonitorTimeout : SettingsData.batteryMonitorTimeout;
|
||||
monitorDropdown.currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acMonitorTimeout : SettingsData.batteryMonitorTimeout;
|
||||
currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = root.timeoutOptions.indexOf(value);
|
||||
if (index < 0)
|
||||
return;
|
||||
const timeout = root.timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acMonitorTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batteryMonitorTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: suspendDropdown
|
||||
text: I18n.tr("Suspend system after")
|
||||
options: root.timeoutOptions
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acSuspendTimeout : SettingsData.batterySuspendTimeout;
|
||||
suspendDropdown.currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentTimeout = powerCategory.currentIndex === 0 ? SettingsData.acSuspendTimeout : SettingsData.batterySuspendTimeout;
|
||||
currentValue = root.timeoutOptions[root.getTimeoutIndex(currentTimeout)];
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = root.timeoutOptions.indexOf(value);
|
||||
if (index < 0)
|
||||
return;
|
||||
const timeout = root.timeoutValues[index];
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acSuspendTimeout", timeout);
|
||||
} else {
|
||||
SettingsData.set("batterySuspendTimeout", timeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
visible: SessionService.hibernateSupported
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Suspend behavior")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: Theme.surfaceText
|
||||
leftPadding: Theme.spacingM
|
||||
}
|
||||
|
||||
DankButtonGroup {
|
||||
id: suspendBehaviorSelector
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
model: ["Suspend", "Hibernate", "Suspend then Hibernate"]
|
||||
selectionMode: "single"
|
||||
checkEnabled: false
|
||||
|
||||
Connections {
|
||||
target: powerCategory
|
||||
function onCurrentIndexChanged() {
|
||||
const behavior = powerCategory.currentIndex === 0 ? SettingsData.acSuspendBehavior : SettingsData.batterySuspendBehavior;
|
||||
suspendBehaviorSelector.currentIndex = behavior;
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
const behavior = powerCategory.currentIndex === 0 ? SettingsData.acSuspendBehavior : SettingsData.batterySuspendBehavior;
|
||||
currentIndex = behavior;
|
||||
}
|
||||
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
if (powerCategory.currentIndex === 0) {
|
||||
SettingsData.set("acSuspendBehavior", index);
|
||||
} else {
|
||||
SettingsData.set("batterySuspendBehavior", index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Idle monitoring not supported - requires newer Quickshell version")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.error
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: !IdleService.idleMonitorAvailable
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "tune"
|
||||
title: I18n.tr("Power Menu Customization")
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Customize which actions appear in the power menu")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
width: parent.width
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Use Grid Layout")
|
||||
description: I18n.tr("Display power menu actions in a grid instead of a list")
|
||||
checked: SettingsData.powerMenuGridLayout
|
||||
onToggled: checked => SettingsData.set("powerMenuGridLayout", checked)
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
id: defaultActionDropdown
|
||||
text: I18n.tr("Default selected action")
|
||||
options: ["Reboot", "Log Out", "Power Off", "Lock", "Suspend", "Restart DMS", "Hibernate"]
|
||||
property var actionValues: ["reboot", "logout", "poweroff", "lock", "suspend", "restart", "hibernate"]
|
||||
|
||||
Component.onCompleted: {
|
||||
const currentAction = SettingsData.powerMenuDefaultAction || "logout";
|
||||
const index = actionValues.indexOf(currentAction);
|
||||
currentValue = index >= 0 ? options[index] : "Log Out";
|
||||
}
|
||||
|
||||
onValueChanged: value => {
|
||||
const index = options.indexOf(value);
|
||||
if (index < 0)
|
||||
return;
|
||||
SettingsData.set("powerMenuDefaultAction", actionValues[index]);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
|
||||
Repeater {
|
||||
model: [
|
||||
{
|
||||
key: "reboot",
|
||||
label: I18n.tr("Show Reboot")
|
||||
},
|
||||
{
|
||||
key: "logout",
|
||||
label: I18n.tr("Show Log Out")
|
||||
},
|
||||
{
|
||||
key: "poweroff",
|
||||
label: I18n.tr("Show Power Off")
|
||||
},
|
||||
{
|
||||
key: "lock",
|
||||
label: I18n.tr("Show Lock")
|
||||
},
|
||||
{
|
||||
key: "suspend",
|
||||
label: I18n.tr("Show Suspend")
|
||||
},
|
||||
{
|
||||
key: "restart",
|
||||
label: I18n.tr("Show Restart DMS"),
|
||||
desc: I18n.tr("Restart the DankMaterialShell")
|
||||
},
|
||||
{
|
||||
key: "hibernate",
|
||||
label: I18n.tr("Show Hibernate"),
|
||||
desc: I18n.tr("Only visible if hibernate is supported by your system"),
|
||||
hibernate: true
|
||||
}
|
||||
]
|
||||
|
||||
SettingsToggleRow {
|
||||
required property var modelData
|
||||
text: modelData.label
|
||||
description: modelData.desc || ""
|
||||
visible: !modelData.hibernate || SessionService.hibernateSupported
|
||||
checked: SettingsData.powerMenuActions.includes(modelData.key)
|
||||
onToggled: checked => {
|
||||
let actions = [...SettingsData.powerMenuActions];
|
||||
if (checked && !actions.includes(modelData.key)) {
|
||||
actions.push(modelData.key);
|
||||
} else if (!checked) {
|
||||
actions = actions.filter(a => a !== modelData.key);
|
||||
}
|
||||
SettingsData.set("powerMenuActions", actions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "check_circle"
|
||||
title: I18n.tr("Power Action Confirmation")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Hold to Confirm Power Actions")
|
||||
description: I18n.tr("Require holding button/key to confirm power off, restart, suspend, hibernate and logout")
|
||||
checked: SettingsData.powerActionConfirm
|
||||
onToggled: checked => SettingsData.set("powerActionConfirm", checked)
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
text: I18n.tr("Hold Duration")
|
||||
description: I18n.tr("How long to hold the button to confirm the action")
|
||||
minimum: 1
|
||||
maximum: 10
|
||||
unit: "s"
|
||||
visible: SettingsData.powerActionConfirm
|
||||
value: SettingsData.powerActionHoldDuration
|
||||
onSliderValueChanged: newValue => SettingsData.set("powerActionHoldDuration", newValue)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "developer_mode"
|
||||
title: I18n.tr("Custom Power Actions")
|
||||
|
||||
Repeater {
|
||||
model: [
|
||||
{
|
||||
key: "customPowerActionLock",
|
||||
label: I18n.tr("Custom Lock Command"),
|
||||
placeholder: "/usr/bin/myLock.sh"
|
||||
},
|
||||
{
|
||||
key: "customPowerActionLogout",
|
||||
label: I18n.tr("Custom Logout Command"),
|
||||
placeholder: "/usr/bin/myLogout.sh"
|
||||
},
|
||||
{
|
||||
key: "customPowerActionSuspend",
|
||||
label: I18n.tr("Custom Suspend Command"),
|
||||
placeholder: "/usr/bin/mySuspend.sh"
|
||||
},
|
||||
{
|
||||
key: "customPowerActionHibernate",
|
||||
label: I18n.tr("Custom Hibernate Command"),
|
||||
placeholder: "/usr/bin/myHibernate.sh"
|
||||
},
|
||||
{
|
||||
key: "customPowerActionReboot",
|
||||
label: I18n.tr("Custom Reboot Command"),
|
||||
placeholder: "/usr/bin/myReboot.sh"
|
||||
},
|
||||
{
|
||||
key: "customPowerActionPowerOff",
|
||||
label: I18n.tr("Custom Power Off Command"),
|
||||
placeholder: "/usr/bin/myPowerOff.sh"
|
||||
}
|
||||
]
|
||||
|
||||
Column {
|
||||
required property var modelData
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: modelData.label
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: modelData.placeholder
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
var val = SettingsData[modelData.key];
|
||||
if (val)
|
||||
text = val;
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set(modelData.key, text.trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
35
quickshell/Modules/Settings/RunningAppsTab.qml
Normal file
35
quickshell/Modules/Settings/RunningAppsTab.qml
Normal file
@@ -0,0 +1,35 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "apps"
|
||||
title: I18n.tr("Running Apps Settings")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Running Apps Only In Current Workspace")
|
||||
description: I18n.tr("Show only apps running in current workspace")
|
||||
checked: SettingsData.runningAppsCurrentWorkspace
|
||||
onToggled: checked => SettingsData.set("runningAppsCurrentWorkspace", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
|
||||
Column {
|
||||
id: root
|
||||
|
||||
property string title: ""
|
||||
property string iconName: ""
|
||||
property alias content: contentLoader.sourceComponent
|
||||
property bool expanded: false
|
||||
property bool collapsible: true
|
||||
property bool lazyLoad: true
|
||||
|
||||
width: parent.width
|
||||
spacing: expanded ? Theme.spacingM : 0
|
||||
Component.onCompleted: {
|
||||
if (!collapsible)
|
||||
expanded = true;
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
width: parent.width
|
||||
height: headerRow.height
|
||||
enabled: collapsible
|
||||
hoverEnabled: collapsible
|
||||
onClicked: {
|
||||
if (collapsible)
|
||||
expanded = !expanded;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: parent.containsMouse ? Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.08) : "transparent"
|
||||
radius: Theme.radiusS
|
||||
}
|
||||
|
||||
Row {
|
||||
id: headerRow
|
||||
|
||||
width: parent.width
|
||||
spacing: Theme.spacingS
|
||||
topPadding: Theme.spacingS
|
||||
bottomPadding: Theme.spacingS
|
||||
|
||||
DankIcon {
|
||||
name: root.collapsible ? (root.expanded ? "expand_less" : "expand_more") : root.iconName
|
||||
size: Theme.iconSize - 2
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
Behavior on rotation {
|
||||
NumberAnimation {
|
||||
duration: Appearance.anim.durations.fast
|
||||
easing.type: Easing.BezierSpline
|
||||
easing.bezierCurve: Appearance.anim.curves.standard
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
name: root.iconName
|
||||
size: Theme.iconSize - 4
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: root.collapsible
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: root.title
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.12)
|
||||
visible: expanded || !collapsible
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: contentLoader
|
||||
|
||||
width: parent.width
|
||||
active: lazyLoad ? expanded || !collapsible : true
|
||||
visible: expanded || !collapsible
|
||||
asynchronous: true
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Appearance.anim.durations.normal
|
||||
easing.type: Easing.BezierSpline
|
||||
easing.bezierCurve: Appearance.anim.curves.standard
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
156
quickshell/Modules/Settings/SoundsTab.qml
Normal file
156
quickshell/Modules/Settings/SoundsTab.qml
Normal file
@@ -0,0 +1,156 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "audio", "notification", "volume"]
|
||||
title: I18n.tr("System Sounds")
|
||||
iconName: SettingsData.soundsEnabled ? "volume_up" : "volume_off"
|
||||
visible: AudioService.soundsAvailable
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "enable", "system"]
|
||||
settingKey: "soundsEnabled"
|
||||
text: I18n.tr("Enable System Sounds")
|
||||
description: I18n.tr("Play sounds for system events")
|
||||
checked: SettingsData.soundsEnabled
|
||||
onToggled: checked => SettingsData.set("soundsEnabled", checked)
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
visible: SettingsData.soundsEnabled
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.2
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "theme", "system"]
|
||||
settingKey: "useSystemSoundTheme"
|
||||
visible: AudioService.gsettingsAvailable
|
||||
text: I18n.tr("Use System Theme")
|
||||
description: I18n.tr("Use sound theme from system settings")
|
||||
checked: SettingsData.useSystemSoundTheme
|
||||
onToggled: checked => SettingsData.set("useSystemSoundTheme", checked)
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "theme", "select"]
|
||||
settingKey: "soundTheme"
|
||||
visible: SettingsData.useSystemSoundTheme && AudioService.availableSoundThemes.length > 0
|
||||
enabled: SettingsData.useSystemSoundTheme && AudioService.availableSoundThemes.length > 0
|
||||
text: I18n.tr("Sound Theme")
|
||||
description: I18n.tr("Select system sound theme")
|
||||
options: AudioService.availableSoundThemes
|
||||
currentValue: {
|
||||
const theme = AudioService.currentSoundTheme;
|
||||
if (theme && AudioService.availableSoundThemes.includes(theme))
|
||||
return theme;
|
||||
return AudioService.availableSoundThemes.length > 0 ? AudioService.availableSoundThemes[0] : "";
|
||||
}
|
||||
onValueChanged: value => {
|
||||
if (value && value !== AudioService.currentSoundTheme)
|
||||
AudioService.setSoundTheme(value);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.2
|
||||
visible: AudioService.gsettingsAvailable
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "notification", "new"]
|
||||
settingKey: "soundNewNotification"
|
||||
text: I18n.tr("New Notification")
|
||||
description: I18n.tr("Play sound when new notification arrives")
|
||||
checked: SettingsData.soundNewNotification
|
||||
onToggled: checked => SettingsData.set("soundNewNotification", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "volume", "changed"]
|
||||
settingKey: "soundVolumeChanged"
|
||||
text: I18n.tr("Volume Changed")
|
||||
description: I18n.tr("Play sound when volume is adjusted")
|
||||
checked: SettingsData.soundVolumeChanged
|
||||
onToggled: checked => SettingsData.set("soundVolumeChanged", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "sounds"
|
||||
tags: ["sound", "power", "plugged"]
|
||||
settingKey: "soundPluggedIn"
|
||||
visible: BatteryService.batteryAvailable
|
||||
text: I18n.tr("Plugged In")
|
||||
description: I18n.tr("Play sound when power cable is connected")
|
||||
checked: SettingsData.soundPluggedIn
|
||||
onToggled: checked => SettingsData.set("soundPluggedIn", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: notAvailableText.implicitHeight + Theme.spacingM * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Qt.rgba(Theme.warning.r, Theme.warning.g, Theme.warning.b, 0.12)
|
||||
visible: !AudioService.soundsAvailable
|
||||
|
||||
Row {
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "info"
|
||||
size: Theme.iconSizeSmall
|
||||
color: Theme.warning
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
id: notAvailableText
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
text: I18n.tr("System sounds are not available. Install canberra-gtk-play for sound support.")
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width - Theme.iconSizeSmall - Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
133
quickshell/Modules/Settings/SystemUpdaterTab.qml
Normal file
133
quickshell/Modules/Settings/SystemUpdaterTab.qml
Normal file
@@ -0,0 +1,133 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "refresh"
|
||||
title: I18n.tr("System Updater")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Use Custom Command")
|
||||
description: I18n.tr("Use custom command for update your system")
|
||||
checked: SettingsData.updaterUseCustomCommand
|
||||
onToggled: checked => {
|
||||
if (!checked) {
|
||||
updaterCustomCommand.text = "";
|
||||
updaterTerminalCustomClass.text = "";
|
||||
SettingsData.set("updaterCustomCommand", "");
|
||||
SettingsData.set("updaterTerminalAdditionalParams", "");
|
||||
}
|
||||
SettingsData.set("updaterUseCustomCommand", checked);
|
||||
}
|
||||
}
|
||||
|
||||
FocusScope {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
height: customCommandColumn.implicitHeight
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
|
||||
Column {
|
||||
id: customCommandColumn
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("System update custom command")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: updaterCustomCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "myPkgMngr --sysupdate"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.updaterCustomCommand) {
|
||||
text = SettingsData.updaterCustomCommand;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: SettingsData.set("updaterCustomCommand", text.trim())
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: mouse => {
|
||||
updaterCustomCommand.forceActiveFocus();
|
||||
mouse.accepted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FocusScope {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
height: terminalParamsColumn.implicitHeight
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
|
||||
Column {
|
||||
id: terminalParamsColumn
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Terminal custom additional parameters")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: updaterTerminalCustomClass
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "-T udpClass"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.updaterTerminalAdditionalParams) {
|
||||
text = SettingsData.updaterTerminalAdditionalParams;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: SettingsData.set("updaterTerminalAdditionalParams", text.trim())
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: mouse => {
|
||||
updaterTerminalCustomClass.forceActiveFocus();
|
||||
mouse.accepted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ import QtQuick.Layouts
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
@@ -21,169 +22,49 @@ Item {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: timeSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
SettingsCard {
|
||||
tab: "time"
|
||||
tags: ["time", "clock", "format", "24hour"]
|
||||
title: I18n.tr("Time Format")
|
||||
iconName: "schedule"
|
||||
|
||||
Column {
|
||||
id: timeSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "schedule"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - toggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
tab: "time"
|
||||
tags: ["time", "24hour", "format"]
|
||||
settingKey: "use24HourClock"
|
||||
text: I18n.tr("24-Hour Format")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Use 24-hour time format instead of 12-hour AM/PM")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: toggle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
description: I18n.tr("Use 24-hour time format instead of 12-hour AM/PM")
|
||||
checked: SettingsData.use24HourClock
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("use24HourClock", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("use24HourClock", checked)
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: timeSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: secondsSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "schedule"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - toggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Show seconds")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Clock show seconds")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: toggleSec
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
SettingsToggleRow {
|
||||
tab: "time"
|
||||
tags: ["time", "seconds", "clock"]
|
||||
settingKey: "showSeconds"
|
||||
text: I18n.tr("Show Seconds")
|
||||
description: I18n.tr("Display seconds in the clock")
|
||||
checked: SettingsData.showSeconds
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("showSeconds", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: dateSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: dateSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "calendar_today"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Date Format")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onToggled: checked => SettingsData.set("showSeconds", checked)
|
||||
}
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
height: 50
|
||||
SettingsCard {
|
||||
tab: "time"
|
||||
tags: ["date", "format", "calendar"]
|
||||
title: I18n.tr("Date Format")
|
||||
iconName: "calendar_today"
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "time"
|
||||
tags: ["date", "format", "topbar"]
|
||||
settingKey: "clockDateFormat"
|
||||
text: I18n.tr("Top Bar Format")
|
||||
description: "Preview: " + (SettingsData.clockDateFormat ? new Date().toLocaleDateString(Qt.locale(), SettingsData.clockDateFormat) : new Date().toLocaleDateString(Qt.locale(), "ddd d"))
|
||||
options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."]
|
||||
currentValue: {
|
||||
if (!SettingsData.clockDateFormat || SettingsData.clockDateFormat.length === 0) {
|
||||
if (!SettingsData.clockDateFormat || SettingsData.clockDateFormat.length === 0)
|
||||
return "System Default";
|
||||
}
|
||||
const presets = [
|
||||
{
|
||||
"format": "ddd d",
|
||||
@@ -218,12 +99,9 @@ Item {
|
||||
"label": "Full Day & Month"
|
||||
}
|
||||
];
|
||||
const match = presets.find(p => {
|
||||
return p.format === SettingsData.clockDateFormat;
|
||||
});
|
||||
const match = presets.find(p => p.format === SettingsData.clockDateFormat);
|
||||
return match ? match.label : I18n.tr("Custom: ") + SettingsData.clockDateFormat;
|
||||
}
|
||||
options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."]
|
||||
onValueChanged: value => {
|
||||
const formatMap = {
|
||||
"System Default": "",
|
||||
@@ -245,14 +123,36 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
DankDropdown {
|
||||
height: 50
|
||||
DankTextField {
|
||||
id: customFormatInput
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
visible: false
|
||||
placeholderText: I18n.tr("Enter custom top bar format (e.g., ddd MMM d)")
|
||||
text: SettingsData.clockDateFormat
|
||||
onTextChanged: {
|
||||
if (visible && text)
|
||||
SettingsData.set("clockDateFormat", text);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "time"
|
||||
tags: ["date", "format", "lock", "screen"]
|
||||
settingKey: "lockDateFormat"
|
||||
text: I18n.tr("Lock Screen Format")
|
||||
description: "Preview: " + (SettingsData.lockDateFormat ? new Date().toLocaleDateString(Qt.locale(), SettingsData.lockDateFormat) : new Date().toLocaleDateString(Qt.locale(), Locale.LongFormat))
|
||||
options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."]
|
||||
currentValue: {
|
||||
if (!SettingsData.lockDateFormat || SettingsData.lockDateFormat.length === 0) {
|
||||
if (!SettingsData.lockDateFormat || SettingsData.lockDateFormat.length === 0)
|
||||
return "System Default";
|
||||
}
|
||||
const presets = [
|
||||
{
|
||||
"format": "ddd d",
|
||||
@@ -287,12 +187,9 @@ Item {
|
||||
"label": "Full Day & Month"
|
||||
}
|
||||
];
|
||||
const match = presets.find(p => {
|
||||
return p.format === SettingsData.lockDateFormat;
|
||||
});
|
||||
const match = presets.find(p => p.format === SettingsData.lockDateFormat);
|
||||
return match ? match.label : I18n.tr("Custom: ") + SettingsData.lockDateFormat;
|
||||
}
|
||||
options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."]
|
||||
onValueChanged: value => {
|
||||
const formatMap = {
|
||||
"System Default": "",
|
||||
@@ -314,23 +211,10 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customFormatInput
|
||||
|
||||
width: parent.width
|
||||
visible: false
|
||||
placeholderText: I18n.tr("Enter custom top bar format (e.g., ddd MMM d)")
|
||||
text: SettingsData.clockDateFormat
|
||||
onTextChanged: {
|
||||
if (visible && text)
|
||||
SettingsData.set("clockDateFormat", text);
|
||||
}
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: customLockFormatInput
|
||||
|
||||
width: parent.width
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
visible: false
|
||||
placeholderText: I18n.tr("Enter custom lock screen format (e.g., dddd, MMMM d)")
|
||||
text: SettingsData.lockDateFormat
|
||||
@@ -342,15 +226,20 @@ Item {
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
height: formatHelp.implicitHeight + Theme.spacingM * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.1)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: formatHelp
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
@@ -375,25 +264,21 @@ Item {
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• dd - Day (01-31)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• ddd - Day name (Mon)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• dddd - Day name (Monday)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• M - Month (1-12)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
@@ -410,25 +295,21 @@ Item {
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• MMM - Month (Jan)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• MMMM - Month (January)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• yy - Year (24)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("• yyyy - Year (2024)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
@@ -439,209 +320,84 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: enableWeatherSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
SettingsCard {
|
||||
tab: "time"
|
||||
tags: ["weather", "enable", "forecast"]
|
||||
title: I18n.tr("Weather")
|
||||
iconName: "cloud"
|
||||
|
||||
Column {
|
||||
id: enableWeatherSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "cloud"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - enableToggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
tab: "time"
|
||||
tags: ["weather", "enable"]
|
||||
settingKey: "weatherEnabled"
|
||||
text: I18n.tr("Enable Weather")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Show weather information in top bar and control center")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: enableToggle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
description: I18n.tr("Show weather information in top bar and control center")
|
||||
checked: SettingsData.weatherEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("weatherEnabled", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("weatherEnabled", checked)
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
Column {
|
||||
width: parent.width
|
||||
height: temperatureSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
spacing: 0
|
||||
visible: SettingsData.weatherEnabled
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Column {
|
||||
id: temperatureSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "thermostat"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - temperatureToggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
tab: "time"
|
||||
tags: ["weather", "imperial", "fahrenheit", "units"]
|
||||
settingKey: "useFahrenheit"
|
||||
text: I18n.tr("Use Imperial Units")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Use Imperial units (°F, mph, inHg) instead of Metric (°C, km/h, hPa)")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: temperatureToggle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
description: I18n.tr("Use Imperial units (°F, mph, inHg) instead of Metric (°C, km/h, hPa)")
|
||||
checked: SettingsData.useFahrenheit
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("useFahrenheit", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("useFahrenheit", checked)
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: locationSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
visible: SettingsData.weatherEnabled
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Column {
|
||||
id: locationSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "location_on"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - autoLocationToggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
SettingsToggleRow {
|
||||
tab: "time"
|
||||
tags: ["weather", "location", "auto", "gps"]
|
||||
settingKey: "useAutoLocation"
|
||||
text: I18n.tr("Auto Location")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Automatically determine your location using your IP address")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: autoLocationToggle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
description: I18n.tr("Automatically determine your location using your IP address")
|
||||
checked: SettingsData.useAutoLocation
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("useAutoLocation", checked);
|
||||
}
|
||||
}
|
||||
onToggled: checked => SettingsData.set("useAutoLocation", checked)
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
spacing: Theme.spacingM
|
||||
visible: !SettingsData.useAutoLocation
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.2
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width
|
||||
height: locationContent.height
|
||||
|
||||
Column {
|
||||
id: locationContent
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Custom Location")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
@@ -676,23 +432,21 @@ Item {
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.weatherCoordinates) {
|
||||
const coords = SettingsData.weatherCoordinates.split(',');
|
||||
if (coords.length > 0) {
|
||||
if (coords.length > 0)
|
||||
text = coords[0].trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onWeatherCoordinatesChanged() {
|
||||
if (SettingsData.weatherCoordinates) {
|
||||
const coords = SettingsData.weatherCoordinates.split(',');
|
||||
if (coords.length > 0) {
|
||||
if (coords.length > 0)
|
||||
latitudeInput.text = coords[0].trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
if (text && longitudeInput.text) {
|
||||
@@ -728,23 +482,21 @@ Item {
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.weatherCoordinates) {
|
||||
const coords = SettingsData.weatherCoordinates.split(',');
|
||||
if (coords.length > 1) {
|
||||
if (coords.length > 1)
|
||||
text = coords[1].trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onWeatherCoordinatesChanged() {
|
||||
if (SettingsData.weatherCoordinates) {
|
||||
const coords = SettingsData.weatherCoordinates.split(',');
|
||||
if (coords.length > 1) {
|
||||
if (coords.length > 1)
|
||||
longitudeInput.text = coords[1].trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
if (text && latitudeInput.text) {
|
||||
@@ -776,7 +528,6 @@ Item {
|
||||
keyNavigationBacktab: longitudeInput
|
||||
onLocationSelected: (displayName, coordinates) => {
|
||||
SettingsData.setWeatherLocation(displayName, coordinates);
|
||||
|
||||
const coords = coordinates.split(',');
|
||||
if (coords.length >= 2) {
|
||||
latitudeInput.text = coords[0].trim();
|
||||
@@ -787,51 +538,16 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: weatherDisplaySection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
SettingsCard {
|
||||
tab: "time"
|
||||
tags: ["weather", "current", "display"]
|
||||
title: I18n.tr("Current Weather")
|
||||
iconName: "visibility"
|
||||
visible: SettingsData.weatherEnabled
|
||||
opacity: visible ? 1 : 0
|
||||
|
||||
Column {
|
||||
id: weatherDisplaySection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "visibility"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Current Weather")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
@@ -960,10 +676,9 @@ Item {
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: {
|
||||
if (WeatherService.weather.available) {
|
||||
if (WeatherService.weather.available)
|
||||
SettingsData.set("useFahrenheit", !SettingsData.useFahrenheit);
|
||||
}
|
||||
}
|
||||
enabled: WeatherService.weather.available
|
||||
}
|
||||
}
|
||||
@@ -1065,7 +780,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "device_thermostat"
|
||||
@@ -1077,14 +791,12 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Feels Like")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: (SettingsData.useFahrenheit ? (WeatherService.weather.feelsLikeF || WeatherService.weather.tempF) : (WeatherService.weather.feelsLike || WeatherService.weather.temp)) + "°"
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
@@ -1112,7 +824,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "humidity_low"
|
||||
@@ -1124,14 +835,12 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Humidity")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: WeatherService.weather.humidity ? WeatherService.weather.humidity + "%" : "--"
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
@@ -1159,7 +868,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "air"
|
||||
@@ -1171,14 +879,12 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Wind")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: {
|
||||
if (!WeatherService.weather.wind)
|
||||
@@ -1186,10 +892,8 @@ Item {
|
||||
const windKmh = parseFloat(WeatherService.weather.wind);
|
||||
if (isNaN(windKmh))
|
||||
return WeatherService.weather.wind;
|
||||
if (SettingsData.useFahrenheit) {
|
||||
const windMph = Math.round(windKmh * 0.621371);
|
||||
return windMph + " mph";
|
||||
}
|
||||
if (SettingsData.useFahrenheit)
|
||||
return Math.round(windKmh * 0.621371) + " mph";
|
||||
return WeatherService.weather.wind;
|
||||
}
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
@@ -1217,7 +921,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "speed"
|
||||
@@ -1229,24 +932,19 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Pressure")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: {
|
||||
if (!WeatherService.weather.pressure)
|
||||
return "--";
|
||||
const pressureHpa = WeatherService.weather.pressure;
|
||||
if (SettingsData.useFahrenheit) {
|
||||
const pressureInHg = (pressureHpa * 0.02953).toFixed(2);
|
||||
return pressureInHg + " inHg";
|
||||
}
|
||||
return pressureHpa + " hPa";
|
||||
if (SettingsData.useFahrenheit)
|
||||
return (WeatherService.weather.pressure * 0.02953).toFixed(2) + " inHg";
|
||||
return WeatherService.weather.pressure + " hPa";
|
||||
}
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
color: Theme.surfaceText
|
||||
@@ -1273,7 +971,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "rainy"
|
||||
@@ -1285,14 +982,12 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Rain Chance")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: WeatherService.weather.precipitationProbability ? WeatherService.weather.precipitationProbability + "%" : "0%"
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
@@ -1320,7 +1015,6 @@ Item {
|
||||
radius: 16
|
||||
color: Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.1)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
DankIcon {
|
||||
anchors.centerIn: parent
|
||||
name: "wb_sunny"
|
||||
@@ -1332,14 +1026,12 @@ Item {
|
||||
Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: 2
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Visibility")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Good")
|
||||
font.pixelSize: Theme.fontSizeSmall + 1
|
||||
@@ -1353,14 +1045,6 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
285
quickshell/Modules/Settings/TypographyMotionTab.qml
Normal file
285
quickshell/Modules/Settings/TypographyMotionTab.qml
Normal file
@@ -0,0 +1,285 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property var cachedFontFamilies: []
|
||||
property var cachedMonoFamilies: []
|
||||
property bool fontsEnumerated: false
|
||||
|
||||
function enumerateFonts() {
|
||||
var fonts = [];
|
||||
var availableFonts = Qt.fontFamilies();
|
||||
|
||||
for (var i = 0; i < availableFonts.length; i++) {
|
||||
var fontName = availableFonts[i];
|
||||
if (fontName.startsWith("."))
|
||||
continue;
|
||||
fonts.push(fontName);
|
||||
}
|
||||
fonts.sort();
|
||||
fonts.unshift("Default");
|
||||
cachedFontFamilies = fonts;
|
||||
|
||||
var monoFonts = [];
|
||||
for (var j = 0; j < availableFonts.length; j++) {
|
||||
var fontName2 = availableFonts[j];
|
||||
if (fontName2.startsWith("."))
|
||||
continue;
|
||||
var lowerName = fontName2.toLowerCase();
|
||||
if (lowerName.includes("mono") || lowerName.includes("code") || lowerName.includes("console") || lowerName.includes("terminal") || lowerName.includes("courier") || lowerName.includes("jetbrains") || lowerName.includes("fira") || lowerName.includes("hack") || lowerName.includes("source code") || lowerName.includes("cascadia")) {
|
||||
monoFonts.push(fontName2);
|
||||
}
|
||||
}
|
||||
monoFonts.sort();
|
||||
monoFonts.unshift("Default");
|
||||
cachedMonoFamilies = monoFonts;
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: fontEnumerationTimer
|
||||
interval: 50
|
||||
running: false
|
||||
onTriggered: {
|
||||
if (fontsEnumerated)
|
||||
return;
|
||||
enumerateFonts();
|
||||
fontsEnumerated = true;
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
fontEnumerationTimer.start();
|
||||
}
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
tab: "typography"
|
||||
tags: ["font", "family", "text", "typography"]
|
||||
title: I18n.tr("Typography")
|
||||
iconName: "text_fields"
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "typography"
|
||||
tags: ["font", "family", "normal", "text"]
|
||||
settingKey: "fontFamily"
|
||||
text: I18n.tr("Normal Font")
|
||||
description: I18n.tr("Select the font family for UI text")
|
||||
options: root.fontsEnumerated ? root.cachedFontFamilies : ["Default"]
|
||||
currentValue: SettingsData.fontFamily === Theme.defaultFontFamily ? "Default" : (SettingsData.fontFamily || "Default")
|
||||
enableFuzzySearch: true
|
||||
popupWidthOffset: 100
|
||||
maxPopupHeight: 400
|
||||
onValueChanged: value => {
|
||||
if (value === "Default")
|
||||
SettingsData.set("fontFamily", Theme.defaultFontFamily);
|
||||
else
|
||||
SettingsData.set("fontFamily", value);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "typography"
|
||||
tags: ["font", "monospace", "code", "terminal"]
|
||||
settingKey: "monoFontFamily"
|
||||
text: I18n.tr("Monospace Font")
|
||||
description: I18n.tr("Select monospace font for process list and technical displays")
|
||||
options: root.fontsEnumerated ? root.cachedMonoFamilies : ["Default"]
|
||||
currentValue: SettingsData.monoFontFamily === SettingsData.defaultMonoFontFamily ? "Default" : (SettingsData.monoFontFamily || "Default")
|
||||
enableFuzzySearch: true
|
||||
popupWidthOffset: 100
|
||||
maxPopupHeight: 400
|
||||
onValueChanged: value => {
|
||||
if (value === "Default")
|
||||
SettingsData.set("monoFontFamily", SettingsData.defaultMonoFontFamily);
|
||||
else
|
||||
SettingsData.set("monoFontFamily", value);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "typography"
|
||||
tags: ["font", "weight", "bold", "light"]
|
||||
settingKey: "fontWeight"
|
||||
text: I18n.tr("Font Weight")
|
||||
description: I18n.tr("Select font weight for UI text")
|
||||
options: ["Thin", "Extra Light", "Light", "Regular", "Medium", "Demi Bold", "Bold", "Extra Bold", "Black"]
|
||||
currentValue: {
|
||||
switch (SettingsData.fontWeight) {
|
||||
case Font.Thin:
|
||||
return "Thin";
|
||||
case Font.ExtraLight:
|
||||
return "Extra Light";
|
||||
case Font.Light:
|
||||
return "Light";
|
||||
case Font.Normal:
|
||||
return "Regular";
|
||||
case Font.Medium:
|
||||
return "Medium";
|
||||
case Font.DemiBold:
|
||||
return "Demi Bold";
|
||||
case Font.Bold:
|
||||
return "Bold";
|
||||
case Font.ExtraBold:
|
||||
return "Extra Bold";
|
||||
case Font.Black:
|
||||
return "Black";
|
||||
default:
|
||||
return "Regular";
|
||||
}
|
||||
}
|
||||
onValueChanged: value => {
|
||||
var weight;
|
||||
switch (value) {
|
||||
case "Thin":
|
||||
weight = Font.Thin;
|
||||
break;
|
||||
case "Extra Light":
|
||||
weight = Font.ExtraLight;
|
||||
break;
|
||||
case "Light":
|
||||
weight = Font.Light;
|
||||
break;
|
||||
case "Regular":
|
||||
weight = Font.Normal;
|
||||
break;
|
||||
case "Medium":
|
||||
weight = Font.Medium;
|
||||
break;
|
||||
case "Demi Bold":
|
||||
weight = Font.DemiBold;
|
||||
break;
|
||||
case "Bold":
|
||||
weight = Font.Bold;
|
||||
break;
|
||||
case "Extra Bold":
|
||||
weight = Font.ExtraBold;
|
||||
break;
|
||||
case "Black":
|
||||
weight = Font.Black;
|
||||
break;
|
||||
default:
|
||||
weight = Font.Normal;
|
||||
break;
|
||||
}
|
||||
SettingsData.set("fontWeight", weight);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tab: "typography"
|
||||
tags: ["font", "scale", "size", "zoom"]
|
||||
settingKey: "fontScale"
|
||||
text: I18n.tr("Font Scale")
|
||||
description: I18n.tr("Scale all font sizes throughout the shell")
|
||||
minimum: 75
|
||||
maximum: 150
|
||||
value: Math.round(SettingsData.fontScale * 100)
|
||||
unit: "%"
|
||||
defaultValue: 100
|
||||
onSliderValueChanged: newValue => SettingsData.set("fontScale", newValue / 100)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
tab: "typography"
|
||||
tags: ["animation", "speed", "motion", "duration"]
|
||||
title: I18n.tr("Animation Speed")
|
||||
iconName: "animation"
|
||||
|
||||
Item {
|
||||
width: parent.width
|
||||
height: animationSpeedGroup.implicitHeight
|
||||
clip: true
|
||||
|
||||
DankButtonGroup {
|
||||
id: animationSpeedGroup
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
buttonPadding: parent.width < 480 ? Theme.spacingS : Theme.spacingL
|
||||
minButtonWidth: parent.width < 480 ? 44 : 64
|
||||
textSize: parent.width < 480 ? Theme.fontSizeSmall : Theme.fontSizeMedium
|
||||
model: [I18n.tr("None"), I18n.tr("Short"), I18n.tr("Medium"), I18n.tr("Long"), I18n.tr("Custom")]
|
||||
selectionMode: "single"
|
||||
currentIndex: SettingsData.animationSpeed
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
SettingsData.set("animationSpeed", index);
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onAnimationSpeedChanged() {
|
||||
animationSpeedGroup.currentIndex = SettingsData.animationSpeed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: Theme.outline
|
||||
opacity: 0.15
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
id: durationSlider
|
||||
tab: "typography"
|
||||
tags: ["animation", "duration", "custom", "speed"]
|
||||
settingKey: "customAnimationDuration"
|
||||
text: I18n.tr("Custom Duration")
|
||||
description: I18n.tr("Fine-tune animation timing in milliseconds")
|
||||
minimum: 0
|
||||
maximum: 750
|
||||
value: Theme.currentAnimationBaseDuration
|
||||
unit: "ms"
|
||||
defaultValue: 200
|
||||
onSliderValueChanged: newValue => {
|
||||
SettingsData.set("animationSpeed", SettingsData.AnimationSpeed.Custom);
|
||||
SettingsData.set("customAnimationDuration", newValue);
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onAnimationSpeedChanged() {
|
||||
if (SettingsData.animationSpeed === SettingsData.AnimationSpeed.Custom)
|
||||
return;
|
||||
durationSlider.value = Theme.currentAnimationBaseDuration;
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Theme
|
||||
function onCurrentAnimationBaseDurationChanged() {
|
||||
if (SettingsData.animationSpeed === SettingsData.AnimationSpeed.Custom)
|
||||
return;
|
||||
durationSlider.value = Theme.currentAnimationBaseDuration;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1282
quickshell/Modules/Settings/WallpaperTab.qml
Normal file
1282
quickshell/Modules/Settings/WallpaperTab.qml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,873 +0,0 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
|
||||
Item {
|
||||
id: widgetTweaksTab
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: workspaceSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: workspaceSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "view_module"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Workspace Settings")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Workspace Index Numbers")
|
||||
description: I18n.tr("Show workspace index numbers in the top bar workspace switcher")
|
||||
checked: SettingsData.showWorkspaceIndex
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("showWorkspaceIndex", checked);
|
||||
}
|
||||
}
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Workspace Padding")
|
||||
description: I18n.tr("Always show a minimum of 3 workspaces, even if fewer are available")
|
||||
checked: SettingsData.showWorkspacePadding
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("showWorkspacePadding", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Workspace Apps")
|
||||
description: I18n.tr("Display application icons in workspace indicators")
|
||||
checked: SettingsData.showWorkspaceApps
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("showWorkspaceApps", checked);
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
width: parent.width - Theme.spacingL
|
||||
spacing: Theme.spacingL
|
||||
visible: SettingsData.showWorkspaceApps
|
||||
opacity: visible ? 1 : 0
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingL
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Max apps to show")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
width: 100
|
||||
height: 28
|
||||
placeholderText: "#ffffff"
|
||||
text: SettingsData.maxWorkspaceIcons
|
||||
maximumLength: 7
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
topPadding: Theme.spacingXS
|
||||
bottomPadding: Theme.spacingXS
|
||||
onEditingFinished: {
|
||||
SettingsData.set("maxWorkspaceIcons", parseInt(text, 10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Per-Monitor Workspaces")
|
||||
description: I18n.tr("Show only workspaces belonging to each specific monitor.")
|
||||
checked: SettingsData.workspacesPerMonitor
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("workspacesPerMonitor", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show Occupied Workspaces Only")
|
||||
description: I18n.tr("Display only workspaces that contain windows")
|
||||
checked: SettingsData.showOccupiedWorkspacesOnly
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("showOccupiedWorkspacesOnly", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Show All Tags")
|
||||
description: I18n.tr("Show all 9 tags instead of only occupied tags (DWL only)")
|
||||
checked: SettingsData.dwlShowAllTags
|
||||
visible: CompositorService.isDwl
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("dwlShowAllTags", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: mediaSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: mediaSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "music_note"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Media Player Settings")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Wave Progress Bars")
|
||||
description: I18n.tr("Use animated wave progress bars for media playback")
|
||||
checked: SettingsData.waveProgressEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("waveProgressEnabled", checked);
|
||||
}
|
||||
}
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Scroll song title")
|
||||
description: I18n.tr("Scroll title if it doesn't fit in widget")
|
||||
checked: SettingsData.scrollTitleEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("scrollTitleEnabled", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: updaterSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: updaterSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "refresh"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("System Updater")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Use Custom Command")
|
||||
description: I18n.tr("Use custom command for update your system")
|
||||
checked: SettingsData.updaterUseCustomCommand
|
||||
onToggled: checked => {
|
||||
if (!checked) {
|
||||
updaterCustomCommand.text = "";
|
||||
updaterTerminalCustomClass.text = "";
|
||||
SettingsData.set("updaterCustomCommand", "");
|
||||
SettingsData.set("updaterTerminalAdditionalParams", "");
|
||||
}
|
||||
return SettingsData.set("updaterUseCustomCommand", checked);
|
||||
}
|
||||
}
|
||||
|
||||
FocusScope {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
height: customCommandColumn.implicitHeight
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
|
||||
Column {
|
||||
id: customCommandColumn
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("System update custom command")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: updaterCustomCommand
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "myPkgMngr --sysupdate"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.updaterCustomCommand) {
|
||||
text = SettingsData.updaterCustomCommand;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("updaterCustomCommand", text.trim());
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: mouse => {
|
||||
updaterCustomCommand.forceActiveFocus();
|
||||
mouse.accepted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FocusScope {
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
height: terminalParamsColumn.implicitHeight
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
|
||||
Column {
|
||||
id: terminalParamsColumn
|
||||
width: parent.width
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Terminal custom additional parameters")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
id: updaterTerminalCustomClass
|
||||
width: parent.width
|
||||
height: 48
|
||||
placeholderText: "-T udpClass"
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency)
|
||||
normalBorderColor: Theme.outlineMedium
|
||||
focusedBorderColor: Theme.primary
|
||||
|
||||
Component.onCompleted: {
|
||||
if (SettingsData.updaterTerminalAdditionalParams) {
|
||||
text = SettingsData.updaterTerminalAdditionalParams;
|
||||
}
|
||||
}
|
||||
|
||||
onTextEdited: {
|
||||
SettingsData.set("updaterTerminalAdditionalParams", text.trim());
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: mouse => {
|
||||
updaterTerminalCustomClass.forceActiveFocus();
|
||||
mouse.accepted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: runningAppsSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
|
||||
Column {
|
||||
id: runningAppsSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "apps"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Running Apps Settings")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Running Apps Only In Current Workspace")
|
||||
description: I18n.tr("Show only apps running in current workspace")
|
||||
checked: SettingsData.runningAppsCurrentWorkspace
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("runningAppsCurrentWorkspace", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: workspaceIconsSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
visible: SettingsData.hasNamedWorkspaces()
|
||||
|
||||
Column {
|
||||
id: workspaceIconsSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "label"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Named Workspace Icons")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("Configure icons for named workspaces. Icons take priority over numbers when both are enabled.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.outline
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: SettingsData.getNamedWorkspaces()
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: workspaceIconRow.implicitHeight + Theme.spacingM
|
||||
radius: Theme.cornerRadius
|
||||
color: Qt.rgba(Theme.surfaceContainer.r, Theme.surfaceContainer.g, Theme.surfaceContainer.b, 0.5)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.3)
|
||||
border.width: 0
|
||||
|
||||
Row {
|
||||
id: workspaceIconRow
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
StyledText {
|
||||
text: "\"" + modelData + "\""
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 150
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
DankIconPicker {
|
||||
id: iconPicker
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
Component.onCompleted: {
|
||||
var iconData = SettingsData.getWorkspaceNameIcon(modelData);
|
||||
if (iconData) {
|
||||
setIcon(iconData.value, iconData.type);
|
||||
}
|
||||
}
|
||||
|
||||
onIconSelected: (iconName, iconType) => {
|
||||
SettingsData.setWorkspaceNameIcon(modelData, {
|
||||
"type": iconType,
|
||||
"value": iconName
|
||||
});
|
||||
setIcon(iconName, iconType);
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onWorkspaceIconsUpdated() {
|
||||
var iconData = SettingsData.getWorkspaceNameIcon(modelData);
|
||||
if (iconData) {
|
||||
iconPicker.setIcon(iconData.value, iconData.type);
|
||||
} else {
|
||||
iconPicker.setIcon("", "icon");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: 28
|
||||
height: 28
|
||||
radius: Theme.cornerRadius
|
||||
color: clearMouseArea.containsMouse ? Theme.errorHover : Theme.surfaceContainer
|
||||
border.color: clearMouseArea.containsMouse ? Theme.error : Theme.outline
|
||||
border.width: 0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
DankIcon {
|
||||
name: "close"
|
||||
size: 16
|
||||
color: clearMouseArea.containsMouse ? Theme.error : Theme.outline
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: clearMouseArea
|
||||
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: {
|
||||
SettingsData.removeWorkspaceNameIcon(modelData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - 150 - 240 - 28 - Theme.spacingM * 4
|
||||
height: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: notificationSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: notificationSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "notifications"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Notification Popups")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: 0
|
||||
leftPadding: Theme.spacingM
|
||||
rightPadding: Theme.spacingM
|
||||
|
||||
DankDropdown {
|
||||
width: parent.width - parent.leftPadding - parent.rightPadding
|
||||
text: I18n.tr("Popup Position")
|
||||
description: I18n.tr("Choose where notification popups appear on screen")
|
||||
currentValue: {
|
||||
if (SettingsData.notificationPopupPosition === -1) {
|
||||
return "Top Center";
|
||||
}
|
||||
switch (SettingsData.notificationPopupPosition) {
|
||||
case SettingsData.Position.Top:
|
||||
return "Top Right";
|
||||
case SettingsData.Position.Bottom:
|
||||
return "Bottom Left";
|
||||
case SettingsData.Position.Left:
|
||||
return "Top Left";
|
||||
case SettingsData.Position.Right:
|
||||
return "Bottom Right";
|
||||
default:
|
||||
return "Top Right";
|
||||
}
|
||||
}
|
||||
options: ["Top Right", "Top Left", "Top Center", "Bottom Right", "Bottom Left"]
|
||||
onValueChanged: value => {
|
||||
switch (value) {
|
||||
case "Top Right":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Top);
|
||||
break;
|
||||
case "Top Left":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Left);
|
||||
break;
|
||||
case "Top Center":
|
||||
SettingsData.set("notificationPopupPosition", -1);
|
||||
break;
|
||||
case "Bottom Right":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Right);
|
||||
break;
|
||||
case "Bottom Left":
|
||||
SettingsData.set("notificationPopupPosition", SettingsData.Position.Bottom);
|
||||
break;
|
||||
}
|
||||
SettingsData.sendTestNotifications();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: osdRow.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Row {
|
||||
id: osdRow
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "tune"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - Theme.spacingM - osdToggle.width - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Always Show OSD Percentage")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Display volume and brightness percentage values by default in OSD popups")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
id: osdToggle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
checked: SettingsData.osdAlwaysShowValue
|
||||
onToggled: checked => {
|
||||
SettingsData.set("osdAlwaysShowValue", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
width: parent.width
|
||||
height: osdSection.implicitHeight + Theme.spacingL * 2
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||
border.width: 0
|
||||
|
||||
Column {
|
||||
id: osdSection
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "notification_important"
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("On-screen Displays")
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: 0
|
||||
leftPadding: Theme.spacingM
|
||||
rightPadding: Theme.spacingM
|
||||
|
||||
DankDropdown {
|
||||
width: parent.width - parent.leftPadding - parent.rightPadding
|
||||
text: I18n.tr("OSD Position")
|
||||
description: I18n.tr("Choose where on-screen displays appear on screen")
|
||||
currentValue: {
|
||||
switch (SettingsData.osdPosition) {
|
||||
case SettingsData.Position.Top:
|
||||
return "Top Right";
|
||||
case SettingsData.Position.Left:
|
||||
return "Top Left";
|
||||
case SettingsData.Position.TopCenter:
|
||||
return "Top Center";
|
||||
case SettingsData.Position.Right:
|
||||
return "Bottom Right";
|
||||
case SettingsData.Position.Bottom:
|
||||
return "Bottom Left";
|
||||
case SettingsData.Position.BottomCenter:
|
||||
return "Bottom Center";
|
||||
case SettingsData.Position.LeftCenter:
|
||||
return "Left Center";
|
||||
case SettingsData.Position.RightCenter:
|
||||
return "Right Center";
|
||||
default:
|
||||
return "Bottom Center";
|
||||
}
|
||||
}
|
||||
options: ["Top Right", "Top Left", "Top Center", "Bottom Right", "Bottom Left", "Bottom Center", "Left Center", "Right Center"]
|
||||
onValueChanged: value => {
|
||||
switch (value) {
|
||||
case "Top Right":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Top);
|
||||
break;
|
||||
case "Top Left":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Left);
|
||||
break;
|
||||
case "Top Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.TopCenter);
|
||||
break;
|
||||
case "Bottom Right":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Right);
|
||||
break;
|
||||
case "Bottom Left":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.Bottom);
|
||||
break;
|
||||
case "Bottom Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.BottomCenter);
|
||||
break;
|
||||
case "Left Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.LeftCenter);
|
||||
break;
|
||||
case "Right Center":
|
||||
SettingsData.set("osdPosition", SettingsData.Position.RightCenter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Volume OSD")
|
||||
description: I18n.tr("Show on-screen display when volume changes")
|
||||
checked: SettingsData.osdVolumeEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdVolumeEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Media Volume OSD")
|
||||
description: I18n.tr("Show on-screen display when media player volume changes")
|
||||
checked: SettingsData.osdMediaVolumeEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdMediaVolumeEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Brightness OSD")
|
||||
description: I18n.tr("Show on-screen display when brightness changes")
|
||||
checked: SettingsData.osdBrightnessEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdBrightnessEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Idle Inhibitor OSD")
|
||||
description: I18n.tr("Show on-screen display when idle inhibitor state changes")
|
||||
checked: SettingsData.osdIdleInhibitorEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdIdleInhibitorEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Microphone Mute OSD")
|
||||
description: I18n.tr("Show on-screen display when microphone is muted/unmuted")
|
||||
checked: SettingsData.osdMicMuteEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdMicMuteEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Caps Lock OSD")
|
||||
description: I18n.tr("Show on-screen display when caps lock state changes")
|
||||
checked: SettingsData.osdCapsLockEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdCapsLockEnabled", checked);
|
||||
}
|
||||
}
|
||||
|
||||
DankToggle {
|
||||
width: parent.width
|
||||
text: I18n.tr("Power Profile OSD")
|
||||
description: I18n.tr("Show on-screen display when power profile changes")
|
||||
checked: SettingsData.osdPowerProfileEnabled
|
||||
onToggled: checked => {
|
||||
return SettingsData.set("osdPowerProfileEnabled", checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property string tab: ""
|
||||
property var tags: []
|
||||
property string settingKey: ""
|
||||
|
||||
property string text: ""
|
||||
property string description: ""
|
||||
property alias model: buttonGroup.model
|
||||
property alias currentIndex: buttonGroup.currentIndex
|
||||
property alias selectionMode: buttonGroup.selectionMode
|
||||
property alias buttonHeight: buttonGroup.buttonHeight
|
||||
property alias minButtonWidth: buttonGroup.minButtonWidth
|
||||
property alias buttonPadding: buttonGroup.buttonPadding
|
||||
property alias checkIconSize: buttonGroup.checkIconSize
|
||||
property alias textSize: buttonGroup.textSize
|
||||
property alias spacing: buttonGroup.spacing
|
||||
property alias checkEnabled: buttonGroup.checkEnabled
|
||||
|
||||
signal selectionChanged(int index, bool selected)
|
||||
|
||||
width: parent?.width ?? 0
|
||||
height: 60
|
||||
|
||||
Row {
|
||||
id: contentRow
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Column {
|
||||
width: parent.width - buttonGroup.width - Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
text: root.text
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
elide: Text.ElideRight
|
||||
width: parent.width
|
||||
visible: root.text !== ""
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: root.description
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
visible: root.description !== ""
|
||||
}
|
||||
}
|
||||
|
||||
DankButtonGroup {
|
||||
id: buttonGroup
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
selectionMode: "single"
|
||||
onSelectionChanged: (index, selected) => root.selectionChanged(index, selected)
|
||||
}
|
||||
}
|
||||
}
|
||||
121
quickshell/Modules/Settings/Widgets/SettingsCard.qml
Normal file
121
quickshell/Modules/Settings/Widgets/SettingsCard.qml
Normal file
@@ -0,0 +1,121 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
|
||||
StyledRect {
|
||||
id: root
|
||||
|
||||
property string tab: ""
|
||||
property var tags: []
|
||||
|
||||
property string title: ""
|
||||
property string iconName: ""
|
||||
property bool collapsible: false
|
||||
property bool expanded: true
|
||||
|
||||
default property alias content: contentColumn.children
|
||||
|
||||
width: parent?.width ?? 0
|
||||
height: {
|
||||
var hasHeader = root.title !== "" || root.iconName !== "";
|
||||
if (collapsed)
|
||||
return headerRow.height + Theme.spacingL * 2;
|
||||
var h = Theme.spacingL * 2 + contentColumn.height;
|
||||
if (hasHeader)
|
||||
h += headerRow.height + Theme.spacingM;
|
||||
return h;
|
||||
}
|
||||
radius: Theme.cornerRadius
|
||||
color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
|
||||
readonly property bool collapsed: collapsible && !expanded
|
||||
readonly property bool hasHeader: root.title !== "" || root.iconName !== ""
|
||||
property bool animationsEnabled: false
|
||||
|
||||
Component.onCompleted: Qt.callLater(() => animationsEnabled = true)
|
||||
|
||||
Behavior on height {
|
||||
enabled: root.animationsEnabled
|
||||
NumberAnimation {
|
||||
duration: Theme.shortDuration
|
||||
easing.type: Theme.standardEasing
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingL
|
||||
spacing: root.hasHeader ? Theme.spacingM : 0
|
||||
clip: true
|
||||
|
||||
Item {
|
||||
id: headerRow
|
||||
width: parent.width
|
||||
height: root.hasHeader ? Math.max(headerIcon.height, headerText.height) : 0
|
||||
visible: root.hasHeader
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
id: headerIcon
|
||||
name: root.iconName
|
||||
size: Theme.iconSize
|
||||
color: Theme.primary
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: root.iconName !== ""
|
||||
}
|
||||
|
||||
StyledText {
|
||||
id: headerText
|
||||
text: root.title
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: root.title !== ""
|
||||
}
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
name: root.expanded ? "expand_less" : "expand_more"
|
||||
size: Theme.iconSize - 2
|
||||
color: Theme.surfaceVariantText
|
||||
visible: root.collapsible
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
enabled: root.collapsible
|
||||
cursorShape: root.collapsible ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
onClicked: {
|
||||
if (!root.collapsible)
|
||||
return;
|
||||
root.expanded = !root.expanded;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
id: contentColumn
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
visible: !root.collapsed
|
||||
opacity: root.collapsed ? 0 : 1
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.shortDuration
|
||||
easing.type: Theme.standardEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
quickshell/Modules/Settings/Widgets/SettingsDropdownRow.qml
Normal file
15
quickshell/Modules/Settings/Widgets/SettingsDropdownRow.qml
Normal file
@@ -0,0 +1,15 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Widgets
|
||||
|
||||
DankDropdown {
|
||||
id: root
|
||||
|
||||
property string tab: ""
|
||||
property var tags: []
|
||||
property string settingKey: ""
|
||||
|
||||
width: parent?.width ?? 0
|
||||
addHorizontalPadding: true
|
||||
}
|
||||
99
quickshell/Modules/Settings/Widgets/SettingsSliderRow.qml
Normal file
99
quickshell/Modules/Settings/Widgets/SettingsSliderRow.qml
Normal file
@@ -0,0 +1,99 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property string tab: ""
|
||||
property var tags: []
|
||||
property string settingKey: ""
|
||||
|
||||
property string text: ""
|
||||
property string description: ""
|
||||
property alias value: slider.value
|
||||
property alias minimum: slider.minimum
|
||||
property alias maximum: slider.maximum
|
||||
property alias unit: slider.unit
|
||||
property alias wheelEnabled: slider.wheelEnabled
|
||||
property alias thumbOutlineColor: slider.thumbOutlineColor
|
||||
property int defaultValue: -1
|
||||
|
||||
signal sliderValueChanged(int newValue)
|
||||
|
||||
width: parent?.width ?? 0
|
||||
height: headerRow.height + Theme.spacingXS + slider.height
|
||||
|
||||
Column {
|
||||
id: contentColumn
|
||||
width: parent.width - Theme.spacingM * 2
|
||||
x: Theme.spacingM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
Row {
|
||||
id: headerRow
|
||||
width: parent.width
|
||||
height: labelColumn.height
|
||||
spacing: Theme.spacingS
|
||||
|
||||
Column {
|
||||
id: labelColumn
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.spacingXS
|
||||
width: parent.width - resetButtonContainer.width - Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
text: root.text
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
visible: root.text !== ""
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: root.description
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
visible: root.description !== ""
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: resetButtonContainer
|
||||
width: root.defaultValue >= 0 ? 36 : 0
|
||||
height: 36
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
DankActionButton {
|
||||
id: resetButton
|
||||
anchors.centerIn: parent
|
||||
buttonSize: 36
|
||||
iconName: "restart_alt"
|
||||
iconSize: 20
|
||||
visible: root.defaultValue >= 0 && slider.value !== root.defaultValue
|
||||
backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
iconColor: Theme.surfaceVariantText
|
||||
onClicked: {
|
||||
slider.value = root.defaultValue;
|
||||
root.sliderValueChanged(root.defaultValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DankSlider {
|
||||
id: slider
|
||||
width: parent.width
|
||||
height: 32
|
||||
showValue: true
|
||||
wheelEnabled: false
|
||||
thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
|
||||
onSliderValueChanged: newValue => root.sliderValueChanged(newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
14
quickshell/Modules/Settings/Widgets/SettingsToggleRow.qml
Normal file
14
quickshell/Modules/Settings/Widgets/SettingsToggleRow.qml
Normal file
@@ -0,0 +1,14 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Widgets
|
||||
|
||||
DankToggle {
|
||||
id: root
|
||||
|
||||
property string tab: ""
|
||||
property var tags: []
|
||||
property string settingKey: ""
|
||||
|
||||
width: parent?.width ?? 0
|
||||
}
|
||||
1181
quickshell/Modules/Settings/WidgetsTab.qml
Normal file
1181
quickshell/Modules/Settings/WidgetsTab.qml
Normal file
File diff suppressed because it is too large
Load Diff
224
quickshell/Modules/Settings/WorkspacesTab.qml
Normal file
224
quickshell/Modules/Settings/WorkspacesTab.qml
Normal file
@@ -0,0 +1,224 @@
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Widgets
|
||||
import qs.Modules.Settings.Widgets
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
DankFlickable {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
contentHeight: mainColumn.height + Theme.spacingXL
|
||||
contentWidth: width
|
||||
|
||||
Column {
|
||||
id: mainColumn
|
||||
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: Theme.spacingXL
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "view_module"
|
||||
title: I18n.tr("Workspace Settings")
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Workspace Index Numbers")
|
||||
description: I18n.tr("Show workspace index numbers in the top bar workspace switcher")
|
||||
checked: SettingsData.showWorkspaceIndex
|
||||
onToggled: checked => SettingsData.set("showWorkspaceIndex", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Workspace Padding")
|
||||
description: I18n.tr("Always show a minimum of 3 workspaces, even if fewer are available")
|
||||
checked: SettingsData.showWorkspacePadding
|
||||
onToggled: checked => SettingsData.set("showWorkspacePadding", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Show Workspace Apps")
|
||||
description: I18n.tr("Display application icons in workspace indicators")
|
||||
checked: SettingsData.showWorkspaceApps
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
onToggled: checked => SettingsData.set("showWorkspaceApps", checked)
|
||||
}
|
||||
|
||||
Row {
|
||||
width: parent.width - Theme.spacingL
|
||||
spacing: Theme.spacingL
|
||||
visible: SettingsData.showWorkspaceApps
|
||||
opacity: visible ? 1 : 0
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.spacingL
|
||||
|
||||
Column {
|
||||
width: 120
|
||||
spacing: Theme.spacingS
|
||||
|
||||
StyledText {
|
||||
text: I18n.tr("Max apps to show")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceText
|
||||
font.weight: Font.Medium
|
||||
}
|
||||
|
||||
DankTextField {
|
||||
width: 100
|
||||
height: 28
|
||||
placeholderText: "#ffffff"
|
||||
text: SettingsData.maxWorkspaceIcons
|
||||
maximumLength: 7
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
topPadding: Theme.spacingXS
|
||||
bottomPadding: Theme.spacingXS
|
||||
onEditingFinished: SettingsData.set("maxWorkspaceIcons", parseInt(text, 10))
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: Theme.mediumDuration
|
||||
easing.type: Theme.emphasizedEasing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Per-Monitor Workspaces")
|
||||
description: I18n.tr("Show only workspaces belonging to each specific monitor.")
|
||||
checked: SettingsData.workspacesPerMonitor
|
||||
onToggled: checked => SettingsData.set("workspacesPerMonitor", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Show Occupied Workspaces Only")
|
||||
description: I18n.tr("Display only workspaces that contain windows")
|
||||
checked: SettingsData.showOccupiedWorkspacesOnly
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
onToggled: checked => SettingsData.set("showOccupiedWorkspacesOnly", checked)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
text: I18n.tr("Show All Tags")
|
||||
description: I18n.tr("Show all 9 tags instead of only occupied tags (DWL only)")
|
||||
checked: SettingsData.dwlShowAllTags
|
||||
visible: CompositorService.isDwl
|
||||
onToggled: checked => SettingsData.set("dwlShowAllTags", checked)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
width: parent.width
|
||||
iconName: "label"
|
||||
title: I18n.tr("Named Workspace Icons")
|
||||
visible: SettingsData.hasNamedWorkspaces()
|
||||
|
||||
StyledText {
|
||||
width: parent.width
|
||||
text: I18n.tr("Configure icons for named workspaces. Icons take priority over numbers when both are enabled.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.outline
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: SettingsData.getNamedWorkspaces()
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: workspaceIconRow.implicitHeight + Theme.spacingM
|
||||
radius: Theme.cornerRadius
|
||||
color: Qt.rgba(Theme.surfaceContainer.r, Theme.surfaceContainer.g, Theme.surfaceContainer.b, 0.5)
|
||||
border.width: 0
|
||||
|
||||
Row {
|
||||
id: workspaceIconRow
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
StyledText {
|
||||
text: "\"" + modelData + "\""
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 150
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
DankIconPicker {
|
||||
id: iconPicker
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
Component.onCompleted: {
|
||||
var iconData = SettingsData.getWorkspaceNameIcon(modelData);
|
||||
if (iconData) {
|
||||
setIcon(iconData.value, iconData.type);
|
||||
}
|
||||
}
|
||||
|
||||
onIconSelected: (iconName, iconType) => {
|
||||
SettingsData.setWorkspaceNameIcon(modelData, {
|
||||
"type": iconType,
|
||||
"value": iconName
|
||||
});
|
||||
setIcon(iconName, iconType);
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: SettingsData
|
||||
function onWorkspaceIconsUpdated() {
|
||||
var iconData = SettingsData.getWorkspaceNameIcon(modelData);
|
||||
if (iconData) {
|
||||
iconPicker.setIcon(iconData.value, iconData.type);
|
||||
} else {
|
||||
iconPicker.setIcon("", "icon");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: 28
|
||||
height: 28
|
||||
radius: Theme.cornerRadius
|
||||
color: clearMouseArea.containsMouse ? Theme.errorHover : Theme.surfaceContainer
|
||||
border.width: 0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
DankIcon {
|
||||
name: "close"
|
||||
size: 16
|
||||
color: clearMouseArea.containsMouse ? Theme.error : Theme.outline
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: clearMouseArea
|
||||
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: SettingsData.removeWorkspaceNameIcon(modelData)
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
width: parent.width - 150 - 240 - 28 - Theme.spacingM * 4
|
||||
height: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,28 @@ Singleton {
|
||||
return screen?.devicePixelRatio || 1;
|
||||
}
|
||||
|
||||
function getFocusedScreen() {
|
||||
let screenName = "";
|
||||
if (isHyprland && Hyprland.focusedWorkspace?.monitor)
|
||||
screenName = Hyprland.focusedWorkspace.monitor.name;
|
||||
else if (isNiri && NiriService.currentOutput)
|
||||
screenName = NiriService.currentOutput;
|
||||
else if (isSway) {
|
||||
const focusedWs = I3.workspaces?.values?.find(ws => ws.focused === true);
|
||||
screenName = focusedWs?.monitor?.name || "";
|
||||
} else if (isDwl && DwlService.activeOutput)
|
||||
screenName = DwlService.activeOutput;
|
||||
|
||||
if (!screenName)
|
||||
return Quickshell.screens.length > 0 ? Quickshell.screens[0] : null;
|
||||
|
||||
for (let i = 0; i < Quickshell.screens.length; i++) {
|
||||
if (Quickshell.screens[i].name === screenName)
|
||||
return Quickshell.screens[i];
|
||||
}
|
||||
return Quickshell.screens.length > 0 ? Quickshell.screens[0] : null;
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: sortDebounceTimer
|
||||
interval: 100
|
||||
|
||||
@@ -24,7 +24,7 @@ Item {
|
||||
readonly property int insetCircle: 24
|
||||
|
||||
width: showText ? parent.width : trackWidth
|
||||
height: showText ? 60 : trackHeight
|
||||
height: showText ? (description.length > 0 ? 60 : 44) : trackHeight
|
||||
|
||||
function handleClick() {
|
||||
if (!enabled) return
|
||||
|
||||
@@ -55,7 +55,6 @@ Item {
|
||||
signal saveBind(string originalKey, var newData)
|
||||
signal removeBind(string key)
|
||||
signal cancelEdit
|
||||
signal restoreKeyConsumed
|
||||
|
||||
implicitHeight: contentColumn.implicitHeight
|
||||
height: implicitHeight
|
||||
@@ -67,7 +66,6 @@ Item {
|
||||
return;
|
||||
if (restoreKey) {
|
||||
restoreToKey(restoreKey);
|
||||
restoreKeyConsumed();
|
||||
} else {
|
||||
resetEdits();
|
||||
}
|
||||
@@ -77,7 +75,6 @@ Item {
|
||||
if (!isExpanded || !restoreKey)
|
||||
return;
|
||||
restoreToKey(restoreKey);
|
||||
restoreKeyConsumed();
|
||||
}
|
||||
|
||||
function restoreToKey(keyToFind) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": "%1 adaptador(es), ninguno conectado"
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(Sin nombre)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- Monitoreo de sistema sin estado"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- Apóyanos con una estrella"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1 evento"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "Formato de 24 horas"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "Formato de 24 horas"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "De terceros"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "Clima de la semana"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "Un archivo con este nombre ya existe. ¿Quieres reemplazarlo?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": "Activo"
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": "Activo:"
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "Añadir widget"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "Añadir widget a "
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": "Agregar widget a la sección %1"
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "Añadir una VPN en NetworkManager"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "Todo"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "Todo el día"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Atrás • F1/I: Información del archivo • F10: Ayuda • Esc: Cerrar+"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "Siempre mostrar el porcentaje en el OSD"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "Iconos fijos"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "Las aplicaciones son ordenadas por frecuencia de uso, luego por último utilizado, y luego alfabéticamente."
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "¿Estás seguro de que quieres hibernar el sistema?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "¿Estás seguro de que quieres cerrar sesión?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "¿Estás seguro de que quieres apagar el sistema?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "¿Estás seguro de que quieres reiniciar el sistema?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "¿Estás seguro de que quieres suspender el sistema?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": "Audio"
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "Dispositivos de audio"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "Icono de audio"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "Salida de audio ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "Determinar tu ubicación usando tu dirección IP"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "Extraer colores desde tu fondo de pantalla"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "Ocultar la barra superior automáticamente para tener más espacio de pantalla"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "Nivel de batería y gestión de energía"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "Conectar pantalla de bloqueo a las señales dbus de loginctl. Deshabilitar si se usa una pantalla de bloqueo externa"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": "Bluetooth"
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "Icono Bluetooth"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "Ajustes Bluetooth"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "Capacidad"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "Indicador de Bloq Mayús"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "Elije dónde aparecen los indicadores en pantalla"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": "Cifrado"
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "Cerrar vista general al iniciar"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "Sobrescribir color"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "Selector de color"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "Temperatura de color para el día"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "Compositor"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "Configuración activada"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "Controlar la reproducción en curso"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "Controla la opacidad de todas las ventanas, modales y sus capas de contenido (DankDash, Ajustes, Cajón de aplicaciones, Centro de control, etc.)"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "Copiar Nombre del Proceso"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "Redondeo de esquinas (0 = esquinas cuadradas)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "Redondeo de esquinas personal"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "Cubierta abierta"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "Personal"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "Ubicación personalizada"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "Acciones de energía personalizadas"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "Transparencia personalizada"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Transparencia de Dank Bar"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Transparencia del Widget de Dank Bar"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Tamaño de fuente"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch no disponible"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "Modo oscuro"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "Formato de nombre"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "Mostrar un panel con aplicaciones fijadas y activas que puede colocarse en el borde superior, inferior, izquierdo o derecho de la pantalla"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "Prioridades visibles sobre apps en pantalla completa"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "Mostrar acciones en una cuadrícula en vez de una lista"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "Ajustes de pantalla para "
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "Mostrar porcentaje de volumen y brillo en los avisos OSD"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "Pantallas"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "Dock"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "Posición del dock"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "Transparencia del dock"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "Dominio (opcional)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "Tema dinámico"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "Espacio de borde (0 = borde a borde)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "Habilitar barra"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "Habilitar temperatura GPU"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "Habilitar WiFi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Activar capa de desenfoque dirigida por el compositor (namespace: dms:blurwallpaper). Requiere configuración manual de Niri."
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "Información del archivo"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "Encontrar texto"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "Encontrar en notas..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "Control de gamma no disponible. Requiere DMS API v6+."
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "GitHub:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "Hibernar"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "Duración antes de ocultar (ms)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "Con qué frecuencia cambiar el fondo de pantalla"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": "Importar VPN"
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "Incluir transiciones"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "Matar el proceso"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "Usado hace %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "Pantalla de bloqueo"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "Formato en la pantalla de bloqueo"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "Cerrar sesión"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "Texto largo"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "Medio necesario"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "Ajustes del reproductor"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "Reproductores ("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "Volumen multimedia OSD"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "Memoria"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "Micrófono"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "Silencio del micrófono OSD"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "Mostrar velocidad de descarga y subida de la red"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "Nuevo"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "Temperatura nocturna"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "Ninguna"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "Prioridad normal"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "Bandeja de salida no encontrada"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "Posición: "
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "Energía y seguridad"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "Confirmación de acción"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "Opciones de Energía"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "Perfil de Energía Degradada"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "Perfil de energía OSD"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "Escalar todos los tamaños de fuente"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "Escanear"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "Seleccionar logo del lanzador"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "Seleccionar el grosor de la fuente"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "Seleccionar monitor para configurar el fondo de pantalla"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "Seleccionar tema de sonidos del sistema"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Selecciona el algoritmo de colores del fondo de pantalla"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "Ajustes"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: Borrar todo • Esc: Cerrar "
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "Mostrar Reiniciar DMS"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "Mostrar Suspender"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "Tamaño relativo"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "Ordenar alfabéticamente"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "Tema de sonidos"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "Espaciador"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "Apoyar desarrollo"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "Superficie"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "Monitoreo del sistema:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "Bandeja del sistema"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "Iconos del área de notificaciones del sistema"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "Notificaciones emergentes del sistema"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "Los complementos de terceros son creados por la comunidad y no cuentan con soporte oficial de DankMaterialShell.\\n\\nEstos complementos pueden representar riesgos de seguridad y privacidad - instálalos bajo tu propia responsabilidad."
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "Este widget evita que la GPU entre en estados de apagado y puede afectar significativamente la batería en portátiles. No se recomienda usarlo en portátiles con gráficos híbridos."
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "Tiempo y clima"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "Tiempo agotado"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "Para actualizar, ejecute el siguiente comando:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "Mensajes emergentes"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "Efecto de transición"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Apagar monitores después de"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": "No disponible"
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "Efecto visual usado al cambiar el fondo de pantalla"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "Cambio de volumen"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "Espacios de trabajo"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": "Si"
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "Tienes cambios sin guardar. ¿Guardar antes de abrir otro archivo?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "Elegir tema personalizado"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "Seleccionar fondo de pantalla"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "eventos"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl no disponible - integración requiere conexión al socket DMS"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "Matugen no detectado - tematización dinámica no disponible"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "oficial"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "Elegir foto de perfil"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "Ajustes"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "Elegir carpeta de fondos de pantalla"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• Instalar solo desde fuentes confiables"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": ""
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(Senza nome)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- Monitoraggio del Sistema Stateless"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- Supportaci Con Una Stella ⭐"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1 evento"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "Formato 24-Ore"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "formato 24-ore"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "terze parti"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "Previsioni 7-giorni"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "Un file con questo nome esiste già. Vuoi sovrascriverlo?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": ""
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": ""
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "Aggiungi Widget"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "Aggiungi Widget"
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": ""
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "Aggiungi una VPN in NetworkManager"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "Tutto"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "Tutto il giorno"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Indietro • F1/I: File Info • F10: Aiuto • Esc: Chiude"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "Visualizza sempre percentuale OSD"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "Icone sempre attive"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "Le applicazioni sono ordinate per frequenza d'uso, poi usate di recente ed infine alfabeticamente "
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "Sei sicuro di voler ibernare il sistema?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "Sei sicuro di volerti disconnettere?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "Sei sicuro di voler spegnere il sistema?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "Sei sicuro di voler riavviare il sistema"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "Sei sicuro di voler sospendere il sistema?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": ""
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "Dispositivi Audio"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "Icona Audio"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "Dispositivi Uscita Audio ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "Determina automaticamente la tua posizione usando l'indirizzo IP"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "Estrai automaticamente i colori dallo sfondo"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "Nascondi automaticamente la barra superiore per espandere lo schermo"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "Livello batteria e gestione energetica"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "Collega il blocca schermo ai segnali dbus da loginctl.\nDisabilità se stai usando un blocca schermo esterno"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": ""
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "Icona Bluetooth"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "Impostazioni Bluetooth"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "Capacità"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "Indicatore Maiuscolo"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "Scegli dove i messaggi appaiono sullo schermo"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": ""
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "Chiudi Overview all'Avvio"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "Sostituzione Colore"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "Prelievo Colore"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "Temperatura colore per il giorno"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "Compositor\n"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "Configurazione attivata"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "Controllo media attualmente in riproduzione "
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "Controlla l'opacità di tutti i popup, delle finestre modali e dei relativi livelli di contenuto (Dank Dash, Impostazioni, App Drawer, Centro di controllo, ecc.)"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "Copia Nome Processo"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "Raggio Angoli (0 = angoli squadrati)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "Sovrascrittura Raggio Angoli"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "Coperchio Aperto"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "Personalizzato"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "Posizione Personalizzata"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "Azione Alimentazione Personalizzate"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "Trasparenza personalizzata"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Trasparenza Dank Bar"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Trasparenza Widget Dank Bar"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Scala Font DankBar"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch non disponibile"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "Modalità Scura"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "Formato del nome visualizzato"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "Visualizza una dock con applicazioni pinnate ed in esecuzione che possono essere posizionate nell'angolo superiore, inferiore, sinistro o destro dello schermo"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "Visualizza tutte le priorità sulle apps a schermo pieno"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "Visualizza le azioni di alimentazioni in griglia invece di una lista"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "Impostazioni display per "
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "Mostra di default la percentuale volume e luminosità nei popups OSD"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "Displays"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "Dock"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "Posizione Dock"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "Trasparenza Dock"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "Dominio (opzionale)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "Tema dinamico"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "Spaziatura Angoli (0 = angolo-angolo)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "Abilita Barra"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "Abilita Temperatura GPU"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "Abilita WiFi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Abilitare il livello di sfocatura compositore-targetable (namespace: dms:blurwallpaper). Richiede la configurazione manuale di niri."
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "Informazioni File"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "Trova nel Testo"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "Trova in note..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "Gamma control non disponibile. Richiede API DMS v6+."
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "Github:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "Iberna"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "Ritardo Scomparsa (ms)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "Quanto spesso cambiare lo sfondo"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": ""
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "Includi Transizioni"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "Chiusura Processo"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "Ultimo avviato %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "Blocca Schermo"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "Formato Blocca Schermo"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "Log Out"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "Testo Lungo"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "Media Richiesti"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "Impostazioni Media Player"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "Media Players ("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "OSD Volume Media"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "Memoria"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "Microfono"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "OSD Microfono Muto"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "Mostra velocità di download e upload della rete"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "Nuovo"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "Temperatura Notte"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "Nulla"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "Priorità Normale"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "Vassoio Uscita Mancante"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "Posizione"
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "Alimentazione & Sicurezza"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "Conferma Azioni Alimentazione"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "Opzioni Alimentazione"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "Degradamento profilo energetico"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "OSD Profilo Alimentazione"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "Scala tutte le dimensioni dei font"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "Scansiona"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "Seleziona Logo Launcher"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "Seleziona peso font"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "Selezionare il monitor per configurare lo sconto"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "Seleziona tema suoni di sistema"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Seleziona l'algoritmo tavolozza usato per i colori basati sullo sfondo"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "Impostazioni"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: Elimina tutto • Esc: Chiude"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "Mostra Riavvia DMS"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "Mostra Sospendi"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "Dimensione Offset"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "Ordina Alfabeticamente"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "Tema Suoni"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "Spaziatore"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "Supporta Sviluppo"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "Superficie"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "Monitoraggio Sistema:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "Vassoio Sistema"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "Icone area notifiche di sistema"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "Notiche toast di sistema"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "I plugin di terze parti sono creati dalla community e non sono ufficialmente supportati da DankMaterialShell.\\n\\nQuesti plugin possono comportare rischi per la sicurezza e la privacy - installare a proprio rischio."
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "Questo widget impedisce gli stati di spegnimento della GPU, che possono influire in modo significativo sulla durata della batteria sui laptop. Non è consigliabile utilizzare questo su laptop con grafica ibrida."
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "Orario & Meteo"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "Scaduto"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "Per aggiornare, esegui il seguente comando:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "Messaggi Toast"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "Effetto Transizione"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Spegni monitors dopo"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": ""
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "Effetto visivo usato quando cambia lo sfondo"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "Volume Cambiato"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "Switcher Workspace"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": ""
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "Ci sono modifiche non salvate. Salvare prima di aprire un file?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "Seleziona Tema Personalizzato"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "Seleziona Sfondo"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "eventi"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl non disponibile - integrazione blocco richiede connessione socket DMS"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "matugen non rilevato - tema dinamico non disponibile"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "ufficiale"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "Seleziona Immagine Profilo"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "Impostazioni"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "Seleziona Cartella Sfondo"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• Installa solo da sorgenti fidate"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": ""
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(名前なし)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- ステートレスシステム監視"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- 星を付けて応援してください⭐"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1件のイベント"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "24時間形式"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "24時間形式"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "サードパーティ"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "7日間予報"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "この名前のファイルは既に存在します。上書きしてもよろしいですか?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": ""
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": ""
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "ウィジェットを追加"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "ウィジェットを追加 "
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": ""
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "NetworkManagerでVPNを追加"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "全て"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "毎日"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: 戻る • F1/I: ファイル情報 • F10: ヘルプ • Esc: 閉じる"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "常に OSD パーセンテージを表示"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "常時表示アイコン"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "アプリは使用頻度、最終使用日、アルファベット順の優先順位で並べられています。"
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "システムを休止状態にしますか?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "ログアウトしてもよろしいですか?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "システムの電源をオフにしてもよろしいですか?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "システムを再起動してもよろしいですか?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "システムを一時停止してもよろしいですか?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": ""
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "オーディオデバイス"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "オーディオアイコン"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "オーディオ出力デバイス("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "IPアドレスを使用して現在地を自動的に特定します"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "壁紙から色を自動的に抽出"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "画面のスペースを広げるために上部のバーを自動的に非表示"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "バッテリーレベルおよび電源管理"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "ロック画面をloginctlからのdbus信号にバインド。外部ロック画面を使用している場合は無効に"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": ""
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "Bluetoothアイコン"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "Bluetooth設定"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "容量"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "Caps Lock インジケーター"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "OSDの表示する場所を選んでください"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": ""
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "起動中のときに概要を閉じる"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "色のオーバーライド"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "カラーピッカー"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "昼間の色温度"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "コンポジター"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "設定が適用されました"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "現在再生中のメディアを制御"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "すべてのポップアウト、モーダル、およびそれらのコンテンツレイヤー(DankDash、設定、アプリドロワー、コントロールセンターなど)の不透明度を制御"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "プロセス名をコピー"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "コーナー半径(0 = 角丸なし)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "コーナー半径オーバーライド"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "カバーオープン"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "カスタム"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "カスタムロケーション"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "カスタム電源アクション"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "カスタム透明度"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Dank Barの透明性"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Dank Barウィジェットの透明度"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Dank Bar フォントスケール"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearchが利用できません"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "ダークモード"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "名称形式を表示"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "画面の上、下、左、右の端に配置できる、ピン留めされた実行中のアプリケーションを含むドックを表示します"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "フルスクリーンアプリよりもすべての優先度を表示する"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "電源メニューのアクションをリストではなくグリッドに表示"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "以下の設定を表示 "
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "OSDポップアップに音量と輝度のパーセンテージ値をデフォルトで表示"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "表示"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "ドック"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "ドック位置"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "ドックの透明度"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "ドメイン (オプション)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "ダイナミックテーマ"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "エッジ間隔(0 = エッジ・トゥ・エッジ)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "バーを起用"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "GPU温度を有効にする"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "WiFiを有効にする"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "コンポジターをターゲットに設定できるぼかしレイヤー(名前空間:dms:blurwallpaper)を有効にします。Niri を手動で設定する必要があります。"
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "ファイル情報"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "テキスト内検索"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "メモで検索..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "ガンマ制御は使用できません。DMS API v6+ が必要です。"
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "GitHub:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "休止状態"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "遅延を隠す (ms)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "壁紙を切り替える間隔"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": ""
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "トランジションを含める"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "プロセスを強制終了"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "最終起動日 %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "ロック画面"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "ロック画面のフォーマット"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "ログアウト"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "長文"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "メディアが必要"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "メディアプレーヤーの設定"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "メディアプレーヤー("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "メディア音量OSD"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "メモリ"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "マイク"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "マイクミュートOSD"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "ネットワークのダウンロードおよびアップロード速度を表示"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "新しい"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "夜間の温度"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "ない"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "通常の優先度"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "アウトプットトレイが見つかりませんでした"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "位置: "
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "電源とセキュリティ"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "電源アクションの確認"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "電源オプション"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "電源プロファイルの劣化"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "電源プロファイルOSD"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "すべてのフォントサイズを拡大縮小"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "スキャン"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "ランチャーロゴを選ぶ"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "フォントの太さを選ぶ"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "壁紙を設定するモニターを選ぶ"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "システムサウンドテーマを選ぶ"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "壁紙ベースの色で、使用するパレットアルゴリズムを選ぶ"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "設定"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: すべてクリア • Esc: 閉じる"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "DMS再起動を表示"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "一時停止を表示"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "サイズオフセット"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "アルファベット順に並べ替える"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "サウンドテーマ"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "間隔"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "開発をサポート"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "表面"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "システム監視:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "システムトレイ"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "システム通知エリアアイコン"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "システムトースト通知"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "サードパーティプラグインはコミュニティによって作成されており、DankMaterialShellによる公式サポートはありません。\\n\\nこれらのプラグインはセキュリティやプライバシーのリスクをもたらす可能性があります - 自己責任でインストールしてください。"
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "このウィジェットはGPUの省電力状態を防ぎ、ノートパソコンのバッテリー寿命に大きな影響を与える可能性があります。ハイブリッドグラフィックス搭載のノートパソコンでの使用は推奨されません。"
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "時間および天気"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "タイムアウト"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "更新するには以下のコマンドを実行してください:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "トーストメッセージ"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "トランジション効果"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "後にモニターの電源を切る"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": ""
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "壁紙が変更される時に使用されるビジュアルエフェクト"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "音量変更"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "ワークスペーススイッチャー"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": ""
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "保存されていない変更があります。ファイルを開く前に保存しますか?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "カスタムテーマを選んでください"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "壁紙を選んでください"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "イベント"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctlが利用できません- ロック統合のためにDMS socketの接続が必要です。"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "matugen が検出されません - ダイナミックテーマ設定は利用できません"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "公式"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "プロファイル画像を選んでください"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "設定"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "壁紙のディレクトリを選んでください"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• 信頼できるソースからのみインストールする"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": "%1 adapter(y), brak połączenia"
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(Bez nazwy)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- Monitorowanie systemu bezstanowego"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- Wesprzyj nas gwiazdką ⭐"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1 wydarzenie"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "Format 24-godzinny"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "format 24-godzinny"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "strona trzecia"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "Prognoza 7-dniowa"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "Plik o takiej nazwie już istnieje. Czy chcesz go nadpisać?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": "Aktywny"
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": "Aktywny: "
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "Dodaj widżet"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "Dodaj widżet do"
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": "Dodaj widżet do sekcji %1"
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "Dodaj sieć VPN w NetworkManager"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "Wszystkie"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "Cały dzień"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Wstecz • F1/I: Informacje o pliku • F10: Pomoc • Esc: Zamknij"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "Zawsze pokazuj procent w OSD"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "Ikony zawsze włączone"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "Aplikacje są uporządkowane według częstotliwości użytkowania, następnie według daty ostatniego użycia, a następnie alfabetycznie."
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "Czy na pewno chcesz hibernować komputer?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "Czy na pewno chcesz się wylogować?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "Czy na pewno chcesz wyłączyć komputer?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "Czy na pewno chcesz ponownie uruchomić komputer?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "Czy na pewno chcesz uśpić komputer?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": "Dźwięk"
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "Urządzenia audio"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "Ikona audio"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "Urządzenia wyjściowe audio ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "Automatycznie określ swoją lokalizację na podstawie adresu IP"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "Automatycznie wyciągnij kolory z tapety"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "Automatycznie ukryj górny pasek, aby zwiększyć powierzchnię ekranu"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "Poziom baterii i zarządzanie zasilaniem"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "Powiąż ekran blokady z sygnałami dbus z loginctl. Wyłącz, jeśli używasz zewnętrznego ekranu blokady"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": "Bluetooth"
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "Ikona Bluetooth"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "Ustawienia Bluetooth"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "Pojemność"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "Wskaźnik caps locka"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "Wybierz miejsce wyświetlania informacji na ekranie"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": "Szyfr"
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "Zamknij podgląd przy uruchomieniu"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "Nadpisanie koloru"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "Próbnik kolorów"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "Temperatura barwowa w ciągu dnia"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "Kompozytor"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "Konfiguracja aktywowana"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "Steruj aktualnie odtwarzanymi multimediami"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "Kontroluje przezroczystość wszystkich wyskakujących okienek, okien modalnych i ich warstw zawartości (DankDash, Ustawienia, Szuflada aplikacji, Centrum sterowania itp.)"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "Kopiuj nazwę procesu"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "Promień narożnika (0 = kwadratowe narożniki)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "Zastąpienie promienia narożnika"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "Pokrywa otwarta"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "Niestandardowy"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "Niestandardowa lokalizacja"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "Niestandardowe akcje zasilania"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "Niestandardowa przezroczystość"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Przezroczystość Dank Bar"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Przezroczystość widżetu Dank Bar"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Skala czcionki DankBar"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch niedostępny"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "Tryb ciemny"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "Format nazwy wyświetlanej"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "Wyświetla dok z przypiętymi i uruchomionymi aplikacjami, który można umieścić na górze, na dole, po lewej lub po prawej stronie ekranu."
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "Wyświetlaj wszystkie priorytety nad aplikacjami pełnoekranowymi"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "Wyświetl elementy menu zasilania w siatce zamiast listy"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "Ustawienia wyświetlania dla "
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "Domyślnie wyświetlaj wartości procentowe głośności i jasności w wyskakujących okienkach OSD"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "Ekrany"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "Dok"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "Pozycja Doka"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "Przezroczystość Doka"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "Domena (opcjonalnie)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "Dynamiczne motywy"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "Odstęp od krawędzi (0 = od krawędzi do krawędzi)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "Włącz pasek"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "Pokaż temperaturę GPU"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "Włącz Wi-Fi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Włącz warstwę rozmycia dla kompozytora (przestrzeń nazw: dms:blurwallpaper). Wymaga ręcznej konfiguracji niri."
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "Informacje"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "Znajdź w tekście"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "Znajdź w notatce..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "Kontrola gamma niedostępna. Wymaga DMS API w wersji 6+."
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "Github:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "Hibernacja"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "Opóźnienie ukrycia (ms)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "Jak często zmieniać tapetę"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": "Importuj VPN"
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "Uwzględnij przejścia"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "Zabij proces"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "Ostatnio uruchomiony %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "Ekran blokady"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "Format ekranu blokady"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "Wyloguj"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "Długi tekst"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "Wymagany nośnik"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "Ustawienia odtwarzacza multimediów"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "Odtwarzacze multimediów ("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "OSD głośności multimediów"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "Pamięć"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "Mikrofon"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "OSD Wyciszenia Mikrofonu"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "Wyświetlanie prędkości pobierania i wysyłania sieci"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "Nowy"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "Temperatura w nocy"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "Brak"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "Normalny priorytet"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "Brak tacy wyjściowej"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "Stanowisko: "
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "Zasilanie i bezpieczeństwo"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "Potwierdzenie działania zasilania"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "Opcje zasilania"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "Pogorszenie profilu zasilania"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "OSD Profilu Zasilania"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "Skaluj wszystkie rozmiary czcionek"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "Skanuj"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "Wybierz logo launchera"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "Wybierz grubość czcionki"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "Wybierz monitor, aby skonfigurować tapetę"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "Wybierz motyw dźwiękowy systemu"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Wybierz algorytm palety używany dla kolorów tapet."
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "Ustawienia"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: Wyczyść wszystko • Esc: Zamknij"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "Pokaż ponowne uruchomienie DMS"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "Pokaż zawieszenie"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "Przesunięcie rozmiaru"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "Sortuj alfabetycznie"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "Motyw dźwiękowy"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "Odstęp"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "Wspieraj rozwój"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "Powierzchnia"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "Monitorowanie systemu:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "Zasobnik systemowy"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "Ikony obszaru powiadomień systemowych"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "Powiadomienia o toastach systemowych"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "Wtyczki firm trzecich są tworzone przez społeczność i nie są oficjalnie wspierane przez DankMaterialShell.\\n\\nTe wtyczki mogą stanowić zagrożenie dla bezpieczeństwa i prywatności - instaluj na własne ryzyko."
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "Ten widżet zapobiega wyłączaniu zasilania GPU, co może znacznie wpłynąć na żywotność baterii w laptopach. Nie zaleca się używania go na laptopach z hybrydową grafiką."
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "Czas i pogoda"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "Przekroczono limit czasu"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "Aby dokonać aktualizacji, uruchom następujące polecenie:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "Wiadomości toastowe"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "Efekt przejścia"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Wyłącz monitory po"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": "Niedostępny"
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "Efekt wizualny używany przy zmianie tapety"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "Zmieniony wolumen"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "Przełącznik obszarów roboczych"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": "Tak"
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "Masz niezapisane zmiany. Zapisać przed otwarciem pliku?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "Wybierz niestandardowy motyw"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "Wybierz tapetę"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "wydarzenia"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl niedostępny - integracja blokady wymaga połączenia z gniazdem DMS"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "nie wykryto matugen - dynamiczne motywy niedostępne"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "oficjalny"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "Wybierz obraz profilowy"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "Ustawienia"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "Wybierz katalog z tapetami"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• Instaluj tylko z zaufanych źródeł"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": ""
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(Sem nome)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- Monitoração de Sistema sem estado"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- Apoie-nos com uma Estrela ⭐"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1 evento"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "Formato de 24 Horas"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "formato de 24 horas"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "Terceiros"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "Previsão do Tempo de 7 Dias"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "Um arquivo com esse nome já existe. Você quer sobrescrevê-lo?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": ""
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": ""
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "Adicionar Widget"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "Adicionar Widget para "
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": ""
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "Adicionar um VPN ao NetworkManager"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "Todos"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "O dia todo"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Voltar • F1/I: Informações de Arquivo • F10: Ajuda • Esc: Fechar"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "Sempre mostrar porcetagem no OSD"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": ""
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "Os aplicativos são ordenados por frequência de uso, mais recentes, e por último, alfabéticamente."
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "Você tem certeza que quer hibernar o sistema?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "Você tem certeza que deseja sair?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "Você tem certeza que deseja desligar o sistema?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "Você tem certeza que deseja reiniciar o sistema?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "Você tem certeza que deseja suspender o sistema?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": ""
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "Dispositivos de Áudio"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "Ícone de Áudio"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "Dispositivos de Saída de Áudio ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "Detectar automaticamente a sua localização usando o seu endereço de IP"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "Extrair cores automaticamente do papel de parede"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "Esconder automaticamente a barra superior para expandir a tela"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "Nível de bateria e manejamento de energia"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "Vincular o bloqueio de tela aos sinais do DBus do loginctl. Desative se estiver usando um bloqueio de tela externo"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": ""
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "ícone do Bluetooth"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "Configurações do Bluetooth"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "Capacidade"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": ""
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": ""
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": ""
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": ""
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "Sobrescrever Cor"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "Seletor de Cores"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "Temperatura de cor durante o dia"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "Compositor"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "Configuração ativada"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "Controlar mídia que está sendo reproduzida"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": ""
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "Copiar Nome do Processo"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "Ângulo da quina (0 = quina quadrilátera)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": ""
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": ""
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "Customizado"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "Customizar Localização"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "Ações de Energia Customizadas"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "Transparência Customizada"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Transparência da Dank Bar"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Transparência dos Widgets da Dank Bar"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Escala das fontes no Dank Bar"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch não disponível"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": ""
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": ""
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "Exibir um dock com aplicativos que estão sendo utilizados, e que pode ser posicionada no superior, inferior, esquerda ou direita dos cantos da tela"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "Exibir todas as prioridades em aplicativos de tela cheia"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": ""
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": ""
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "Mostrar porcentagem de volume e brilho por padrão nos pop ups de OSD"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "Telas"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "Dock"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "Posição da Dock"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "Transparência da Dock"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "Domínio (opcional)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "Tematização Dinâmica"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "Espaçamento do Canto (0 = canto-a-canto)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": ""
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "Habilitar Temperatura da GPU"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "Ativar WiFi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Habilitar camada de desfoque direcionável ao compositor (namespace: dms:blurwallpaper). Requer configuração manual do niri."
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "Informação do Arquivo"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "Procurar no Texto"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "Procurar na nota..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "Controle de gama não disponível. Necessário DMS API v6+."
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "Github:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "Hibernar"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": ""
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "Tempo entre papéis de parede"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": ""
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "Incluir Transições"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "Matar Processo"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "Lançado pela última vez em %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "Tela de Bloqueio"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "Formato da Tela de Bloqueio"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "Sair"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "Longo Texto"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": ""
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "Configurações do Reprodutor de Mídia"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "Reprodutores de Mídia("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": ""
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "Memória"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": ""
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": ""
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "Monitor de velocidades de download e upload da rede"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "Novo"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "Temperatura Noturna"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": ""
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "Prioridade Normal"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": ""
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": ""
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "Energia & Segurança"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "Confirmação de Ação de Energia"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "Opções de Energia"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "Degradação do Perfil de Energia"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": ""
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "Ajustar todos os tamanhos de fonte"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "Escanear"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "Selecionar Logo do Lançador"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "Selecionar espessura da fonte"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "Selecionar monitor para configurar papel de parede"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "Selecionar tema do som do sistema"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Selecione o algoritmo usado para cores baseadas no papel de parede"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "Configurações"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: Apagar tudo • Esc: Fechar"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": ""
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": ""
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "Ajuste de Tamanho"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "Ordenar Alfabeticamente"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "Tema do Som"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "Espaçador"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "Apoie o Desenvolvimento"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "Superfície"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "Monitoramento do Sistema:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "Bandeja do Sistema"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "Área de ícones de notificações do sistema"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "Notificações toast do sistema"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "Plugins de terceiros são criados pela comunidade e não têm suporte oficial do DankMaterialShell.\\n\\nEsses plugins podem representar riscos à segurança e à privacidade - instale por sua conta e risco."
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "Este widget mantém a GPU ativa, podendo reduzir a duração da bateria. Não recomendado em laptops com gráficos híbridos."
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "Hora & Clima"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": ""
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "Para atualizar, execute o seguinte comando:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "Mensagens Toast"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "Efeito de Transição"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Desligar monitores depois de"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": ""
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "Efeito visual usado na mudança do papel de parede"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "Volume Alterado"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "Seletor de Áreas de Trabalho"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": ""
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "Você tem mudanças não salvas. Deseja salvar antes de abrir um arquivo?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": ""
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": ""
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "eventos"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl não disponível - integração com bloqueio requer conexão de socket DMS"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "matugen não detectado - tematização dinâmica não disponível"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "oficial"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": ""
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": ""
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": ""
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "Instale apenas de fontes confiáveis"
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": ""
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(未命名)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- 无状态系统监控"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- 给个 Star ⭐来表示支持吧"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1个事件"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "24小时制"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "24小时制"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "第三方"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "七日天气预报"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "已存在同名文件,是否覆盖?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": ""
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": ""
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "添加小组件"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "添加小组件到"
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": ""
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "在 NetworkManager 中添加 VPN"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "全部"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "每天"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/退格: 返回 • F1/I: 文件信息 • F10: 帮助 • Esc: 关闭"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "始终显示 OSD 百分比"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "总显示的图标"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "应用按使用频率、最近使用时间和字母顺序排序。"
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "你确定要让系统休眠吗?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "你确定要注销吗?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "你确定要关机吗?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "你确定要重启系统吗?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "你确定要挂起系统吗?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": ""
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "音频设备"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "音量图标"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "音频输出设备 ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "通过 IP 地址自动检测您的位置"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "自动从壁纸中提取颜色"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "自动隐藏顶栏以扩展屏幕可用空间"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "电池电量与电源管理"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "将锁屏绑定到来自 loginctl 的 dbus 信号。如使用外部锁屏程序,请禁用此项"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": ""
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "蓝牙图标"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "蓝牙设置"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "电池容量"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "大小写指示灯"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "选择OSD在屏幕上出现的位置"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": ""
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "在启动时关闭概览"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "覆盖颜色"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "取色器"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "白天模式色温"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "合成器"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "已应用配置"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "控制当前播放的媒体"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "控制所有弹出窗口、模态及其内容层(DankDash、设置、应用抽屉、控制中心等)的不透明度"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "复制进程名"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "圆角半径(0 = 直角)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "圆角半径覆盖"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "打印机盖已打开"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "自定义"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "自定义位置"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "自定义电源操作"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "自定义透明度"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Dank Bar 透明度"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Dank Bar 小组件透明度"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Dank Bar 字体缩放"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch 不可用"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "暗色模式"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "显示名称格式"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "显示一个包含固定和运行中应用的程序坞,可放置在屏幕四边任意位置"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "应用全屏时仍显示所有优先级的通知"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "通过网格而非列表显示电源菜单"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "显示设置 "
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "在OSD弹窗中默认显示音量与亮度数值"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "显示"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "程序坞"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "程序坞位置"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "程序坞透明度"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "域(可选)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "动态主题"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "边缘间距(0 = 紧贴边缘)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "启用状态栏"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "显示 GPU 温度"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "启用 Wi-Fi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "启用合成器可定位的模糊层(命名空间:dms:blurwallpaper),需要手动配置 niri。"
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "文件信息"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "查找文本"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "在便签中查找..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "伽玛控制不可用,需要 DMS API v6+。"
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "Github:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "休眠"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "隐藏延迟 (ms)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "壁纸轮换频率"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": ""
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "包含过渡效果"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "结束进程"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "上次启动于 %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "锁屏"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "锁屏格式"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "注销"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "长文本"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "需要纸张"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "媒体播放器设置"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "媒体播放器 ("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "媒体音量OSD"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "内存"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "麦克风"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "OSD麦克风静音"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "显示网络下载与上传速度"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "新建"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "夜间色温"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "无"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "标准通知"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "未检测到出纸盒"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "位置: "
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "电源与安全"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "电源操作确认"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "电源菜单"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "电源配置性能下降"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "OSD电源配置"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "缩放所有字体大小"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "扫描"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "选择启动器Logo"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "选择字体粗细"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "选择要设置壁纸的屏幕"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "选择系统声音主题"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "选择从壁纸取色的配色方案"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "设置"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: 清空 • Esc: 关闭"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "显示重启 DMS"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "显示挂起"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "尺寸偏移"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "按字母顺序排序"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "声音主题"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "空白占位"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "支持开发"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "表面色"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "系统监测:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "系统托盘"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "系统通知区域图标"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "系统弹出式通知"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "第三方插件由社区开发,DankMaterialShell 不提供官方支持。\\n\\n这些插件可能存在隐私和安全隐患,请自行承担风险。"
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "此组件会阻止 GPU 进入省电状态,可能会显著影响笔记本的电池续航。不建议在配备混合显卡的笔记本上使用。"
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "时间与天气"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "超时"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "请运行以下命令以更新:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "弹出式信息"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "过渡效果"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "在此时间后关闭显示器"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": ""
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "壁纸切换时的动画效果"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "音量变化"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "工作区切换器"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": ""
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "检测到未保存的更改,是否在打开文件前保存?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "选择自定义主题"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "选择壁纸"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "事件"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl 不可用 - 启用锁定集成需连接 DMS socket"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "未检测到 Matugen,动态主题不可用"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "官方"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "选择个人信息图像"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "设置"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "选择壁纸位置"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• 仅从可信来源安装"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": {
|
||||
"%1 DMS bind(s) may be overridden by config binds that come after the include.": ""
|
||||
},
|
||||
"%1 adapter(s), none connected": {
|
||||
"%1 adapter(s), none connected": "%1 個轉接器,未連接"
|
||||
},
|
||||
@@ -26,26 +29,53 @@
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(未命名)"
|
||||
},
|
||||
"- Stateless System Monitoring": {
|
||||
"- Stateless System Monitoring": "- 無狀態系統監控"
|
||||
},
|
||||
"- Support Us With a Star ⭐": {
|
||||
"- Support Us With a Star ⭐": "- 給我們點個 Star ⭐ 來支持我們"
|
||||
"0 = square corners": {
|
||||
"0 = square corners": ""
|
||||
},
|
||||
"1 event": {
|
||||
"1 event": "1 個活動"
|
||||
},
|
||||
"1 minute": {
|
||||
"1 minute": ""
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": ""
|
||||
},
|
||||
"10 minutes": {
|
||||
"10 minutes": ""
|
||||
},
|
||||
"10 seconds": {
|
||||
"10 seconds": ""
|
||||
},
|
||||
"15 seconds": {
|
||||
"15 seconds": ""
|
||||
},
|
||||
"2 minutes": {
|
||||
"2 minutes": ""
|
||||
},
|
||||
"24-Hour Format": {
|
||||
"24-Hour Format": "24 小時制"
|
||||
},
|
||||
"24-hour format": {
|
||||
"24-hour format": "24 小時制"
|
||||
},
|
||||
"3 seconds": {
|
||||
"3 seconds": ""
|
||||
},
|
||||
"30 seconds": {
|
||||
"30 seconds": ""
|
||||
},
|
||||
"3rd party": {
|
||||
"3rd party": "第三方"
|
||||
},
|
||||
"7-Day Forecast": {
|
||||
"7-Day Forecast": "七天氣象預報"
|
||||
"5 minutes": {
|
||||
"5 minutes": ""
|
||||
},
|
||||
"5 seconds": {
|
||||
"5 seconds": ""
|
||||
},
|
||||
"8 seconds": {
|
||||
"8 seconds": ""
|
||||
},
|
||||
"A file with this name already exists. Do you want to overwrite it?": {
|
||||
"A file with this name already exists. Do you want to overwrite it?": "檔案名稱已存在。是否要覆蓋它?"
|
||||
@@ -86,6 +116,9 @@
|
||||
"Active": {
|
||||
"Active": "啟用"
|
||||
},
|
||||
"Active Lock Screen Monitor": {
|
||||
"Active Lock Screen Monitor": ""
|
||||
},
|
||||
"Active: ": {
|
||||
"Active: ": "啟用:"
|
||||
},
|
||||
@@ -107,15 +140,9 @@
|
||||
"Add Widget": {
|
||||
"Add Widget": "新增部件"
|
||||
},
|
||||
"Add Widget to ": {
|
||||
"Add Widget to ": "新增部件到 "
|
||||
},
|
||||
"Add Widget to %1 Section": {
|
||||
"Add Widget to %1 Section": "將部件新增至 %1 部分"
|
||||
},
|
||||
"Add a VPN in NetworkManager": {
|
||||
"Add a VPN in NetworkManager": "新增VPN至網路管理器"
|
||||
},
|
||||
"Add a border around the dock": {
|
||||
"Add a border around the dock": ""
|
||||
},
|
||||
@@ -128,6 +155,9 @@
|
||||
"All": {
|
||||
"All": "所有"
|
||||
},
|
||||
"All Monitors": {
|
||||
"All Monitors": ""
|
||||
},
|
||||
"All day": {
|
||||
"All day": "全天"
|
||||
},
|
||||
@@ -137,8 +167,8 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: 返回 • F1/I: 檔案資訊 • F10: 幫助 • Esc: 關閉"
|
||||
},
|
||||
"Always Show OSD Percentage": {
|
||||
"Always Show OSD Percentage": "OSD 始終顯示百分比"
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
"Always on icons": {
|
||||
"Always on icons": "始終顯示圖示"
|
||||
@@ -179,21 +209,6 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": {
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "應用程式按使用頻率、最後使用時間、字母順序排列。"
|
||||
},
|
||||
"Are you sure you want to hibernate the system?": {
|
||||
"Are you sure you want to hibernate the system?": "你確定要進入系統休眠嗎?"
|
||||
},
|
||||
"Are you sure you want to log out?": {
|
||||
"Are you sure you want to log out?": "你確定要登出嗎?"
|
||||
},
|
||||
"Are you sure you want to power off the system?": {
|
||||
"Are you sure you want to power off the system?": "你確定要關機嗎?"
|
||||
},
|
||||
"Are you sure you want to reboot the system?": {
|
||||
"Are you sure you want to reboot the system?": "你確定要重新啟動嗎?"
|
||||
},
|
||||
"Are you sure you want to suspend the system?": {
|
||||
"Are you sure you want to suspend the system?": "你確定要暫停系統嗎?"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": "音訊"
|
||||
},
|
||||
@@ -206,9 +221,6 @@
|
||||
"Audio Devices": {
|
||||
"Audio Devices": "音訊設備"
|
||||
},
|
||||
"Audio Icon": {
|
||||
"Audio Icon": "音訊圖示"
|
||||
},
|
||||
"Audio Output Devices (": {
|
||||
"Audio Output Devices (": "音訊輸出設備 ("
|
||||
},
|
||||
@@ -284,9 +296,6 @@
|
||||
"Automatically determine your location using your IP address": {
|
||||
"Automatically determine your location using your IP address": "使用您的 IP 位址自動確定您的位置"
|
||||
},
|
||||
"Automatically extract colors from wallpaper": {
|
||||
"Automatically extract colors from wallpaper": "自動從桌布中提取顏色"
|
||||
},
|
||||
"Automatically hide the top bar to expand screen real estate": {
|
||||
"Automatically hide the top bar to expand screen real estate": "自動隱藏頂部欄以擴大螢幕空間"
|
||||
},
|
||||
@@ -335,6 +344,9 @@
|
||||
"Battery level and power management": {
|
||||
"Battery level and power management": "電量與電源管理"
|
||||
},
|
||||
"Behavior": {
|
||||
"Behavior": ""
|
||||
},
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": {
|
||||
"Bind lock screen to dbus signals from loginctl. Disable if using an external lock screen": "將鎖定畫面綁定到 loginctl 的 dbus 訊號。如果使用外部鎖屏,請停用"
|
||||
},
|
||||
@@ -347,9 +359,6 @@
|
||||
"Bluetooth": {
|
||||
"Bluetooth": "藍牙"
|
||||
},
|
||||
"Bluetooth Icon": {
|
||||
"Bluetooth Icon": "藍芽圖示"
|
||||
},
|
||||
"Bluetooth Settings": {
|
||||
"Bluetooth Settings": "藍芽設定"
|
||||
},
|
||||
@@ -434,6 +443,9 @@
|
||||
"Capacity": {
|
||||
"Capacity": "容量"
|
||||
},
|
||||
"Caps Lock": {
|
||||
"Caps Lock": ""
|
||||
},
|
||||
"Caps Lock Indicator": {
|
||||
"Caps Lock Indicator": "大小寫鎖定指示器"
|
||||
},
|
||||
@@ -488,6 +500,9 @@
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "選擇螢幕顯示出現在螢幕上的位置"
|
||||
},
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": {
|
||||
"Choose which monitor shows the lock screen interface. Other monitors will display a solid color for OLED burn-in protection.": ""
|
||||
},
|
||||
"Cipher": {
|
||||
"Cipher": "密碼"
|
||||
},
|
||||
@@ -530,12 +545,21 @@
|
||||
"Close Overview on Launch": {
|
||||
"Close Overview on Launch": "啟動時關閉概覽"
|
||||
},
|
||||
"Color": {
|
||||
"Color": ""
|
||||
},
|
||||
"Color Mode": {
|
||||
"Color Mode": ""
|
||||
},
|
||||
"Color Override": {
|
||||
"Color Override": "顏色覆蓋"
|
||||
},
|
||||
"Color Picker": {
|
||||
"Color Picker": "顏色選擇器"
|
||||
},
|
||||
"Color displayed on monitors without the lock screen": {
|
||||
"Color displayed on monitors without the lock screen": ""
|
||||
},
|
||||
"Color temperature for day time": {
|
||||
"Color temperature for day time": "白天螢幕的顏色溫度"
|
||||
},
|
||||
@@ -578,6 +602,9 @@
|
||||
"Compositor": {
|
||||
"Compositor": "合成器"
|
||||
},
|
||||
"Config action: %1": {
|
||||
"Config action: %1": ""
|
||||
},
|
||||
"Configuration activated": {
|
||||
"Configuration activated": "配置已啟動"
|
||||
},
|
||||
@@ -629,6 +656,9 @@
|
||||
"Control currently playing media": {
|
||||
"Control currently playing media": "控制目前播放器"
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers": {
|
||||
"Controls opacity of all popouts, modals, and their content layers": ""
|
||||
},
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": {
|
||||
"Controls opacity of all popouts, modals, and their content layers (DankDash, Settings, App Drawer, Control Center, etc.)": "控制所有彈出式介面、模態對話框及其內容層級的不透明度 (適用於 DankDash、設定、應用程式抽屜、控制中心等)"
|
||||
},
|
||||
@@ -650,12 +680,15 @@
|
||||
"Copy Process Name": {
|
||||
"Copy Process Name": "複製程序名"
|
||||
},
|
||||
"Corner Radius (0 = square corners)": {
|
||||
"Corner Radius (0 = square corners)": "圓角半徑 (0 = 方角)"
|
||||
"Corner Radius": {
|
||||
"Corner Radius": ""
|
||||
},
|
||||
"Corner Radius Override": {
|
||||
"Corner Radius Override": "圓角半徑覆寫"
|
||||
},
|
||||
"Corners & Background": {
|
||||
"Corners & Background": ""
|
||||
},
|
||||
"Cover Open": {
|
||||
"Cover Open": "上蓋開啟"
|
||||
},
|
||||
@@ -686,12 +719,33 @@
|
||||
"Custom": {
|
||||
"Custom": "自訂"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": ""
|
||||
},
|
||||
"Custom Hibernate Command": {
|
||||
"Custom Hibernate Command": ""
|
||||
},
|
||||
"Custom Location": {
|
||||
"Custom Location": "自訂位置"
|
||||
},
|
||||
"Custom Lock Command": {
|
||||
"Custom Lock Command": ""
|
||||
},
|
||||
"Custom Logout Command": {
|
||||
"Custom Logout Command": ""
|
||||
},
|
||||
"Custom Power Actions": {
|
||||
"Custom Power Actions": "自訂電源選項"
|
||||
},
|
||||
"Custom Power Off Command": {
|
||||
"Custom Power Off Command": ""
|
||||
},
|
||||
"Custom Reboot Command": {
|
||||
"Custom Reboot Command": ""
|
||||
},
|
||||
"Custom Suspend Command": {
|
||||
"Custom Suspend Command": ""
|
||||
},
|
||||
"Custom Transparency": {
|
||||
"Custom Transparency": "自訂透明度"
|
||||
},
|
||||
@@ -734,18 +788,15 @@
|
||||
"Dank Bar": {
|
||||
"Dank Bar": "Dank Bar"
|
||||
},
|
||||
"Dank Bar Transparency": {
|
||||
"Dank Bar Transparency": "Dank Bar 透明度"
|
||||
},
|
||||
"Dank Bar Widget Transparency": {
|
||||
"Dank Bar Widget Transparency": "Dank Bar 部件透明度"
|
||||
},
|
||||
"DankBar Font Scale": {
|
||||
"DankBar Font Scale": "Dank Bar 字體縮放"
|
||||
},
|
||||
"DankSearch not available": {
|
||||
"DankSearch not available": "DankSearch 不可用"
|
||||
},
|
||||
"DankShell & System Icons (requires restart)": {
|
||||
"DankShell & System Icons (requires restart)": ""
|
||||
},
|
||||
"Dark Mode": {
|
||||
"Dark Mode": "深色主題"
|
||||
},
|
||||
@@ -842,8 +893,8 @@
|
||||
"Display Name Format": {
|
||||
"Display Name Format": "顯示名稱格式"
|
||||
},
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": {
|
||||
"Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen": "顯示一個帶有固定和正在運行的應用程式的 Dock,這些應用程式可以放置在螢幕的頂部、底部、左側或右側邊緣"
|
||||
"Display a dock with pinned and running applications": {
|
||||
"Display a dock with pinned and running applications": ""
|
||||
},
|
||||
"Display all priorities over fullscreen apps": {
|
||||
"Display all priorities over fullscreen apps": "顯示全螢幕應用程式上的所有優先級"
|
||||
@@ -863,11 +914,14 @@
|
||||
"Display power menu actions in a grid instead of a list": {
|
||||
"Display power menu actions in a grid instead of a list": "以網格而非列表顯示電源選單操作"
|
||||
},
|
||||
"Display seconds in the clock": {
|
||||
"Display seconds in the clock": ""
|
||||
},
|
||||
"Display settings for ": {
|
||||
"Display settings for ": "顯示設定適用於"
|
||||
},
|
||||
"Display volume and brightness percentage values by default in OSD popups": {
|
||||
"Display volume and brightness percentage values by default in OSD popups": "在 OSD 彈出視窗中預設顯示音量和亮度百分比值"
|
||||
"Display volume and brightness percentage values in OSD popups": {
|
||||
"Display volume and brightness percentage values in OSD popups": ""
|
||||
},
|
||||
"Displays": {
|
||||
"Displays": "螢幕"
|
||||
@@ -884,12 +938,21 @@
|
||||
"Dock": {
|
||||
"Dock": "Dock"
|
||||
},
|
||||
"Dock & Launcher": {
|
||||
"Dock & Launcher": ""
|
||||
},
|
||||
"Dock Position": {
|
||||
"Dock Position": "Dock 位置"
|
||||
},
|
||||
"Dock Transparency": {
|
||||
"Dock Transparency": "Dock 透明度"
|
||||
},
|
||||
"Dock Visibility": {
|
||||
"Dock Visibility": ""
|
||||
},
|
||||
"Docs": {
|
||||
"Docs": ""
|
||||
},
|
||||
"Domain (optional)": {
|
||||
"Domain (optional)": "網域 (可選)"
|
||||
},
|
||||
@@ -920,8 +983,8 @@
|
||||
"Dusk (Nautical Twilight)": {
|
||||
"Dusk (Nautical Twilight)": ""
|
||||
},
|
||||
"Dynamic Theming": {
|
||||
"Dynamic Theming": "動態主題"
|
||||
"Edge Spacing": {
|
||||
"Edge Spacing": ""
|
||||
},
|
||||
"Edge Spacing (0 = edge-to-edge)": {
|
||||
"Edge Spacing (0 = edge-to-edge)": "邊緣間隔 (0 = 無間隔)"
|
||||
@@ -938,6 +1001,12 @@
|
||||
"Enable Bar": {
|
||||
"Enable Bar": "啟用欄"
|
||||
},
|
||||
"Enable Border": {
|
||||
"Enable Border": ""
|
||||
},
|
||||
"Enable Do Not Disturb": {
|
||||
"Enable Do Not Disturb": ""
|
||||
},
|
||||
"Enable GPU Temperature": {
|
||||
"Enable GPU Temperature": "啟用 GPU 溫度"
|
||||
},
|
||||
@@ -953,6 +1022,9 @@
|
||||
"Enable WiFi": {
|
||||
"Enable WiFi": "啟用 WiFi"
|
||||
},
|
||||
"Enable Widget Outline": {
|
||||
"Enable Widget Outline": ""
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "啟用合成器可定位的模糊圖層(命名空間:dms:blurwallpaper)。需要手動配置 niri。"
|
||||
},
|
||||
@@ -1148,12 +1220,21 @@
|
||||
"File Information": {
|
||||
"File Information": "檔案資訊"
|
||||
},
|
||||
"Files": {
|
||||
"Files": ""
|
||||
},
|
||||
"Find in Text": {
|
||||
"Find in Text": "尋找文字"
|
||||
},
|
||||
"Find in note...": {
|
||||
"Find in note...": "尋找筆記..."
|
||||
},
|
||||
"Fine-tune animation timing in milliseconds": {
|
||||
"Fine-tune animation timing in milliseconds": ""
|
||||
},
|
||||
"First Time Setup": {
|
||||
"First Time Setup": ""
|
||||
},
|
||||
"Fix Now": {
|
||||
"Fix Now": ""
|
||||
},
|
||||
@@ -1226,6 +1307,9 @@
|
||||
"Gamma control not available. Requires DMS API v6+.": {
|
||||
"Gamma control not available. Requires DMS API v6+.": "Gamma 控制不可用。需要 DMS API v6+。"
|
||||
},
|
||||
"GitHub": {
|
||||
"GitHub": ""
|
||||
},
|
||||
"Github:": {
|
||||
"Github:": "Github:"
|
||||
},
|
||||
@@ -1277,6 +1361,9 @@
|
||||
"Hibernate": {
|
||||
"Hibernate": "休眠"
|
||||
},
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide Delay (ms)": {
|
||||
"Hide Delay (ms)": "隱藏延遲 (毫秒)"
|
||||
},
|
||||
@@ -1310,6 +1397,9 @@
|
||||
"Hourly Forecast": {
|
||||
"Hourly Forecast": ""
|
||||
},
|
||||
"How long to hold the button to confirm the action": {
|
||||
"How long to hold the button to confirm the action": ""
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "多久更換一次桌布"
|
||||
},
|
||||
@@ -1355,6 +1445,9 @@
|
||||
"Import VPN": {
|
||||
"Import VPN": "匯入 VPN"
|
||||
},
|
||||
"Inactive Monitor Color": {
|
||||
"Inactive Monitor Color": ""
|
||||
},
|
||||
"Include Transitions": {
|
||||
"Include Transitions": "包括過渡"
|
||||
},
|
||||
@@ -1424,6 +1517,9 @@
|
||||
"Kill Process": {
|
||||
"Kill Process": "結束程序"
|
||||
},
|
||||
"Ko-fi": {
|
||||
"Ko-fi": ""
|
||||
},
|
||||
"Last launched %1": {
|
||||
"Last launched %1": "上次啟動於 %1"
|
||||
},
|
||||
@@ -1499,6 +1595,9 @@
|
||||
"Lock Screen": {
|
||||
"Lock Screen": "鎖定螢幕"
|
||||
},
|
||||
"Lock Screen Display": {
|
||||
"Lock Screen Display": ""
|
||||
},
|
||||
"Lock Screen Format": {
|
||||
"Lock Screen Format": "鎖定螢幕格式"
|
||||
},
|
||||
@@ -1508,6 +1607,9 @@
|
||||
"Log Out": {
|
||||
"Log Out": "登出"
|
||||
},
|
||||
"Long": {
|
||||
"Long": ""
|
||||
},
|
||||
"Long Text": {
|
||||
"Long Text": "長文字"
|
||||
},
|
||||
@@ -1586,15 +1688,24 @@
|
||||
"Media Needed": {
|
||||
"Media Needed": "需要媒體"
|
||||
},
|
||||
"Media Player": {
|
||||
"Media Player": ""
|
||||
},
|
||||
"Media Player Settings": {
|
||||
"Media Player Settings": "媒體播放設定"
|
||||
},
|
||||
"Media Players (": {
|
||||
"Media Players (": "媒體播放 ("
|
||||
},
|
||||
"Media Volume": {
|
||||
"Media Volume": ""
|
||||
},
|
||||
"Media Volume OSD": {
|
||||
"Media Volume OSD": "媒體音量 OSD"
|
||||
},
|
||||
"Medium": {
|
||||
"Medium": ""
|
||||
},
|
||||
"Memory": {
|
||||
"Memory": "記憶體"
|
||||
},
|
||||
@@ -1607,6 +1718,9 @@
|
||||
"Microphone": {
|
||||
"Microphone": "麥克風"
|
||||
},
|
||||
"Microphone Mute": {
|
||||
"Microphone Mute": ""
|
||||
},
|
||||
"Microphone Mute OSD": {
|
||||
"Microphone Mute OSD": "麥克風靜音 OSD"
|
||||
},
|
||||
@@ -1691,6 +1805,9 @@
|
||||
"Network download and upload speed display": {
|
||||
"Network download and upload speed display": "顯示網路下載跟上傳速度"
|
||||
},
|
||||
"Never": {
|
||||
"Never": ""
|
||||
},
|
||||
"New": {
|
||||
"New": "新"
|
||||
},
|
||||
@@ -1715,6 +1832,9 @@
|
||||
"Night Temperature": {
|
||||
"Night Temperature": "夜間色溫"
|
||||
},
|
||||
"Niri Integration": {
|
||||
"Niri Integration": ""
|
||||
},
|
||||
"Niri compositor actions (focus, move, etc.)": {
|
||||
"Niri compositor actions (focus, move, etc.)": ""
|
||||
},
|
||||
@@ -1790,6 +1910,9 @@
|
||||
"None": {
|
||||
"None": "無"
|
||||
},
|
||||
"Normal Font": {
|
||||
"Normal Font": ""
|
||||
},
|
||||
"Normal Priority": {
|
||||
"Normal Priority": "普通優先級"
|
||||
},
|
||||
@@ -1898,6 +2021,9 @@
|
||||
"Output Tray Missing": {
|
||||
"Output Tray Missing": "輸出托盤遺失"
|
||||
},
|
||||
"Overridden by config": {
|
||||
"Overridden by config": ""
|
||||
},
|
||||
"Override": {
|
||||
"Override": ""
|
||||
},
|
||||
@@ -2015,9 +2141,15 @@
|
||||
"Position: ": {
|
||||
"Position: ": "位置:"
|
||||
},
|
||||
"Possible Override Conflicts": {
|
||||
"Possible Override Conflicts": ""
|
||||
},
|
||||
"Power & Security": {
|
||||
"Power & Security": "電源與安全"
|
||||
},
|
||||
"Power & Sleep": {
|
||||
"Power & Sleep": ""
|
||||
},
|
||||
"Power Action Confirmation": {
|
||||
"Power Action Confirmation": "電源操作確認"
|
||||
},
|
||||
@@ -2030,12 +2162,18 @@
|
||||
"Power Options": {
|
||||
"Power Options": "電源選項"
|
||||
},
|
||||
"Power Profile": {
|
||||
"Power Profile": ""
|
||||
},
|
||||
"Power Profile Degradation": {
|
||||
"Power Profile Degradation": "電源配置降級"
|
||||
},
|
||||
"Power Profile OSD": {
|
||||
"Power Profile OSD": "電源設定檔 OSD"
|
||||
},
|
||||
"Power source": {
|
||||
"Power source": ""
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": ""
|
||||
},
|
||||
@@ -2240,6 +2378,9 @@
|
||||
"Scale all font sizes": {
|
||||
"Scale all font sizes": "縮放所有字體大小"
|
||||
},
|
||||
"Scale all font sizes throughout the shell": {
|
||||
"Scale all font sizes throughout the shell": ""
|
||||
},
|
||||
"Scan": {
|
||||
"Scan": "掃描"
|
||||
},
|
||||
@@ -2291,6 +2432,9 @@
|
||||
"Select Application": {
|
||||
"Select Application": ""
|
||||
},
|
||||
"Select Bar": {
|
||||
"Select Bar": ""
|
||||
},
|
||||
"Select Launcher Logo": {
|
||||
"Select Launcher Logo": "選擇啟動器 Logo"
|
||||
},
|
||||
@@ -2318,6 +2462,9 @@
|
||||
"Select font weight": {
|
||||
"Select font weight": "選擇字體粗細"
|
||||
},
|
||||
"Select font weight for UI text": {
|
||||
"Select font weight for UI text": ""
|
||||
},
|
||||
"Select monitor to configure wallpaper": {
|
||||
"Select monitor to configure wallpaper": "選擇指定螢幕桌布"
|
||||
},
|
||||
@@ -2330,6 +2477,9 @@
|
||||
"Select system sound theme": {
|
||||
"Select system sound theme": "選擇系統音效主題"
|
||||
},
|
||||
"Select the font family for UI text": {
|
||||
"Select the font family for UI text": ""
|
||||
},
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "請選擇調色板演算法,以桌布的顏色為基底。"
|
||||
},
|
||||
@@ -2360,12 +2510,18 @@
|
||||
"Settings": {
|
||||
"Settings": "設定"
|
||||
},
|
||||
"Setup": {
|
||||
"Setup": ""
|
||||
},
|
||||
"Shell": {
|
||||
"Shell": ""
|
||||
},
|
||||
"Shift+Del: Clear All • Esc: Close": {
|
||||
"Shift+Del: Clear All • Esc: Close": "Shift+Del: 清除所有 • Esc: 關閉"
|
||||
},
|
||||
"Short": {
|
||||
"Short": ""
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": ""
|
||||
},
|
||||
@@ -2405,6 +2561,9 @@
|
||||
"Show Restart DMS": {
|
||||
"Show Restart DMS": "顯示重新啟動 DMS"
|
||||
},
|
||||
"Show Seconds": {
|
||||
"Show Seconds": ""
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "顯示暫停"
|
||||
},
|
||||
@@ -2498,12 +2657,21 @@
|
||||
"Size Offset": {
|
||||
"Size Offset": "大小偏移"
|
||||
},
|
||||
"Sizing": {
|
||||
"Sizing": ""
|
||||
},
|
||||
"Sort Alphabetically": {
|
||||
"Sort Alphabetically": "按字母順序排序"
|
||||
},
|
||||
"Sorting & Layout": {
|
||||
"Sorting & Layout": ""
|
||||
},
|
||||
"Sound Theme": {
|
||||
"Sound Theme": "音效主題"
|
||||
},
|
||||
"Sounds": {
|
||||
"Sounds": ""
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "空白間隔"
|
||||
},
|
||||
@@ -2552,6 +2720,9 @@
|
||||
"Support Development": {
|
||||
"Support Development": "支援開發"
|
||||
},
|
||||
"Suppress notification popups while enabled": {
|
||||
"Suppress notification popups while enabled": ""
|
||||
},
|
||||
"Surface": {
|
||||
"Surface": "表面"
|
||||
},
|
||||
@@ -2591,6 +2762,9 @@
|
||||
"System Monitoring:": {
|
||||
"System Monitoring:": "系統監視器:"
|
||||
},
|
||||
"System Sounds": {
|
||||
"System Sounds": ""
|
||||
},
|
||||
"System Tray": {
|
||||
"System Tray": "系統匣"
|
||||
},
|
||||
@@ -2609,6 +2783,9 @@
|
||||
"System notification area icons": {
|
||||
"System notification area icons": "顯示常駐程式狀態圖示和系統通知"
|
||||
},
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": {
|
||||
"System sounds are not available. Install canberra-gtk-play for sound support.": ""
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "系統快顯通知"
|
||||
},
|
||||
@@ -2657,6 +2834,9 @@
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": {
|
||||
"Third-party plugins are created by the community and are not officially supported by DankMaterialShell.\\n\\nThese plugins may pose security and privacy risks - install at your own risk.": "第三方插件由社群創建,不受 DankMaterialShell 官方支援。\\n\\n這些插件可能會帶來安全性和隱私風險 - 安裝後風險自負。"
|
||||
},
|
||||
"This bind is overridden by config.kdl": {
|
||||
"This bind is overridden by config.kdl": ""
|
||||
},
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": {
|
||||
"This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.": "此部件可防止 GPU 電源關閉,這會嚴重影響筆記型電腦的電池續航時間。不建議在配備混合顯示卡的筆記型電腦上使用此功能。"
|
||||
},
|
||||
@@ -2669,9 +2849,21 @@
|
||||
"Time & Weather": {
|
||||
"Time & Weather": "時間與天氣"
|
||||
},
|
||||
"Time Format": {
|
||||
"Time Format": ""
|
||||
},
|
||||
"Timed Out": {
|
||||
"Timed Out": "逾時"
|
||||
},
|
||||
"Timeout for critical priority notifications": {
|
||||
"Timeout for critical priority notifications": ""
|
||||
},
|
||||
"Timeout for low priority notifications": {
|
||||
"Timeout for low priority notifications": ""
|
||||
},
|
||||
"Timeout for normal priority notifications": {
|
||||
"Timeout for normal priority notifications": ""
|
||||
},
|
||||
"Title": {
|
||||
"Title": ""
|
||||
},
|
||||
@@ -2681,6 +2873,9 @@
|
||||
"To update, run the following command:": {
|
||||
"To update, run the following command:": "若要更新,請執行以下命令:"
|
||||
},
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": {
|
||||
"To use this DMS bind, remove or change the keybind in your config.kdl": ""
|
||||
},
|
||||
"Toast Messages": {
|
||||
"Toast Messages": "快顯通知"
|
||||
},
|
||||
@@ -2720,12 +2915,21 @@
|
||||
"Transition Effect": {
|
||||
"Transition Effect": "切換動畫效果"
|
||||
},
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "關閉螢幕之後"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
"Typography & Motion": {
|
||||
"Typography & Motion": ""
|
||||
},
|
||||
"Unavailable": {
|
||||
"Unavailable": "不可用"
|
||||
},
|
||||
@@ -2867,6 +3071,9 @@
|
||||
"Visual effect used when wallpaper changes": {
|
||||
"Visual effect used when wallpaper changes": "桌布變更時所使用的視覺效果"
|
||||
},
|
||||
"Volume": {
|
||||
"Volume": ""
|
||||
},
|
||||
"Volume Changed": {
|
||||
"Volume Changed": "音量改變"
|
||||
},
|
||||
@@ -2969,6 +3176,12 @@
|
||||
"Workspace Switcher": {
|
||||
"Workspace Switcher": "工作區切換器"
|
||||
},
|
||||
"Workspaces": {
|
||||
"Workspaces": ""
|
||||
},
|
||||
"Workspaces & Widgets": {
|
||||
"Workspaces & Widgets": ""
|
||||
},
|
||||
"Yes": {
|
||||
"Yes": "是"
|
||||
},
|
||||
@@ -2984,12 +3197,18 @@
|
||||
"You have unsaved changes. Save before opening a file?": {
|
||||
"You have unsaved changes. Save before opening a file?": "您有未儲存的變更。是否先保存再開檔案?"
|
||||
},
|
||||
"apps": {
|
||||
"apps": ""
|
||||
},
|
||||
"custom theme file browser title": {
|
||||
"Select Custom Theme": "選擇自訂主題"
|
||||
},
|
||||
"dark mode wallpaper file browser title | light mode wallpaper file browser title | wallpaper file browser title": {
|
||||
"Select Wallpaper": "選擇桌布"
|
||||
},
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": {
|
||||
"dms/binds.kdl is not included in config.kdl. Custom keybinds will not work until this is fixed.": ""
|
||||
},
|
||||
@@ -3005,18 +3224,27 @@
|
||||
"events": {
|
||||
"events": "活動"
|
||||
},
|
||||
"files": {
|
||||
"files": ""
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl 不可用 - 鎖定整合需要 DMS 套接字連接"
|
||||
},
|
||||
"matugen not detected - dynamic theming unavailable": {
|
||||
"matugen not detected - dynamic theming unavailable": "未偵測到 matugen - 動態主題不可用"
|
||||
},
|
||||
"minutes": {
|
||||
"minutes": ""
|
||||
},
|
||||
"official": {
|
||||
"official": "官方"
|
||||
},
|
||||
"profile image file browser title": {
|
||||
"Select Profile Image": "選擇個人資料圖片"
|
||||
},
|
||||
"seconds": {
|
||||
"seconds": ""
|
||||
},
|
||||
"settings window title": {
|
||||
"Settings": "設定"
|
||||
},
|
||||
@@ -3029,6 +3257,15 @@
|
||||
"wallpaper directory file browser title": {
|
||||
"Select Wallpaper Directory": "選擇桌布目錄"
|
||||
},
|
||||
"wallpaper settings disable description": {
|
||||
"Use an external wallpaper manager like swww, hyprpaper, or swaybg.": ""
|
||||
},
|
||||
"wallpaper settings disable toggle": {
|
||||
"Disable Built-in Wallpapers": ""
|
||||
},
|
||||
"wallpaper settings external management": {
|
||||
"External Wallpaper Management": ""
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "• 僅從受信任的來源安裝"
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user