From 62bd6e41ef885aef4dee45874a9a525adddfc2e6 Mon Sep 17 00:00:00 2001 From: bbedward Date: Wed, 3 Dec 2025 18:17:06 -0500 Subject: [PATCH] settings: break out dank bar widgets --- .../Modals/Settings/SettingsContent.qml | 18 + quickshell/Modals/Settings/SettingsModal.qml | 2 +- .../Modals/Settings/SettingsSidebar.qml | 13 +- quickshell/Modules/Settings/DankBarTab.qml | 3924 ++++------------- quickshell/Modules/Settings/WidgetsTab.qml | 1181 +++++ quickshell/Widgets/DankToggle.qml | 2 +- quickshell/translations/en.json | 442 +- quickshell/translations/poexports/es.json | 79 +- quickshell/translations/poexports/it.json | 79 +- quickshell/translations/poexports/ja.json | 79 +- quickshell/translations/poexports/pl.json | 79 +- quickshell/translations/poexports/pt.json | 79 +- quickshell/translations/poexports/tr.json | 79 +- quickshell/translations/poexports/zh_CN.json | 79 +- quickshell/translations/poexports/zh_TW.json | 79 +- quickshell/translations/template.json | 81 +- 16 files changed, 2521 insertions(+), 3774 deletions(-) create mode 100644 quickshell/Modules/Settings/WidgetsTab.qml diff --git a/quickshell/Modals/Settings/SettingsContent.qml b/quickshell/Modals/Settings/SettingsContent.qml index 1cedfcf9..bc128bb0 100644 --- a/quickshell/Modals/Settings/SettingsContent.qml +++ b/quickshell/Modals/Settings/SettingsContent.qml @@ -381,5 +381,23 @@ FocusScope { } } } + + 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()); + } + } + } } } diff --git a/quickshell/Modals/Settings/SettingsModal.qml b/quickshell/Modals/Settings/SettingsModal.qml index 5e2da495..aba45805 100644 --- a/quickshell/Modals/Settings/SettingsModal.qml +++ b/quickshell/Modals/Settings/SettingsModal.qml @@ -41,7 +41,7 @@ FloatingWindow { title: I18n.tr("Settings", "settings window title") minimumSize: Qt.size(500, 400) implicitWidth: 800 - implicitHeight: 875 + implicitHeight: 940 color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency) visible: false diff --git a/quickshell/Modals/Settings/SettingsSidebar.qml b/quickshell/Modals/Settings/SettingsSidebar.qml index 58efad36..67349bde 100644 --- a/quickshell/Modals/Settings/SettingsSidebar.qml +++ b/quickshell/Modals/Settings/SettingsSidebar.qml @@ -52,7 +52,18 @@ Rectangle { "id": "dankbar", "text": I18n.tr("Dank Bar"), "icon": "toolbar", - "tabIndex": 3 + "children": [ + { + "text": I18n.tr("Settings"), + "icon": "tune", + "tabIndex": 3 + }, + { + "text": I18n.tr("Widgets"), + "icon": "widgets", + "tabIndex": 22 + } + ] }, { "id": "workspaces_widgets", diff --git a/quickshell/Modules/Settings/DankBarTab.qml b/quickshell/Modules/Settings/DankBarTab.qml index 40bf55a6..9521ad5a 100644 --- a/quickshell/Modules/Settings/DankBarTab.qml +++ b/quickshell/Modules/Settings/DankBarTab.qml @@ -4,6 +4,7 @@ import Quickshell import qs.Common import qs.Services import qs.Widgets +import qs.Modules.Settings.Widgets Item { id: dankBarTab @@ -11,10 +12,6 @@ Item { property var parentModal: null property string selectedBarId: "default" - DankTooltipV2 { - id: sharedTooltip - } - property var selectedBarConfig: { selectedBarId; SettingsData.barConfigs; @@ -39,16 +36,14 @@ Item { }); verticalBars.forEach(bar => { - if (bar.enabled) { - SettingsData.updateBarConfig(bar.id, { - enabled: false - }); - Qt.callLater(() => { - SettingsData.updateBarConfig(bar.id, { - enabled: true - }); - }); - } + if (!bar.enabled) + return; + SettingsData.updateBarConfig(bar.id, { + enabled: false + }); + Qt.callLater(() => SettingsData.updateBarConfig(bar.id, { + enabled: true + })); }); } } @@ -110,11 +105,9 @@ Item { interval: 100 repeat: false property real pendingValue: 12 - onTriggered: { - SettingsData.updateBarConfig(selectedBarId, { - gothCornerRadiusValue: pendingValue - }); - } + onTriggered: SettingsData.updateBarConfig(selectedBarId, { + gothCornerRadiusValue: pendingValue + }) } Timer { @@ -122,11 +115,9 @@ Item { interval: 100 repeat: false property real pendingValue: 1.0 - onTriggered: { - SettingsData.updateBarConfig(selectedBarId, { - borderOpacity: pendingValue - }); - } + onTriggered: SettingsData.updateBarConfig(selectedBarId, { + borderOpacity: pendingValue + }) } Timer { @@ -134,11 +125,9 @@ Item { interval: 100 repeat: false property real pendingValue: 1 - onTriggered: { - SettingsData.updateBarConfig(selectedBarId, { - borderThickness: pendingValue - }); - } + onTriggered: SettingsData.updateBarConfig(selectedBarId, { + borderThickness: pendingValue + }) } Timer { @@ -146,11 +135,9 @@ Item { interval: 100 repeat: false property real pendingValue: 1.0 - onTriggered: { - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineOpacity: pendingValue - }); - } + onTriggered: SettingsData.updateBarConfig(selectedBarId, { + widgetOutlineOpacity: pendingValue + }) } Timer { @@ -158,11 +145,9 @@ Item { interval: 100 repeat: false property real pendingValue: 1 - onTriggered: { - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineThickness: pendingValue - }); - } + onTriggered: SettingsData.updateBarConfig(selectedBarId, { + widgetOutlineThickness: pendingValue + }) } Timer { @@ -191,8 +176,19 @@ Item { } } - // ! Hacky workaround because we want to re-register any vertical bars after changing a hBar - // ! That allows them to re-make with the right exclusiveZone + Timer { + id: fontScaleDebounce + interval: 100 + repeat: false + property real pendingValue: 1.0 + onTriggered: { + SettingsData.updateBarConfig(selectedBarId, { + fontScale: pendingValue + }); + notifyHorizontalBarChange(); + } + } + function notifyHorizontalBarChange() { if (selectedBarIsVertical) return; @@ -200,8 +196,7 @@ Item { } function createNewBar() { - const barCount = SettingsData.barConfigs.length; - if (barCount >= 4) + if (SettingsData.barConfigs.length >= 4) return; const defaultBar = SettingsData.getBarConfig("default"); if (!defaultBar) @@ -209,7 +204,7 @@ Item { const newId = "bar" + Date.now(); const newBar = { id: newId, - name: "Bar " + (barCount + 1), + name: "Bar " + (SettingsData.barConfigs.length + 1), enabled: true, position: defaultBar.position ?? 0, screenPreferences: [], @@ -289,823 +284,6 @@ Item { }); } - function getWidgetsForSection(sectionId) { - switch (sectionId) { - case "left": - return selectedBarConfig?.leftWidgets || []; - case "center": - return selectedBarConfig?.centerWidgets || []; - case "right": - return selectedBarConfig?.rightWidgets || []; - default: - return []; - } - } - - function setWidgetsForSection(sectionId, widgets) { - switch (sectionId) { - case "left": - SettingsData.updateBarConfig(selectedBarId, { - leftWidgets: widgets - }); - break; - case "center": - SettingsData.updateBarConfig(selectedBarId, { - centerWidgets: widgets - }); - break; - case "right": - SettingsData.updateBarConfig(selectedBarId, { - rightWidgets: widgets - }); - break; - } - } - - function getWidgetsForPopup() { - return baseWidgetDefinitions.filter(widget => { - if (widget.warning && widget.warning.includes("Plugin is disabled")) - return false; - if (widget.enabled === false) - return false; - return true; - }); - } - - property var baseWidgetDefinitions: { - var coreWidgets = [ - { - "id": "layout", - "text": I18n.tr("Layout"), - "description": I18n.tr("Display and switch DWL layouts"), - "icon": "view_quilt", - "enabled": CompositorService.isDwl && DwlService.dwlAvailable, - "warning": !CompositorService.isDwl ? I18n.tr("Requires DWL compositor") : (!DwlService.dwlAvailable ? I18n.tr("DWL service not available") : undefined) - }, - { - "id": "launcherButton", - "text": I18n.tr("App Launcher"), - "description": I18n.tr("Quick access to application launcher"), - "icon": "apps", - "enabled": true - }, - { - "id": "workspaceSwitcher", - "text": I18n.tr("Workspace Switcher"), - "description": I18n.tr("Shows current workspace and allows switching"), - "icon": "view_module", - "enabled": true - }, - { - "id": "focusedWindow", - "text": I18n.tr("Focused Window"), - "description": I18n.tr("Display currently focused application title"), - "icon": "window", - "enabled": true - }, - { - "id": "runningApps", - "text": I18n.tr("Running Apps"), - "description": I18n.tr("Shows all running applications with focus indication"), - "icon": "apps", - "enabled": true - }, - { - "id": "clock", - "text": I18n.tr("Clock"), - "description": I18n.tr("Current time and date display"), - "icon": "schedule", - "enabled": true - }, - { - "id": "weather", - "text": I18n.tr("Weather Widget"), - "description": I18n.tr("Current weather conditions and temperature"), - "icon": "wb_sunny", - "enabled": true - }, - { - "id": "music", - "text": I18n.tr("Media Controls"), - "description": I18n.tr("Control currently playing media"), - "icon": "music_note", - "enabled": true - }, - { - "id": "clipboard", - "text": I18n.tr("Clipboard Manager"), - "description": I18n.tr("Access clipboard history"), - "icon": "content_paste", - "enabled": true - }, - { - "id": "cpuUsage", - "text": I18n.tr("CPU Usage"), - "description": I18n.tr("CPU usage indicator"), - "icon": "memory", - "enabled": DgopService.dgopAvailable, - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined - }, - { - "id": "memUsage", - "text": I18n.tr("Memory Usage"), - "description": I18n.tr("Memory usage indicator"), - "icon": "developer_board", - "enabled": DgopService.dgopAvailable, - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined - }, - { - "id": "diskUsage", - "text": I18n.tr("Disk Usage"), - "description": I18n.tr("Percentage"), - "icon": "storage", - "enabled": DgopService.dgopAvailable, - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined - }, - { - "id": "cpuTemp", - "text": I18n.tr("CPU Temperature"), - "description": I18n.tr("CPU temperature display"), - "icon": "device_thermostat", - "enabled": DgopService.dgopAvailable, - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined - }, - { - "id": "gpuTemp", - "text": I18n.tr("GPU Temperature"), - "description": I18n.tr("GPU temperature display"), - "icon": "auto_awesome_mosaic", - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : I18n.tr("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."), - "enabled": DgopService.dgopAvailable - }, - { - "id": "systemTray", - "text": I18n.tr("System Tray"), - "description": I18n.tr("System notification area icons"), - "icon": "notifications", - "enabled": true - }, - { - "id": "privacyIndicator", - "text": I18n.tr("Privacy Indicator"), - "description": I18n.tr("Shows when microphone, camera, or screen sharing is active"), - "icon": "privacy_tip", - "enabled": true - }, - { - "id": "controlCenterButton", - "text": I18n.tr("Control Center"), - "description": I18n.tr("Access to system controls and settings"), - "icon": "settings", - "enabled": true - }, - { - "id": "notificationButton", - "text": I18n.tr("Notification Center"), - "description": I18n.tr("Access to notifications and do not disturb"), - "icon": "notifications", - "enabled": true - }, - { - "id": "battery", - "text": I18n.tr("Battery"), - "description": I18n.tr("Battery level and power management"), - "icon": "battery_std", - "enabled": true - }, - { - "id": "vpn", - "text": I18n.tr("VPN"), - "description": I18n.tr("VPN status and quick connect"), - "icon": "vpn_lock", - "enabled": true - }, - { - "id": "idleInhibitor", - "text": I18n.tr("Idle Inhibitor"), - "description": I18n.tr("Prevent screen timeout"), - "icon": "motion_sensor_active", - "enabled": true - }, - { - "id": "capsLockIndicator", - "text": I18n.tr("Caps Lock Indicator"), - "description": I18n.tr("Shows when caps lock is active"), - "icon": "shift_lock", - "enabled": true - }, - { - "id": "spacer", - "text": I18n.tr("Spacer"), - "description": I18n.tr("Customizable empty space"), - "icon": "more_horiz", - "enabled": true - }, - { - "id": "separator", - "text": I18n.tr("Separator"), - "description": I18n.tr("Visual divider between widgets"), - "icon": "remove", - "enabled": true - }, - { - "id": "network_speed_monitor", - "text": I18n.tr("Network Speed Monitor"), - "description": I18n.tr("Network download and upload speed display"), - "icon": "network_check", - "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined, - "enabled": DgopService.dgopAvailable - }, - { - "id": "keyboard_layout_name", - "text": I18n.tr("Keyboard Layout Name"), - "description": I18n.tr("Displays the active keyboard layout and allows switching"), - "icon": "keyboard" - }, - { - "id": "notepadButton", - "text": I18n.tr("Notepad"), - "description": I18n.tr("Quick access to notepad"), - "icon": "assignment", - "enabled": true - }, - { - "id": "colorPicker", - "text": I18n.tr("Color Picker"), - "description": I18n.tr("Quick access to color picker"), - "icon": "palette", - "enabled": true - }, - { - "id": "systemUpdate", - "text": I18n.tr("System Update"), - "description": I18n.tr("Check for system updates"), - "icon": "update", - "enabled": SystemUpdateService.distributionSupported - } - ]; - - var allPluginVariants = PluginService.getAllPluginVariants(); - for (var i = 0; i < allPluginVariants.length; i++) { - var variant = allPluginVariants[i]; - coreWidgets.push({ - "id": variant.fullId, - "text": variant.name, - "description": variant.description, - "icon": variant.icon, - "enabled": variant.loaded, - "warning": !variant.loaded ? I18n.tr("Plugin is disabled - enable in Plugins settings to use") : undefined - }); - } - - return coreWidgets; - } - property var defaultLeftWidgets: [ - { - "id": "launcherButton", - "enabled": true - }, - { - "id": "workspaceSwitcher", - "enabled": true - }, - { - "id": "focusedWindow", - "enabled": true - } - ] - property var defaultCenterWidgets: [ - { - "id": "music", - "enabled": true - }, - { - "id": "clock", - "enabled": true - }, - { - "id": "weather", - "enabled": true - } - ] - property var defaultRightWidgets: [ - { - "id": "systemTray", - "enabled": true - }, - { - "id": "clipboard", - "enabled": true - }, - { - "id": "notificationButton", - "enabled": true - }, - { - "id": "battery", - "enabled": true - }, - { - "id": "controlCenterButton", - "enabled": true - } - ] - - function addWidgetToSection(widgetId, targetSection) { - var widgetObj = { - "id": widgetId, - "enabled": true - }; - if (widgetId === "spacer") - widgetObj.size = 20; - if (widgetId === "gpuTemp") { - widgetObj.selectedGpuIndex = 0; - widgetObj.pciId = ""; - } - if (widgetId === "controlCenterButton") { - widgetObj.showNetworkIcon = true; - widgetObj.showBluetoothIcon = true; - widgetObj.showAudioIcon = true; - } - if (widgetId === "diskUsage") { - widgetObj.mountPath = "/"; - } - if (widgetId === "cpuUsage" || widgetId === "memUsage" || widgetId === "cpuTemp" || widgetId === "gpuTemp") { - widgetObj.minimumWidth = true; - } - - var widgets = getWidgetsForSection(targetSection).slice(); - widgets.push(widgetObj); - setWidgetsForSection(targetSection, widgets); - } - - function removeWidgetFromSection(sectionId, widgetIndex) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex >= 0 && widgetIndex < widgets.length) { - widgets.splice(widgetIndex, 1); - } - setWidgetsForSection(sectionId, widgets); - } - - function handleItemEnabledChanged(sectionId, itemId, enabled) { - var widgets = getWidgetsForSection(sectionId).slice(); - for (var i = 0; i < widgets.length; i++) { - var widget = widgets[i]; - var widgetId = typeof widget === "string" ? widget : widget.id; - if (widgetId !== itemId) - continue; - - if (typeof widget === "string") { - widgets[i] = { - "id": widget, - "enabled": enabled - }; - break; - } - - var newWidget = { - "id": widget.id, - "enabled": enabled - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - else if (widget.id === "gpuTemp") - newWidget.selectedGpuIndex = 0; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - else if (widget.id === "gpuTemp") - newWidget.pciId = ""; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[i] = newWidget; - break; - } - setWidgetsForSection(sectionId, widgets); - } - - function handleItemOrderChanged(sectionId, newOrder) { - setWidgetsForSection(sectionId, newOrder); - } - - function handleSpacerSizeChanged(sectionId, widgetIndex, newSize) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex < 0 || widgetIndex >= widgets.length) { - setWidgetsForSection(sectionId, widgets); - return; - } - - var widget = widgets[widgetIndex]; - var widgetId = typeof widget === "string" ? widget : widget.id; - if (widgetId !== "spacer") { - setWidgetsForSection(sectionId, widgets); - return; - } - - if (typeof widget === "string") { - widgets[widgetIndex] = { - "id": widget, - "enabled": true, - "size": newSize - }; - setWidgetsForSection(sectionId, widgets); - return; - } - - var newWidget = { - "id": widget.id, - "enabled": widget.enabled, - "size": newSize - }; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[widgetIndex] = newWidget; - setWidgetsForSection(sectionId, widgets); - } - - function handleGpuSelectionChanged(sectionId, widgetIndex, selectedGpuIndex) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex < 0 || widgetIndex >= widgets.length) { - setWidgetsForSection(sectionId, widgets); - return; - } - - var pciId = DgopService.availableGpus && DgopService.availableGpus.length > selectedGpuIndex ? DgopService.availableGpus[selectedGpuIndex].pciId : ""; - var widget = widgets[widgetIndex]; - if (typeof widget === "string") { - widgets[widgetIndex] = { - "id": widget, - "enabled": true, - "selectedGpuIndex": selectedGpuIndex, - "pciId": pciId - }; - setWidgetsForSection(sectionId, widgets); - return; - } - - var newWidget = { - "id": widget.id, - "enabled": widget.enabled, - "selectedGpuIndex": selectedGpuIndex, - "pciId": pciId - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - widgets[widgetIndex] = newWidget; - setWidgetsForSection(sectionId, widgets); - } - - function handleDiskMountSelectionChanged(sectionId, widgetIndex, mountPath) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex < 0 || widgetIndex >= widgets.length) { - setWidgetsForSection(sectionId, widgets); - return; - } - - var widget = widgets[widgetIndex]; - if (typeof widget === "string") { - widgets[widgetIndex] = { - "id": widget, - "enabled": true, - "mountPath": mountPath - }; - setWidgetsForSection(sectionId, widgets); - return; - } - - var newWidget = { - "id": widget.id, - "enabled": widget.enabled, - "mountPath": mountPath - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[widgetIndex] = newWidget; - - setWidgetsForSection(sectionId, widgets); - } - - function handleControlCenterSettingChanged(sectionId, widgetIndex, settingName, value) { - switch (settingName) { - case "showNetworkIcon": - SettingsData.set("controlCenterShowNetworkIcon", value); - break; - case "showBluetoothIcon": - SettingsData.set("controlCenterShowBluetoothIcon", value); - break; - case "showAudioIcon": - SettingsData.set("controlCenterShowAudioIcon", value); - break; - case "showVpnIcon": - SettingsData.set("controlCenterShowVpnIcon", value); - break; - case "showBrightnessIcon": - SettingsData.set("controlCenterShowBrightnessIcon", value); - break; - case "showMicIcon": - SettingsData.set("controlCenterShowMicIcon", value); - break; - case "showBatteryIcon": - SettingsData.set("controlCenterShowBatteryIcon", value); - break; - case "showPrinterIcon": - SettingsData.set("controlCenterShowPrinterIcon", value); - break; - } - } - - function handlePrivacySettingChanged(sectionId, widgetIndex, settingName, value) { - switch (settingName) { - case "showMicIcon": - SettingsData.set("privacyShowMicIcon", value); - break; - case "showCameraIcon": - SettingsData.set("privacyShowCameraIcon", value); - break; - case "showScreenSharingIcon": - SettingsData.set("privacyShowScreenShareIcon", value); - break; - } - } - - function handleMinimumWidthChanged(sectionId, widgetIndex, enabled) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex < 0 || widgetIndex >= widgets.length) { - setWidgetsForSection(sectionId, widgets); - return; - } - - var widget = widgets[widgetIndex]; - if (typeof widget === "string") { - widgets[widgetIndex] = { - "id": widget, - "enabled": true, - "minimumWidth": enabled - }; - setWidgetsForSection(sectionId, widgets); - return; - } - - var newWidget = { - "id": widget.id, - "enabled": widget.enabled, - "minimumWidth": enabled - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - if (widget.mountPath !== undefined) - newWidget.mountPath = widget.mountPath; - if (widget.showSwap !== undefined) - newWidget.showSwap = widget.showSwap; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[widgetIndex] = newWidget; - setWidgetsForSection(sectionId, widgets); - } - - function handleShowSwapChanged(sectionId, widgetIndex, enabled) { - var widgets = getWidgetsForSection(sectionId).slice(); - if (widgetIndex < 0 || widgetIndex >= widgets.length) { - setWidgetsForSection(sectionId, widgets); - return; - } - - var widget = widgets[widgetIndex]; - if (typeof widget === "string") { - widgets[widgetIndex] = { - "id": widget, - "enabled": true, - "showSwap": enabled - }; - setWidgetsForSection(sectionId, widgets); - return; - } - - var newWidget = { - "id": widget.id, - "enabled": widget.enabled, - "showSwap": enabled - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - if (widget.mountPath !== undefined) - newWidget.mountPath = widget.mountPath; - if (widget.minimumWidth !== undefined) - newWidget.minimumWidth = widget.minimumWidth; - if (widget.mediaSize !== undefined) - newWidget.mediaSize = widget.mediaSize; - if (widget.clockCompactMode !== undefined) - newWidget.clockCompactMode = widget.clockCompactMode; - if (widget.focusedWindowCompactMode !== undefined) - newWidget.focusedWindowCompactMode = widget.focusedWindowCompactMode; - if (widget.runningAppsCompactMode !== undefined) - newWidget.runningAppsCompactMode = widget.runningAppsCompactMode; - if (widget.keyboardLayoutNameCompactMode !== undefined) - newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[widgetIndex] = newWidget; - setWidgetsForSection(sectionId, widgets); - } - - function handleCompactModeChanged(sectionId, widgetId, value) { - var widgets = getWidgetsForSection(sectionId).slice(); - - for (var i = 0; i < widgets.length; i++) { - var widget = widgets[i]; - var currentId = typeof widget === "string" ? widget : widget.id; - - if (currentId !== widgetId) { - continue; - } - - if (typeof widget === "string") { - widgets[i] = { - "id": widget, - "enabled": true - }; - widget = widgets[i]; - } else { - var newWidget = { - "id": widget.id, - "enabled": widget.enabled - }; - if (widget.size !== undefined) - newWidget.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - newWidget.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - newWidget.pciId = widget.pciId; - if (widget.mountPath !== undefined) - newWidget.mountPath = widget.mountPath; - if (widget.minimumWidth !== undefined) - newWidget.minimumWidth = widget.minimumWidth; - if (widget.showSwap !== undefined) - newWidget.showSwap = widget.showSwap; - if (widget.mediaSize !== undefined) - newWidget.mediaSize = widget.mediaSize; - if (widget.clockCompactMode !== undefined) - newWidget.clockCompactMode = widget.clockCompactMode; - if (widget.focusedWindowCompactMode !== undefined) - newWidget.focusedWindowCompactMode = widget.focusedWindowCompactMode; - if (widget.runningAppsCompactMode !== undefined) - newWidget.runningAppsCompactMode = widget.runningAppsCompactMode; - if (widget.keyboardLayoutNameCompactMode !== undefined) - newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; - if (widget.id === "controlCenterButton") { - newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; - newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; - newWidget.showAudioIcon = widget.showAudioIcon ?? true; - } - widgets[i] = newWidget; - widget = newWidget; - } - - switch (widgetId) { - case "music": - widget.mediaSize = value; - break; - case "clock": - widget.clockCompactMode = value; - break; - case "focusedWindow": - widget.focusedWindowCompactMode = value; - break; - case "runningApps": - widget.runningAppsCompactMode = value; - break; - case "keyboard_layout_name": - widget.keyboardLayoutNameCompactMode = value; - break; - } - - break; - } - - setWidgetsForSection(sectionId, widgets); - } - - function getItemsForSection(sectionId) { - var widgets = []; - var widgetData = getWidgetsForSection(sectionId); - widgetData.forEach(widget => { - var isString = typeof widget === "string"; - var widgetId = isString ? widget : widget.id; - var widgetDef = baseWidgetDefinitions.find(w => w.id === widgetId); - if (!widgetDef) - return; - - var item = Object.assign({}, widgetDef); - item.enabled = isString ? true : widget.enabled; - if (!isString) { - if (widget.size !== undefined) - item.size = widget.size; - if (widget.selectedGpuIndex !== undefined) - item.selectedGpuIndex = widget.selectedGpuIndex; - if (widget.pciId !== undefined) - item.pciId = widget.pciId; - if (widget.mountPath !== undefined) - item.mountPath = widget.mountPath; - if (widget.showNetworkIcon !== undefined) - item.showNetworkIcon = widget.showNetworkIcon; - if (widget.showBluetoothIcon !== undefined) - item.showBluetoothIcon = widget.showBluetoothIcon; - if (widget.showAudioIcon !== undefined) - item.showAudioIcon = widget.showAudioIcon; - if (widget.minimumWidth !== undefined) - item.minimumWidth = widget.minimumWidth; - if (widget.showSwap !== undefined) - item.showSwap = widget.showSwap; - if (widget.mediaSize !== undefined) - item.mediaSize = widget.mediaSize; - if (widget.clockCompactMode !== undefined) - item.clockCompactMode = widget.clockCompactMode; - if (widget.focusedWindowCompactMode !== undefined) - item.focusedWindowCompactMode = widget.focusedWindowCompactMode; - if (widget.runningAppsCompactMode !== undefined) - item.runningAppsCompactMode = widget.runningAppsCompactMode; - if (widget.keyboardLayoutNameCompactMode !== undefined) - item.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; - } - widgets.push(item); - }); - return widgets; - } - - Component.onCompleted: { - const leftWidgets = selectedBarConfig?.leftWidgets; - const centerWidgets = selectedBarConfig?.centerWidgets; - const rightWidgets = selectedBarConfig?.rightWidgets; - - if (!leftWidgets) - setWidgetsForSection("left", defaultLeftWidgets); - - if (!centerWidgets) - setWidgetsForSection("center", defaultCenterWidgets); - - if (!rightWidgets) - setWidgetsForSection("right", defaultRightWidgets); - const sections = ["left", "center", "right"]; - sections.forEach(sectionId => { - var widgets = getWidgetsForSection(sectionId).slice(); - var updated = false; - for (var i = 0; i < widgets.length; i++) { - var widget = widgets[i]; - if (typeof widget === "object" && widget.id === "spacer" && !widget.size) { - widgets[i] = Object.assign({}, widget, { - "size": 20 - }); - updated = true; - } - } - if (updated) { - setWidgetsForSection(sectionId, widgets); - } - }); - } - - WidgetSelectionPopup { - id: widgetSelectionPopup - parentModal: dankBarTab.parentModal - onWidgetSelected: (widgetId, targetSection) => { - dankBarTab.addWidgetToSection(widgetId, targetSection); - } - } - DankFlickable { anchors.fill: parent clip: true @@ -1118,2070 +296,158 @@ Item { anchors.horizontalCenter: parent.horizontalCenter spacing: Theme.spacingXL - StyledRect { - width: parent.width - height: barManagementContent.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - border.width: 0 + SettingsCard { + iconName: "dashboard" + title: I18n.tr("Bar Configurations") - Column { - id: barManagementContent - anchors.fill: parent - anchors.margins: Theme.spacingL + RowLayout { + width: parent.width spacing: Theme.spacingM - RowLayout { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "dashboard" - size: Theme.iconSize - color: Theme.primary - Layout.alignment: Qt.AlignVCenter - } - - StyledText { - text: I18n.tr("Bar Configurations") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - Layout.alignment: Qt.AlignVCenter - } - - Item { - Layout.fillWidth: true - implicitHeight: 1 - } - - DankButton { - text: I18n.tr("Add Bar") - iconName: "add" - buttonHeight: 32 - visible: SettingsData.barConfigs.length < 4 - Layout.alignment: Qt.AlignVCenter - onClicked: dankBarTab.createNewBar() - } - } - StyledText { - id: barConfigText - width: parent.width text: I18n.tr("Manage up to 4 independent bar configurations. Each bar has its own position, widgets, styling, and display assignment.") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap + Layout.fillWidth: true } - Column { - width: parent.width - spacing: Theme.spacingS - - Repeater { - model: SettingsData.barConfigs - - Rectangle { - width: parent.width - height: barCardContent.implicitHeight + Theme.spacingM * 2 - radius: Theme.cornerRadius - color: dankBarTab.selectedBarId === modelData.id ? Theme.withAlpha(Theme.primary, 0.15) : Theme.surfaceVariant - border.width: dankBarTab.selectedBarId === modelData.id ? 2 : 0 - border.color: Theme.primary - - Row { - id: barCardContent - anchors.fill: parent - anchors.margins: Theme.spacingM - spacing: Theme.spacingM - - Column { - width: parent.width - deleteBtn.width - Theme.spacingM - spacing: Theme.spacingXS / 2 - - StyledText { - text: modelData.name || "Bar " + (index + 1) - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - Row { - spacing: Theme.spacingS - - StyledText { - text: { - switch (modelData.position) { - case SettingsData.Position.Top: - return I18n.tr("Top"); - case SettingsData.Position.Bottom: - return I18n.tr("Bottom"); - case SettingsData.Position.Left: - return I18n.tr("Left"); - case SettingsData.Position.Right: - return I18n.tr("Right"); - default: - return I18n.tr("Top"); - } - } - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - StyledText { - text: "•" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - StyledText { - text: { - const prefs = modelData.screenPreferences || ["all"]; - if (prefs.includes("all") || (typeof prefs[0] === "string" && prefs[0] === "all")) { - return I18n.tr("All displays"); - } - return I18n.tr("%1 display(s)").replace("%1", prefs.length); - } - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - StyledText { - text: "•" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - StyledText { - text: { - const left = modelData.leftWidgets?.length || 0; - const center = modelData.centerWidgets?.length || 0; - const right = modelData.rightWidgets?.length || 0; - return I18n.tr("%1 widgets").replace("%1", left + center + right); - } - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - StyledText { - text: "•" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - visible: !modelData.enabled && modelData.id !== "default" - } - - StyledText { - text: I18n.tr("Disabled") - font.pixelSize: Theme.fontSizeSmall - color: Theme.error - visible: !modelData.enabled && modelData.id !== "default" - } - } - } - - DankActionButton { - id: deleteBtn - buttonSize: 32 - iconName: "delete" - iconSize: 16 - backgroundColor: Theme.withAlpha(Theme.error, 0.15) - iconColor: Theme.error - visible: modelData.id !== "default" - enabled: SettingsData.barConfigs.length > 1 - anchors.verticalCenter: parent.verticalCenter - onClicked: dankBarTab.deleteBar(modelData.id) - } - } - - MouseArea { - anchors.fill: parent - z: -1 - cursorShape: Qt.PointingHandCursor - onClicked: dankBarTab.selectedBarId = modelData.id - } - - Behavior on color { - ColorAnimation { - duration: Theme.shortDuration - easing.type: Theme.standardEasing - } - } - - Behavior on border.width { - NumberAnimation { - duration: Theme.shortDuration - easing.type: Theme.standardEasing - } - } - } - } + DankButton { + text: I18n.tr("Add Bar") + iconName: "add" + buttonHeight: 32 + visible: SettingsData.barConfigs.length < 4 + onClicked: dankBarTab.createNewBar() } } - } - - StyledRect { - width: parent.width - height: enabledSection.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - border.width: 0 - visible: selectedBarId !== "default" - - Row { - id: enabledSection - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - DankIcon { - name: selectedBarConfig?.enabled ? "visibility" : "visibility_off" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - Column { - width: parent.width - Theme.iconSize - Theme.spacingM - enabledToggle.width - Theme.spacingM - spacing: Theme.spacingXS - anchors.verticalCenter: parent.verticalCenter - - StyledText { - text: I18n.tr("Enable Bar") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Toggle visibility of this bar configuration") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - width: parent.width - } - } - - DankToggle { - id: enabledToggle - anchors.verticalCenter: parent.verticalCenter - checked: { - selectedBarId; - return selectedBarConfig?.enabled ?? false; - } - onToggled: toggled => { - dankBarTab.toggleBarEnabled(selectedBarId); - } - } - } - } - - StyledRect { - width: parent.width - height: screenAssignmentSection.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - border.width: 0 - visible: selectedBarConfig?.enabled Column { - id: screenAssignmentSection - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM + width: parent.width + spacing: Theme.spacingS - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "display_settings" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: I18n.tr("Display Assignment") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - - StyledText { - width: parent.width - text: I18n.tr("Configure which displays show \"%1\"").replace("%1", selectedBarConfig.name || "this bar") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - } - - Column { - id: displayAssignmentColumn - width: parent.width - spacing: Theme.spacingS - - property bool showingAll: { - const prefs = selectedBarConfig?.screenPreferences || ["all"]; - return prefs.includes("all") || (typeof prefs[0] === "string" && prefs[0] === "all"); - } - - DankToggle { - width: parent.width - text: I18n.tr("All displays") - description: I18n.tr("Show on all connected displays") - checked: displayAssignmentColumn.showingAll - onToggled: checked => { - if (checked) { - dankBarTab.setBarScreenPreferences(selectedBarId, ["all"]); - } else { - dankBarTab.setBarScreenPreferences(selectedBarId, []); - } - } - } - - DankToggle { - width: parent.width - text: I18n.tr("Show on Last Display") - description: I18n.tr("Always show when there's only one connected display") - checked: selectedBarConfig?.showOnLastDisplay ?? true - visible: !displayAssignmentColumn.showingAll - onToggled: checked => { - dankBarTab.setBarShowOnLastDisplay(selectedBarId, checked); - } - } + Repeater { + model: SettingsData.barConfigs Rectangle { + id: barCard + required property var modelData + required property int index + width: parent.width - height: 1 - color: Theme.outline - opacity: 0.2 - visible: !displayAssignmentColumn.showingAll - } - - Column { - width: parent.width - spacing: Theme.spacingXS - visible: !displayAssignmentColumn.showingAll - - Repeater { - model: Quickshell.screens - - delegate: DankToggle { - property var screenData: modelData - - width: parent.width - text: SettingsData.getScreenDisplayName(screenData) - description: screenData.width + "×" + screenData.height + " • " + (SettingsData.displayNameMode === "system" ? (screenData.model || "Unknown Model") : screenData.name) - checked: { - const prefs = selectedBarConfig?.screenPreferences || []; - if (typeof prefs[0] === "string" && prefs[0] === "all") - return false; - return SettingsData.isScreenInPreferences(screenData, prefs); - } - onToggled: checked => { - let currentPrefs = selectedBarConfig?.screenPreferences || []; - if (typeof currentPrefs[0] === "string" && currentPrefs[0] === "all") { - currentPrefs = []; - } - - const screenModelIndex = SettingsData.getScreenModelIndex(screenData); - - let newPrefs = currentPrefs.filter(pref => { - if (typeof pref === "string") - return false; - if (pref.modelIndex !== undefined && screenModelIndex >= 0) { - return !(pref.model === screenData.model && pref.modelIndex === screenModelIndex); - } - return pref.name !== screenData.name || pref.model !== screenData.model; - }); - - if (checked) { - const prefObj = { - name: screenData.name, - model: screenData.model || "" - }; - if (screenModelIndex >= 0) { - prefObj.modelIndex = screenModelIndex; - } - newPrefs.push(prefObj); - } - - dankBarTab.setBarScreenPreferences(selectedBarId, newPrefs); - } - } - } - } - } - } - } - - StyledRect { - width: parent.width - height: positionSection.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: selectedBarConfig?.enabled - - Column { - id: positionSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "vertical_align_center" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: I18n.tr("Position") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - DankButtonGroup { - id: positionButtonGroup - anchors.verticalCenter: parent.verticalCenter - model: [I18n.tr("Top"), I18n.tr("Bottom"), I18n.tr("Left"), I18n.tr("Right")] - onSelectionChanged: (index, selected) => { - if (!selected) - return; - let newPos = 0; - switch (index) { - case 0: - newPos = SettingsData.Position.Top; - break; - case 1: - newPos = SettingsData.Position.Bottom; - break; - case 2: - newPos = SettingsData.Position.Left; - break; - case 3: - newPos = SettingsData.Position.Right; - break; - } - const wasVertical = selectedBarIsVertical; - SettingsData.updateBarConfig(selectedBarId, { - position: newPos - }); - const isVertical = newPos === SettingsData.Position.Left || newPos === SettingsData.Position.Right; - if (wasVertical !== isVertical || !isVertical) { - notifyHorizontalBarChange(); - } - } - - Binding { - target: positionButtonGroup - property: "currentIndex" - value: { - selectedBarId; - const config = SettingsData.getBarConfig(selectedBarId); - const pos = config?.position ?? 0; - switch (pos) { - case SettingsData.Position.Top: - return 0; - case SettingsData.Position.Bottom: - return 1; - case SettingsData.Position.Left: - return 2; - case SettingsData.Position.Right: - return 3; - default: - return 0; - } - } - restoreMode: Binding.RestoreBinding - } - } - } - } - } - - StyledRect { - width: parent.width - height: dankBarAutoHideSection.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: selectedBarConfig?.enabled - - Column { - id: dankBarAutoHideSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "visibility_off" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - Column { - width: parent.width - Theme.iconSize - Theme.spacingM - autoHideToggle.width - Theme.spacingM - spacing: Theme.spacingXS - anchors.verticalCenter: parent.verticalCenter - - StyledText { - text: I18n.tr("Auto-hide") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Automatically hide the top bar to expand screen real estate") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - width: parent.width - } - } - - DankToggle { - id: autoHideToggle - - anchors.verticalCenter: parent.verticalCenter - checked: selectedBarConfig?.autoHide ?? false - onToggled: toggled => { - SettingsData.updateBarConfig(selectedBarId, { - autoHide: toggled - }); - notifyHorizontalBarChange(); - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - visible: selectedBarConfig?.autoHide ?? false - leftPadding: Theme.spacingM - - Rectangle { - width: parent.width - parent.leftPadding - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Row { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Hide Delay (ms)") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - hideDelayText.implicitWidth - resetHideDelayBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: hideDelayText - visible: false - text: I18n.tr("Hide Delay (ms)") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetHideDelayBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - autoHideDelay: 250 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: hideDelaySlider - width: parent.width - parent.leftPadding - height: 24 - value: selectedBarConfig?.autoHideDelay ?? 250 - minimum: 0 - maximum: 2000 - unit: "ms" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - SettingsData.updateBarConfig(selectedBarId, { - autoHideDelay: newValue - }); - notifyHorizontalBarChange(); - } - - Binding { - target: hideDelaySlider - property: "value" - value: selectedBarConfig?.autoHideDelay ?? 250 - restoreMode: Binding.RestoreBinding - } - } - } - - Rectangle { - width: parent.width - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "visibility" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - Column { - width: parent.width - Theme.iconSize - Theme.spacingM - visibilityToggle.width - Theme.spacingM - spacing: Theme.spacingXS - anchors.verticalCenter: parent.verticalCenter - - StyledText { - text: I18n.tr("Manual Show/Hide") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Toggle top bar visibility manually (can be controlled via IPC)") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - width: parent.width - } - } - - DankToggle { - id: visibilityToggle - - anchors.verticalCenter: parent.verticalCenter - checked: selectedBarConfig?.visible ?? true - onToggled: toggled => { - SettingsData.updateBarConfig(selectedBarId, { - visible: toggled - }); - notifyHorizontalBarChange(); - } - } - } - - Rectangle { - width: parent.width - height: 1 - color: Theme.outline - opacity: 0.2 - visible: CompositorService.isNiri - } - - Row { - width: parent.width - spacing: Theme.spacingM - visible: CompositorService.isNiri - - DankIcon { - name: "fullscreen" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - Column { - width: parent.width - Theme.iconSize - Theme.spacingM - overviewToggle.width - Theme.spacingM - spacing: Theme.spacingXS - anchors.verticalCenter: parent.verticalCenter - - StyledText { - text: I18n.tr("Show on Overview") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Always show the top bar when niri's overview is open") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - width: parent.width - } - } - - DankToggle { - id: overviewToggle - - anchors.verticalCenter: parent.verticalCenter - checked: selectedBarConfig?.openOnOverview ?? false - onToggled: toggled => { - SettingsData.updateBarConfig(selectedBarId, { - openOnOverview: toggled - }); - notifyHorizontalBarChange(); - } - } - } - } - } - StyledRect { - width: parent.width - height: dankBarSpacingSection.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: selectedBarConfig?.enabled - - Column { - id: dankBarSpacingSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "space_bar" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: I18n.tr("Spacing") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Edge Spacing (0 = edge-to-edge)") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - edgeSpacingText.implicitWidth - resetEdgeSpacingBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: edgeSpacingText - visible: false - text: I18n.tr("Edge Spacing (0 = edge-to-edge)") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetEdgeSpacingBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - spacing: 4 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: edgeSpacingSlider - width: parent.width - height: 24 - value: selectedBarConfig?.spacing ?? 4 - minimum: 0 - maximum: 32 - unit: "" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - edgeSpacingDebounce.pendingValue = newValue; - edgeSpacingDebounce.restart(); - } - - Binding { - target: edgeSpacingSlider - property: "value" - value: selectedBarConfig?.spacing ?? 4 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Exclusive Zone Offset") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - exclusiveZoneText.implicitWidth - resetExclusiveZoneBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: exclusiveZoneText - visible: false - text: I18n.tr("Exclusive Zone Offset") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetExclusiveZoneBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - bottomGap: 0 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: exclusiveZoneSlider - width: parent.width - height: 24 - value: selectedBarConfig?.bottomGap ?? 0 - minimum: -50 - maximum: 50 - unit: "" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - exclusiveZoneDebounce.pendingValue = newValue; - exclusiveZoneDebounce.restart(); - } - - Binding { - target: exclusiveZoneSlider - property: "value" - value: selectedBarConfig?.bottomGap ?? 0 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Size") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - sizeText.implicitWidth - resetSizeBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: sizeText - visible: false - text: I18n.tr("Size") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetSizeBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - innerPadding: 4 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: sizeSlider - width: parent.width - height: 24 - value: selectedBarConfig?.innerPadding ?? 4 - minimum: -8 - maximum: 24 - unit: "" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - sizeDebounce.pendingValue = newValue; - sizeDebounce.restart(); - } - - Binding { - target: sizeSlider - property: "value" - value: selectedBarConfig?.innerPadding ?? 4 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingM - - DankToggle { - width: parent.width - text: I18n.tr("Auto Popup Gaps") - description: I18n.tr("Automatically calculate popup distance from bar edge.") - checked: selectedBarConfig?.popupGapsAuto ?? true - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - popupGapsAuto: checked - }); - notifyHorizontalBarChange(); - } - } - - Column { - width: parent.width - leftPadding: Theme.spacingM - spacing: Theme.spacingM - visible: !(selectedBarConfig?.popupGapsAuto ?? true) - - Rectangle { - width: parent.width - parent.leftPadding - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Column { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Manual Gap Size") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - manualGapSizeText.implicitWidth - resetManualGapSizeBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: manualGapSizeText - visible: false - text: I18n.tr("Manual Gap Size") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetManualGapSizeBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - popupGapsManual: 4 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: popupGapsManualSlider - width: parent.width - height: 24 - value: selectedBarConfig?.popupGapsManual ?? 4 - minimum: 0 - maximum: 50 - unit: "" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - popupGapsManualDebounce.pendingValue = newValue; - popupGapsManualDebounce.restart(); - } - - Binding { - target: popupGapsManualSlider - property: "value" - value: selectedBarConfig?.popupGapsManual ?? 4 - restoreMode: Binding.RestoreBinding - } - } - } - } - } - - DankToggle { - width: parent.width - text: I18n.tr("Square Corners") - description: "Removes rounded corners from bar container." - checked: selectedBarConfig?.squareCorners ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - squareCorners: checked - }); - } - } - - DankToggle { - width: parent.width - text: I18n.tr("No Background") - description: "Remove widget backgrounds for a minimal look with tighter spacing." - checked: selectedBarConfig?.noBackground ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - noBackground: checked - }); - } - } - - Column { - width: parent.width - spacing: Theme.spacingM - - DankToggle { - width: parent.width - text: I18n.tr("Goth Corners") - description: "Add curved swooping tips at the bottom of the bar." - checked: selectedBarConfig?.gothCornersEnabled ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - gothCornersEnabled: checked - }); - } - } - - DankToggle { - width: parent.width - text: I18n.tr("Corner Radius Override") - description: "Customize the goth corner radius independently." - checked: selectedBarConfig?.gothCornerRadiusOverride ?? false - visible: selectedBarConfig?.gothCornersEnabled ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - gothCornerRadiusOverride: checked - }); - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - visible: (selectedBarConfig?.gothCornersEnabled ?? false) && (selectedBarConfig?.gothCornerRadiusOverride ?? false) + height: barCardContent.implicitHeight + Theme.spacingM * 2 + radius: Theme.cornerRadius + color: dankBarTab.selectedBarId === modelData.id ? Theme.withAlpha(Theme.primary, 0.15) : Theme.surfaceVariant + border.width: dankBarTab.selectedBarId === modelData.id ? 2 : 0 + border.color: Theme.primary Row { - width: parent.width - spacing: Theme.spacingS + id: barCardContent + anchors.fill: parent + anchors.margins: Theme.spacingM + spacing: Theme.spacingM - StyledText { - text: I18n.tr("Goth Corner Radius") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - gothCornerRadiusText.implicitWidth - resetGothCornerRadiusBtn.width - Theme.spacingS - Theme.spacingM - height: 1 + Column { + width: parent.width - deleteBtn.width - Theme.spacingM + spacing: Theme.spacingXS / 2 StyledText { - id: gothCornerRadiusText - visible: false - text: I18n.tr("Goth Corner Radius") - font.pixelSize: Theme.fontSizeSmall + text: barCard.modelData.name || "Bar " + (barCard.index + 1) + font.pixelSize: Theme.fontSizeMedium + font.weight: Font.Medium + color: Theme.surfaceText + } + + Row { + spacing: Theme.spacingS + + StyledText { + text: { + switch (barCard.modelData.position) { + case SettingsData.Position.Top: + return I18n.tr("Top"); + case SettingsData.Position.Bottom: + return I18n.tr("Bottom"); + case SettingsData.Position.Left: + return I18n.tr("Left"); + case SettingsData.Position.Right: + return I18n.tr("Right"); + default: + return I18n.tr("Top"); + } + } + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + } + + StyledText { + text: "•" + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + } + + StyledText { + text: { + const prefs = barCard.modelData.screenPreferences || ["all"]; + if (prefs.includes("all") || (typeof prefs[0] === "string" && prefs[0] === "all")) + return I18n.tr("All displays"); + return I18n.tr("%1 display(s)").replace("%1", prefs.length); + } + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + } + + StyledText { + text: "•" + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + } + + StyledText { + text: { + const left = barCard.modelData.leftWidgets?.length || 0; + const center = barCard.modelData.centerWidgets?.length || 0; + const right = barCard.modelData.rightWidgets?.length || 0; + return I18n.tr("%1 widgets").replace("%1", left + center + right); + } + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + } + + StyledText { + text: "•" + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + visible: !barCard.modelData.enabled && barCard.modelData.id !== "default" + } + + StyledText { + text: I18n.tr("Disabled") + font.pixelSize: Theme.fontSizeSmall + color: Theme.error + visible: !barCard.modelData.enabled && barCard.modelData.id !== "default" + } } } DankActionButton { - id: resetGothCornerRadiusBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - gothCornerRadiusValue: 12 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: gothCornerRadiusSlider - width: parent.width - height: 24 - value: selectedBarConfig?.gothCornerRadiusValue ?? 12 - minimum: 0 - maximum: 64 - unit: "" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - gothCornerRadiusDebounce.pendingValue = newValue; - gothCornerRadiusDebounce.restart(); - } - - Binding { - target: gothCornerRadiusSlider - property: "value" - value: selectedBarConfig?.gothCornerRadiusValue ?? 12 - restoreMode: Binding.RestoreBinding - } - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingM - - DankToggle { - width: parent.width - text: I18n.tr("Border") - description: "Add a 1px border to the bar. Smart edge detection only shows border on exposed sides." - checked: selectedBarConfig?.borderEnabled ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - borderEnabled: checked - }); - } - } - - Column { - width: parent.width - leftPadding: Theme.spacingM - spacing: Theme.spacingM - visible: selectedBarConfig?.borderEnabled ?? false - - Rectangle { - width: parent.width - parent.leftPadding - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Row { - width: parent.width - parent.leftPadding - spacing: Theme.spacingM - - Column { - width: parent.width - borderColorGroup.width - Theme.spacingM - spacing: Theme.spacingXS - - StyledText { - text: I18n.tr("Border Color") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - } - - StyledText { - text: I18n.tr("Choose the border accent color") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - } - } - - DankButtonGroup { - id: borderColorGroup - anchors.verticalCenter: parent.verticalCenter - model: ["Surface", "Secondary", "Primary"] - currentIndex: { - const colorOption = selectedBarConfig?.borderColor || "surfaceText"; - switch (colorOption) { - case "surfaceText": - return 0; - case "secondary": - return 1; - case "primary": - return 2; - default: - return 0; - } - } - onSelectionChanged: (index, selected) => { - if (selected) { - let newColor = "surfaceText"; - switch (index) { - case 0: - newColor = "surfaceText"; - break; - case 1: - newColor = "secondary"; - break; - case 2: - newColor = "primary"; - break; - } - SettingsData.updateBarConfig(selectedBarId, { - borderColor: newColor - }); - } - } - } - } - - Column { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Border Opacity") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - borderOpacityText.implicitWidth - resetBorderOpacityBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: borderOpacityText - visible: false - text: I18n.tr("Border Opacity") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetBorderOpacityBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - borderOpacity: 1.0 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: borderOpacitySlider - width: parent.width - height: 24 - value: (selectedBarConfig?.borderOpacity ?? 1.0) * 100 - minimum: 0 - maximum: 100 - unit: "%" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - borderOpacityDebounce.pendingValue = newValue / 100; - borderOpacityDebounce.restart(); - } - - Binding { - target: borderOpacitySlider - property: "value" - value: (selectedBarConfig?.borderOpacity ?? 1.0) * 100 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Border Thickness") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - borderThicknessText.implicitWidth - resetBorderThicknessBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: borderThicknessText - visible: false - text: I18n.tr("Border Thickness") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetBorderThicknessBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - borderThickness: 1 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: borderThicknessSlider - width: parent.width - height: 24 - value: selectedBarConfig?.borderThickness ?? 1 - minimum: 1 - maximum: 10 - unit: "px" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - borderThicknessDebounce.pendingValue = newValue; - borderThicknessDebounce.restart(); - } - - Binding { - target: borderThicknessSlider - property: "value" - value: selectedBarConfig?.borderThickness ?? 1 - restoreMode: Binding.RestoreBinding - } - } - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingM - - DankToggle { - width: parent.width - text: I18n.tr("Widget Outline") - description: "Add outlines to individual widgets." - checked: selectedBarConfig?.widgetOutlineEnabled ?? false - onToggled: checked => { - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineEnabled: checked - }); - } - } - - Column { - width: parent.width - leftPadding: Theme.spacingM - spacing: Theme.spacingM - visible: selectedBarConfig?.widgetOutlineEnabled ?? false - - Rectangle { - width: parent.width - parent.leftPadding - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Row { - width: parent.width - parent.leftPadding - spacing: Theme.spacingM - - Column { - width: parent.width - widgetOutlineColorGroup.width - Theme.spacingM - spacing: Theme.spacingXS - - StyledText { - text: I18n.tr("Outline Color") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - } - - StyledText { - text: I18n.tr("Choose the widget outline accent color") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - } - } - - DankButtonGroup { - id: widgetOutlineColorGroup - anchors.verticalCenter: parent.verticalCenter - model: ["Surface", "Secondary", "Primary"] - currentIndex: { - const colorOption = selectedBarConfig?.widgetOutlineColor || "primary"; - switch (colorOption) { - case "surfaceText": - return 0; - case "secondary": - return 1; - case "primary": - return 2; - default: - return 2; - } - } - onSelectionChanged: (index, selected) => { - if (!selected) - return; - let newColor = "primary"; - switch (index) { - case 0: - newColor = "surfaceText"; - break; - case 1: - newColor = "secondary"; - break; - case 2: - newColor = "primary"; - break; - } - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineColor: newColor - }); - } - } - } - - Column { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Outline Opacity") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - widgetOutlineOpacityText.implicitWidth - resetWidgetOutlineOpacityBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: widgetOutlineOpacityText - visible: false - text: I18n.tr("Outline Opacity") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetWidgetOutlineOpacityBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineOpacity: 1.0 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: widgetOutlineOpacitySlider - width: parent.width - height: 24 - value: (selectedBarConfig?.widgetOutlineOpacity ?? 1.0) * 100 - minimum: 0 - maximum: 100 - unit: "%" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - widgetOutlineOpacityDebounce.pendingValue = newValue / 100; - widgetOutlineOpacityDebounce.restart(); - } - - Binding { - target: widgetOutlineOpacitySlider - property: "value" - value: (selectedBarConfig?.widgetOutlineOpacity ?? 1.0) * 100 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - parent.leftPadding - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Outline Thickness") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - widgetOutlineThicknessText.implicitWidth - resetWidgetOutlineThicknessBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: widgetOutlineThicknessText - visible: false - text: I18n.tr("Outline Thickness") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetWidgetOutlineThicknessBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - widgetOutlineThickness: 1 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: widgetOutlineThicknessSlider - width: parent.width - height: 24 - value: selectedBarConfig?.widgetOutlineThickness ?? 1 - minimum: 1 - maximum: 10 - unit: "px" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - widgetOutlineThicknessDebounce.pendingValue = newValue; - widgetOutlineThicknessDebounce.restart(); - } - - Binding { - target: widgetOutlineThicknessSlider - property: "value" - value: selectedBarConfig?.widgetOutlineThickness ?? 1 - restoreMode: Binding.RestoreBinding - } - } - } - } - } - - Rectangle { - width: parent.width - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Bar Transparency") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - barTransparencyText.implicitWidth - resetBarTransparencyBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: barTransparencyText - visible: false - text: I18n.tr("Bar Transparency") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetBarTransparencyBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - transparency: 1.0 - }); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: barTransparencySlider - width: parent.width - height: 24 - value: (selectedBarConfig?.transparency ?? 1.0) * 100 - minimum: 0 - maximum: 100 - unit: "%" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - barTransparencyDebounce.pendingValue = newValue / 100; - barTransparencyDebounce.restart(); - } - - Binding { - target: barTransparencySlider - property: "value" - value: (selectedBarConfig?.transparency ?? 1.0) * 100 - restoreMode: Binding.RestoreBinding - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Row { - width: parent.width - spacing: Theme.spacingS - - StyledText { - text: I18n.tr("Widget Transparency") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - font.weight: Font.Medium - anchors.verticalCenter: parent.verticalCenter - } - - Item { - width: parent.width - widgetTransparencyText.implicitWidth - resetWidgetTransparencyBtn.width - Theme.spacingS - Theme.spacingM - height: 1 - - StyledText { - id: widgetTransparencyText - visible: false - text: I18n.tr("Widget Transparency") - font.pixelSize: Theme.fontSizeSmall - } - } - - DankActionButton { - id: resetWidgetTransparencyBtn - buttonSize: 20 - iconName: "refresh" - iconSize: 12 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - onClicked: { - SettingsData.updateBarConfig(selectedBarId, { - widgetTransparency: 1.0 - }); - notifyHorizontalBarChange(); - } - } - - Item { - width: Theme.spacingS - height: 1 - } - } - - DankSlider { - id: widgetTransparencySlider - width: parent.width - height: 24 - value: (selectedBarConfig?.widgetTransparency ?? 1.0) * 100 - minimum: 0 - maximum: 100 - unit: "%" - showValue: true - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - onSliderValueChanged: newValue => { - widgetTransparencyDebounce.pendingValue = newValue / 100; - widgetTransparencyDebounce.restart(); - } - - Binding { - target: widgetTransparencySlider - property: "value" - value: (selectedBarConfig?.widgetTransparency ?? 1.0) * 100 - restoreMode: Binding.RestoreBinding - } - } - } - - Rectangle { - width: parent.width - height: 1 - color: Theme.outline - opacity: 0.2 - } - - Rectangle { - width: parent.width - height: 60 - radius: Theme.cornerRadius - color: "transparent" - - Column { - anchors.left: parent.left - anchors.right: dankBarFontScaleControls.left - anchors.verticalCenter: parent.verticalCenter - anchors.leftMargin: Theme.spacingM - anchors.rightMargin: Theme.spacingM - spacing: Theme.spacingXS - - StyledText { - text: I18n.tr("DankBar Font Scale") - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Scale DankBar font sizes independently") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - } - } - - Row { - id: dankBarFontScaleControls - - width: 180 - height: 36 - anchors.right: parent.right - anchors.rightMargin: 0 - anchors.verticalCenter: parent.verticalCenter - spacing: Theme.spacingS - - DankActionButton { - buttonSize: 32 - iconName: "remove" - iconSize: Theme.iconSizeSmall - enabled: (selectedBarConfig?.fontScale ?? 1.0) > 0.5 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - onClicked: { - var currentScale = selectedBarConfig?.fontScale ?? 1.0; - var newScale = Math.max(0.5, currentScale - 0.05); - SettingsData.updateBarConfig(selectedBarId, { - fontScale: newScale - }); - notifyHorizontalBarChange(); - } - } - - StyledRect { - width: 60 - height: 32 - 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 - - StyledText { - anchors.centerIn: parent - text: ((selectedBarConfig?.fontScale ?? 1.0) * 100).toFixed(0) + "%" - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - color: Theme.surfaceText - } - } - - DankActionButton { - buttonSize: 32 - iconName: "add" - iconSize: Theme.iconSizeSmall - enabled: (selectedBarConfig?.fontScale ?? 1.0) < 2.0 - backgroundColor: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - iconColor: Theme.surfaceText - onClicked: { - var currentScale = selectedBarConfig?.fontScale ?? 1.0; - var newScale = Math.min(2.0, currentScale + 0.05); - SettingsData.updateBarConfig(selectedBarId, { - fontScale: newScale - }); - notifyHorizontalBarChange(); - } - } - } - } - } - } - - StyledRect { - width: parent.width - height: widgetManagementSection.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: selectedBarConfig?.enabled - - Column { - id: widgetManagementSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - RowLayout { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - id: widgetIcon - name: "widgets" - size: Theme.iconSize - color: Theme.primary - Layout.alignment: Qt.AlignVCenter - } - - StyledText { - id: widgetTitle - text: I18n.tr("Widget Management") - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - Layout.alignment: Qt.AlignVCenter - } - - Item { - height: 1 - Layout.fillWidth: true - } - - Rectangle { - id: resetButton - width: 80 - height: 28 - radius: Theme.cornerRadius - color: resetArea.containsMouse ? Theme.surfacePressed : Theme.surfaceVariant - Layout.alignment: Qt.AlignVCenter - border.width: 0 - border.color: resetArea.containsMouse ? Theme.outline : Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.5) - - Row { - anchors.centerIn: parent - spacing: Theme.spacingXS - - DankIcon { - name: "refresh" - size: 14 - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: I18n.tr("Reset") - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - color: Theme.surfaceText + id: deleteBtn + buttonSize: 32 + iconName: "delete" + iconSize: 16 + backgroundColor: Theme.withAlpha(Theme.error, 0.15) + iconColor: Theme.error + visible: barCard.modelData.id !== "default" + enabled: SettingsData.barConfigs.length > 1 anchors.verticalCenter: parent.verticalCenter + onClicked: dankBarTab.deleteBar(barCard.modelData.id) } } MouseArea { - id: resetArea - anchors.fill: parent - hoverEnabled: true + z: -1 cursorShape: Qt.PointingHandCursor - onClicked: { - setWidgetsForSection("left", defaultLeftWidgets); - setWidgetsForSection("center", defaultCenterWidgets); - setWidgetsForSection("right", defaultRightWidgets); - } + onClicked: dankBarTab.selectedBarId = barCard.modelData.id } Behavior on color { @@ -3191,202 +457,772 @@ Item { } } - Behavior on border.color { - ColorAnimation { + Behavior on border.width { + NumberAnimation { duration: Theme.shortDuration easing.type: Theme.standardEasing } } } } + } + } - StyledText { + SettingsCard { + iconName: selectedBarConfig?.enabled ? "visibility" : "visibility_off" + title: I18n.tr("Enable Bar") + visible: selectedBarId !== "default" + + SettingsToggleRow { + text: I18n.tr("Toggle visibility of this bar configuration") + checked: { + selectedBarId; + return selectedBarConfig?.enabled ?? false; + } + onToggled: toggled => dankBarTab.toggleBarEnabled(selectedBarId) + } + } + + SettingsCard { + iconName: "display_settings" + title: I18n.tr("Display Assignment") + visible: selectedBarConfig?.enabled + + StyledText { + width: parent.width + text: I18n.tr("Configure which displays show \"%1\"").replace("%1", selectedBarConfig?.name || "this bar") + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + wrapMode: Text.WordWrap + } + + Column { + id: displayAssignmentColumn + width: parent.width + spacing: Theme.spacingS + + property bool showingAll: { + const prefs = selectedBarConfig?.screenPreferences || ["all"]; + return prefs.includes("all") || (typeof prefs[0] === "string" && prefs[0] === "all"); + } + + SettingsToggleRow { + text: I18n.tr("All displays") + checked: displayAssignmentColumn.showingAll + onToggled: checked => { + if (checked) { + dankBarTab.setBarScreenPreferences(selectedBarId, ["all"]); + } else { + dankBarTab.setBarScreenPreferences(selectedBarId, []); + } + } + } + + SettingsToggleRow { + text: I18n.tr("Show on Last Display") + checked: selectedBarConfig?.showOnLastDisplay ?? true + visible: !displayAssignmentColumn.showingAll + onToggled: checked => dankBarTab.setBarShowOnLastDisplay(selectedBarId, checked) + } + + Rectangle { width: parent.width - text: I18n.tr("Drag widgets to reorder within sections. Use the eye icon to hide/show widgets (maintains spacing), or X to remove them completely.") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap + height: 1 + color: Theme.outline + opacity: 0.15 + visible: !displayAssignmentColumn.showingAll + } + + Column { + width: parent.width + spacing: Theme.spacingXS + visible: !displayAssignmentColumn.showingAll + + Repeater { + model: Quickshell.screens + + delegate: SettingsToggleRow { + id: screenToggle + required property var modelData + + text: SettingsData.getScreenDisplayName(modelData) + description: modelData.width + "×" + modelData.height + " • " + (SettingsData.displayNameMode === "system" ? (modelData.model || "Unknown Model") : modelData.name) + checked: { + const prefs = selectedBarConfig?.screenPreferences || []; + if (typeof prefs[0] === "string" && prefs[0] === "all") + return false; + return SettingsData.isScreenInPreferences(modelData, prefs); + } + onToggled: checked => { + let currentPrefs = selectedBarConfig?.screenPreferences || []; + if (typeof currentPrefs[0] === "string" && currentPrefs[0] === "all") + currentPrefs = []; + + const screenModelIndex = SettingsData.getScreenModelIndex(modelData); + + let newPrefs = currentPrefs.filter(pref => { + if (typeof pref === "string") + return false; + if (pref.modelIndex !== undefined && screenModelIndex >= 0) + return !(pref.model === modelData.model && pref.modelIndex === screenModelIndex); + return pref.name !== modelData.name || pref.model !== modelData.model; + }); + + if (checked) { + const prefObj = { + name: modelData.name, + model: modelData.model || "" + }; + if (screenModelIndex >= 0) + prefObj.modelIndex = screenModelIndex; + newPrefs.push(prefObj); + } + + dankBarTab.setBarScreenPreferences(selectedBarId, newPrefs); + } + } + } } } } - Column { - width: parent.width - spacing: Theme.spacingL + SettingsCard { + iconName: "vertical_align_center" + title: I18n.tr("Position") visible: selectedBarConfig?.enabled - StyledRect { + Item { width: parent.width - height: leftSection.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 + height: positionButtonGroup.height - WidgetsTabSection { - id: leftSection - anchors.fill: parent - anchors.margins: Theme.spacingL - title: selectedBarIsVertical ? I18n.tr("Top Section") : I18n.tr("Left Section") - titleIcon: "format_align_left" - sectionId: "left" - allWidgets: dankBarTab.baseWidgetDefinitions - items: dankBarTab.getItemsForSection("left") - onItemEnabledChanged: (sectionId, itemId, enabled) => { - dankBarTab.handleItemEnabledChanged(sectionId, itemId, enabled); + DankButtonGroup { + id: positionButtonGroup + anchors.horizontalCenter: parent.horizontalCenter + model: [I18n.tr("Top"), I18n.tr("Bottom"), I18n.tr("Left"), I18n.tr("Right")] + currentIndex: { + selectedBarId; + const config = SettingsData.getBarConfig(selectedBarId); + const pos = config?.position ?? 0; + switch (pos) { + case SettingsData.Position.Top: + return 0; + case SettingsData.Position.Bottom: + return 1; + case SettingsData.Position.Left: + return 2; + case SettingsData.Position.Right: + return 3; + default: + return 0; + } } - onItemOrderChanged: newOrder => { - dankBarTab.handleItemOrderChanged(sectionId, newOrder); + onSelectionChanged: (index, selected) => { + if (!selected) + return; + let newPos = 0; + switch (index) { + case 0: + newPos = SettingsData.Position.Top; + break; + case 1: + newPos = SettingsData.Position.Bottom; + break; + case 2: + newPos = SettingsData.Position.Left; + break; + case 3: + newPos = SettingsData.Position.Right; + break; + } + const wasVertical = selectedBarIsVertical; + SettingsData.updateBarConfig(selectedBarId, { + position: newPos + }); + const isVertical = newPos === SettingsData.Position.Left || newPos === SettingsData.Position.Right; + if (wasVertical !== isVertical || !isVertical) + notifyHorizontalBarChange(); } - onAddWidget: sectionId => { - widgetSelectionPopup.targetSection = sectionId; - widgetSelectionPopup.allWidgets = dankBarTab.getWidgetsForPopup(); - widgetSelectionPopup.show(); + } + } + } + + SettingsCard { + iconName: "visibility_off" + title: I18n.tr("Visibility") + visible: selectedBarConfig?.enabled + + SettingsToggleRow { + text: I18n.tr("Auto-hide") + checked: selectedBarConfig?.autoHide ?? false + onToggled: toggled => { + SettingsData.updateBarConfig(selectedBarId, { + autoHide: toggled + }); + notifyHorizontalBarChange(); + } + } + + Column { + width: parent.width + spacing: Theme.spacingS + visible: selectedBarConfig?.autoHide ?? false + leftPadding: Theme.spacingM + + Rectangle { + width: parent.width - parent.leftPadding + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsSliderRow { + id: hideDelaySlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Hide Delay") + value: selectedBarConfig?.autoHideDelay ?? 250 + minimum: 0 + maximum: 2000 + unit: "ms" + defaultValue: 250 + onSliderValueChanged: newValue => { + SettingsData.updateBarConfig(selectedBarId, { + autoHideDelay: newValue + }); + notifyHorizontalBarChange(); } - onRemoveWidget: (sectionId, index) => { - dankBarTab.removeWidgetFromSection(sectionId, index); - } - onSpacerSizeChanged: (sectionId, index, size) => { - dankBarTab.handleSpacerSizeChanged(sectionId, index, size); - } - onGpuSelectionChanged: (sectionId, index, gpuIndex) => { - dankBarTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); - } - onDiskMountSelectionChanged: (sectionId, index, mountPath) => { - dankBarTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); - } - onControlCenterSettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handleControlCenterSettingChanged(sectionId, index, setting, value); - } - onPrivacySettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handlePrivacySettingChanged(sectionId, index, setting, value); - } - onMinimumWidthChanged: (sectionId, index, enabled) => { - dankBarTab.handleMinimumWidthChanged(sectionId, index, enabled); - } - onShowSwapChanged: (sectionId, index, enabled) => { - dankBarTab.handleShowSwapChanged(sectionId, index, enabled); - } - onCompactModeChanged: (widgetId, value) => { - dankBarTab.handleCompactModeChanged(sectionId, widgetId, value); + + Binding { + target: hideDelaySlider + property: "value" + value: selectedBarConfig?.autoHideDelay ?? 250 + restoreMode: Binding.RestoreBinding } } } - StyledRect { + Rectangle { width: parent.width - height: centerSection.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 + height: 1 + color: Theme.outline + opacity: 0.15 + } - WidgetsTabSection { - id: centerSection - anchors.fill: parent - anchors.margins: Theme.spacingL - title: selectedBarIsVertical ? I18n.tr("Middle Section") : I18n.tr("Center Section") - titleIcon: "format_align_center" - sectionId: "center" - allWidgets: dankBarTab.baseWidgetDefinitions - items: dankBarTab.getItemsForSection("center") - onItemEnabledChanged: (sectionId, itemId, enabled) => { - dankBarTab.handleItemEnabledChanged(sectionId, itemId, enabled); - } - onItemOrderChanged: newOrder => { - dankBarTab.handleItemOrderChanged(sectionId, newOrder); - } - onAddWidget: sectionId => { - widgetSelectionPopup.targetSection = sectionId; - widgetSelectionPopup.allWidgets = dankBarTab.getWidgetsForPopup(); - widgetSelectionPopup.show(); - } - onRemoveWidget: (sectionId, index) => { - dankBarTab.removeWidgetFromSection(sectionId, index); - } - onSpacerSizeChanged: (sectionId, index, size) => { - dankBarTab.handleSpacerSizeChanged(sectionId, index, size); - } - onGpuSelectionChanged: (sectionId, index, gpuIndex) => { - dankBarTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); - } - onDiskMountSelectionChanged: (sectionId, index, mountPath) => { - dankBarTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); - } - onControlCenterSettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handleControlCenterSettingChanged(sectionId, index, setting, value); - } - onPrivacySettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handlePrivacySettingChanged(sectionId, index, setting, value); - } - onMinimumWidthChanged: (sectionId, index, enabled) => { - dankBarTab.handleMinimumWidthChanged(sectionId, index, enabled); - } - onShowSwapChanged: (sectionId, index, enabled) => { - dankBarTab.handleShowSwapChanged(sectionId, index, enabled); - } - onCompactModeChanged: (widgetId, value) => { - dankBarTab.handleCompactModeChanged(sectionId, widgetId, value); - } + SettingsToggleRow { + text: I18n.tr("Manual Show/Hide") + checked: selectedBarConfig?.visible ?? true + onToggled: toggled => { + SettingsData.updateBarConfig(selectedBarId, { + visible: toggled + }); + notifyHorizontalBarChange(); } } - StyledRect { + Rectangle { width: parent.width - height: rightSection.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 + height: 1 + color: Theme.outline + opacity: 0.15 + visible: CompositorService.isNiri + } - WidgetsTabSection { - id: rightSection - anchors.fill: parent - anchors.margins: Theme.spacingL - title: selectedBarIsVertical ? I18n.tr("Bottom Section") : I18n.tr("Right Section") - titleIcon: "format_align_right" - sectionId: "right" - allWidgets: dankBarTab.baseWidgetDefinitions - items: dankBarTab.getItemsForSection("right") - onItemEnabledChanged: (sectionId, itemId, enabled) => { - dankBarTab.handleItemEnabledChanged(sectionId, itemId, enabled); + SettingsToggleRow { + visible: CompositorService.isNiri + text: I18n.tr("Show on Overview") + checked: selectedBarConfig?.openOnOverview ?? false + onToggled: toggled => { + SettingsData.updateBarConfig(selectedBarId, { + openOnOverview: toggled + }); + notifyHorizontalBarChange(); + } + } + } + + SettingsCard { + iconName: "space_bar" + title: I18n.tr("Spacing") + visible: selectedBarConfig?.enabled + + SettingsSliderRow { + id: edgeSpacingSlider + text: I18n.tr("Edge Spacing") + value: selectedBarConfig?.spacing ?? 4 + minimum: 0 + maximum: 32 + defaultValue: 4 + onSliderValueChanged: newValue => { + edgeSpacingDebounce.pendingValue = newValue; + edgeSpacingDebounce.restart(); + } + + Binding { + target: edgeSpacingSlider + property: "value" + value: selectedBarConfig?.spacing ?? 4 + restoreMode: Binding.RestoreBinding + } + } + + SettingsSliderRow { + id: exclusiveZoneSlider + text: I18n.tr("Exclusive Zone Offset") + value: selectedBarConfig?.bottomGap ?? 0 + minimum: -50 + maximum: 50 + defaultValue: 0 + onSliderValueChanged: newValue => { + exclusiveZoneDebounce.pendingValue = newValue; + exclusiveZoneDebounce.restart(); + } + + Binding { + target: exclusiveZoneSlider + property: "value" + value: selectedBarConfig?.bottomGap ?? 0 + restoreMode: Binding.RestoreBinding + } + } + + SettingsSliderRow { + id: sizeSlider + text: I18n.tr("Size") + value: selectedBarConfig?.innerPadding ?? 4 + minimum: -8 + maximum: 24 + defaultValue: 4 + onSliderValueChanged: newValue => { + sizeDebounce.pendingValue = newValue; + sizeDebounce.restart(); + } + + Binding { + target: sizeSlider + property: "value" + value: selectedBarConfig?.innerPadding ?? 4 + restoreMode: Binding.RestoreBinding + } + } + + Rectangle { + width: parent.width + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsToggleRow { + text: I18n.tr("Auto Popup Gaps") + checked: selectedBarConfig?.popupGapsAuto ?? true + onToggled: checked => { + SettingsData.updateBarConfig(selectedBarId, { + popupGapsAuto: checked + }); + notifyHorizontalBarChange(); + } + } + + Column { + width: parent.width + leftPadding: Theme.spacingM + spacing: Theme.spacingM + visible: !(selectedBarConfig?.popupGapsAuto ?? true) + + Rectangle { + width: parent.width - parent.leftPadding + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsSliderRow { + id: popupGapsManualSlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Manual Gap Size") + value: selectedBarConfig?.popupGapsManual ?? 4 + minimum: 0 + maximum: 50 + defaultValue: 4 + onSliderValueChanged: newValue => { + popupGapsManualDebounce.pendingValue = newValue; + popupGapsManualDebounce.restart(); } - onItemOrderChanged: newOrder => { - dankBarTab.handleItemOrderChanged(sectionId, newOrder); + + Binding { + target: popupGapsManualSlider + property: "value" + value: selectedBarConfig?.popupGapsManual ?? 4 + restoreMode: Binding.RestoreBinding } - onAddWidget: sectionId => { - widgetSelectionPopup.targetSection = sectionId; - widgetSelectionPopup.allWidgets = dankBarTab.getWidgetsForPopup(); - widgetSelectionPopup.show(); + } + } + } + + SettingsCard { + iconName: "rounded_corner" + title: I18n.tr("Corners & Background") + visible: selectedBarConfig?.enabled + + SettingsToggleRow { + text: I18n.tr("Square Corners") + checked: selectedBarConfig?.squareCorners ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + squareCorners: checked + }) + } + + SettingsToggleRow { + text: I18n.tr("No Background") + checked: selectedBarConfig?.noBackground ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + noBackground: checked + }) + } + + Rectangle { + width: parent.width + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsToggleRow { + text: I18n.tr("Goth Corners") + checked: selectedBarConfig?.gothCornersEnabled ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + gothCornersEnabled: checked + }) + } + + SettingsToggleRow { + text: I18n.tr("Corner Radius Override") + checked: selectedBarConfig?.gothCornerRadiusOverride ?? false + visible: selectedBarConfig?.gothCornersEnabled ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + gothCornerRadiusOverride: checked + }) + } + + Column { + width: parent.width + spacing: Theme.spacingS + visible: (selectedBarConfig?.gothCornersEnabled ?? false) && (selectedBarConfig?.gothCornerRadiusOverride ?? false) + leftPadding: Theme.spacingM + + SettingsSliderRow { + id: gothCornerRadiusSlider + width: parent.width - parent.leftPadding + text: I18n.tr("Goth Corner Radius") + value: selectedBarConfig?.gothCornerRadiusValue ?? 12 + minimum: 0 + maximum: 64 + defaultValue: 12 + onSliderValueChanged: newValue => { + gothCornerRadiusDebounce.pendingValue = newValue; + gothCornerRadiusDebounce.restart(); } - onRemoveWidget: (sectionId, index) => { - dankBarTab.removeWidgetFromSection(sectionId, index); + + Binding { + target: gothCornerRadiusSlider + property: "value" + value: selectedBarConfig?.gothCornerRadiusValue ?? 12 + restoreMode: Binding.RestoreBinding } - onSpacerSizeChanged: (sectionId, index, size) => { - dankBarTab.handleSpacerSizeChanged(sectionId, index, size); + } + } + } + + SettingsCard { + iconName: "border_style" + title: I18n.tr("Border") + visible: selectedBarConfig?.enabled + + SettingsToggleRow { + text: I18n.tr("Enable Border") + checked: selectedBarConfig?.borderEnabled ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + borderEnabled: checked + }) + } + + Column { + width: parent.width + leftPadding: Theme.spacingM + spacing: Theme.spacingM + visible: selectedBarConfig?.borderEnabled ?? false + + Rectangle { + width: parent.width - parent.leftPadding + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsButtonGroupRow { + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Color") + model: ["Surface", "Secondary", "Primary"] + currentIndex: { + switch (selectedBarConfig?.borderColor || "surfaceText") { + case "surfaceText": + return 0; + case "secondary": + return 1; + case "primary": + return 2; + default: + return 0; + } } - onGpuSelectionChanged: (sectionId, index, gpuIndex) => { - dankBarTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); + onSelectionChanged: (index, selected) => { + if (!selected) + return; + let newColor = "surfaceText"; + switch (index) { + case 0: + newColor = "surfaceText"; + break; + case 1: + newColor = "secondary"; + break; + case 2: + newColor = "primary"; + break; + } + SettingsData.updateBarConfig(selectedBarId, { + borderColor: newColor + }); } - onDiskMountSelectionChanged: (sectionId, index, mountPath) => { - dankBarTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); + } + + SettingsSliderRow { + id: borderOpacitySlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Border Opacity") + value: (selectedBarConfig?.borderOpacity ?? 1.0) * 100 + minimum: 0 + maximum: 100 + unit: "%" + defaultValue: 100 + onSliderValueChanged: newValue => { + borderOpacityDebounce.pendingValue = newValue / 100; + borderOpacityDebounce.restart(); } - onControlCenterSettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handleControlCenterSettingChanged(sectionId, index, setting, value); + + Binding { + target: borderOpacitySlider + property: "value" + value: (selectedBarConfig?.borderOpacity ?? 1.0) * 100 + restoreMode: Binding.RestoreBinding } - onPrivacySettingChanged: (sectionId, index, setting, value) => { - dankBarTab.handlePrivacySettingChanged(sectionId, index, setting, value); + } + + SettingsSliderRow { + id: borderThicknessSlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Border Thickness") + value: selectedBarConfig?.borderThickness ?? 1 + minimum: 1 + maximum: 10 + unit: "px" + defaultValue: 1 + onSliderValueChanged: newValue => { + borderThicknessDebounce.pendingValue = newValue; + borderThicknessDebounce.restart(); } - onMinimumWidthChanged: (sectionId, index, enabled) => { - dankBarTab.handleMinimumWidthChanged(sectionId, index, enabled); + + Binding { + target: borderThicknessSlider + property: "value" + value: selectedBarConfig?.borderThickness ?? 1 + restoreMode: Binding.RestoreBinding } - onShowSwapChanged: (sectionId, index, enabled) => { - dankBarTab.handleShowSwapChanged(sectionId, index, enabled); + } + } + } + + SettingsCard { + iconName: "highlight" + title: I18n.tr("Widget Outline") + visible: selectedBarConfig?.enabled + + SettingsToggleRow { + text: I18n.tr("Enable Widget Outline") + checked: selectedBarConfig?.widgetOutlineEnabled ?? false + onToggled: checked => SettingsData.updateBarConfig(selectedBarId, { + widgetOutlineEnabled: checked + }) + } + + Column { + width: parent.width + leftPadding: Theme.spacingM + spacing: Theme.spacingM + visible: selectedBarConfig?.widgetOutlineEnabled ?? false + + Rectangle { + width: parent.width - parent.leftPadding + height: 1 + color: Theme.outline + opacity: 0.15 + } + + SettingsButtonGroupRow { + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Color") + model: ["Surface", "Secondary", "Primary"] + currentIndex: { + switch (selectedBarConfig?.widgetOutlineColor || "primary") { + case "surfaceText": + return 0; + case "secondary": + return 1; + case "primary": + return 2; + default: + return 2; + } } - onCompactModeChanged: (widgetId, value) => { - dankBarTab.handleCompactModeChanged(sectionId, widgetId, value); + onSelectionChanged: (index, selected) => { + if (!selected) + return; + let newColor = "primary"; + switch (index) { + case 0: + newColor = "surfaceText"; + break; + case 1: + newColor = "secondary"; + break; + case 2: + newColor = "primary"; + break; + } + SettingsData.updateBarConfig(selectedBarId, { + widgetOutlineColor: newColor + }); } } + + SettingsSliderRow { + id: widgetOutlineOpacitySlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Outline Opacity") + value: (selectedBarConfig?.widgetOutlineOpacity ?? 1.0) * 100 + minimum: 0 + maximum: 100 + unit: "%" + defaultValue: 100 + onSliderValueChanged: newValue => { + widgetOutlineOpacityDebounce.pendingValue = newValue / 100; + widgetOutlineOpacityDebounce.restart(); + } + + Binding { + target: widgetOutlineOpacitySlider + property: "value" + value: (selectedBarConfig?.widgetOutlineOpacity ?? 1.0) * 100 + restoreMode: Binding.RestoreBinding + } + } + + SettingsSliderRow { + id: widgetOutlineThicknessSlider + width: parent.width - parent.parent.leftPadding + text: I18n.tr("Outline Thickness") + value: selectedBarConfig?.widgetOutlineThickness ?? 1 + minimum: 1 + maximum: 10 + unit: "px" + defaultValue: 1 + onSliderValueChanged: newValue => { + widgetOutlineThicknessDebounce.pendingValue = newValue; + widgetOutlineThicknessDebounce.restart(); + } + + Binding { + target: widgetOutlineThicknessSlider + property: "value" + value: selectedBarConfig?.widgetOutlineThickness ?? 1 + restoreMode: Binding.RestoreBinding + } + } + } + } + + SettingsCard { + iconName: "opacity" + title: I18n.tr("Transparency") + visible: selectedBarConfig?.enabled + + SettingsSliderRow { + id: barTransparencySlider + text: I18n.tr("Bar Transparency") + value: (selectedBarConfig?.transparency ?? 1.0) * 100 + minimum: 0 + maximum: 100 + unit: "%" + defaultValue: 100 + onSliderValueChanged: newValue => { + barTransparencyDebounce.pendingValue = newValue / 100; + barTransparencyDebounce.restart(); + } + + Binding { + target: barTransparencySlider + property: "value" + value: (selectedBarConfig?.transparency ?? 1.0) * 100 + restoreMode: Binding.RestoreBinding + } + } + + SettingsSliderRow { + id: widgetTransparencySlider + text: I18n.tr("Widget Transparency") + value: (selectedBarConfig?.widgetTransparency ?? 1.0) * 100 + minimum: 0 + maximum: 100 + unit: "%" + defaultValue: 100 + onSliderValueChanged: newValue => { + widgetTransparencyDebounce.pendingValue = newValue / 100; + widgetTransparencyDebounce.restart(); + } + + Binding { + target: widgetTransparencySlider + property: "value" + value: (selectedBarConfig?.widgetTransparency ?? 1.0) * 100 + restoreMode: Binding.RestoreBinding + } + } + } + + SettingsCard { + iconName: "text_fields" + title: I18n.tr("Font Scale") + visible: selectedBarConfig?.enabled + + SettingsSliderRow { + id: fontScaleSlider + text: I18n.tr("DankBar Font Scale") + description: I18n.tr("Scale DankBar font sizes independently") + minimum: 50 + maximum: 200 + value: Math.round((selectedBarConfig?.fontScale ?? 1.0) * 100) + unit: "%" + defaultValue: 100 + onSliderValueChanged: newValue => { + fontScaleDebounce.pendingValue = newValue / 100; + fontScaleDebounce.restart(); + } + + Binding { + target: fontScaleSlider + property: "value" + value: Math.round((selectedBarConfig?.fontScale ?? 1.0) * 100) + restoreMode: Binding.RestoreBinding + } } } } diff --git a/quickshell/Modules/Settings/WidgetsTab.qml b/quickshell/Modules/Settings/WidgetsTab.qml new file mode 100644 index 00000000..09c12efc --- /dev/null +++ b/quickshell/Modules/Settings/WidgetsTab.qml @@ -0,0 +1,1181 @@ +import QtQuick +import QtQuick.Layouts +import qs.Common +import qs.Services +import qs.Widgets + +Item { + id: widgetsTab + + property var parentModal: null + property string selectedBarId: "default" + + property var selectedBarConfig: { + selectedBarId; + SettingsData.barConfigs; + const index = SettingsData.barConfigs.findIndex(cfg => cfg.id === selectedBarId); + return index !== -1 ? SettingsData.barConfigs[index] : SettingsData.barConfigs[0]; + } + + property bool selectedBarIsVertical: { + selectedBarId; + const pos = selectedBarConfig?.position ?? SettingsData.Position.Top; + return pos === SettingsData.Position.Left || pos === SettingsData.Position.Right; + } + + property bool hasMultipleBars: SettingsData.barConfigs.length > 1 + + DankTooltipV2 { + id: sharedTooltip + } + + property var baseWidgetDefinitions: { + var coreWidgets = [ + { + "id": "layout", + "text": I18n.tr("Layout"), + "description": I18n.tr("Display and switch DWL layouts"), + "icon": "view_quilt", + "enabled": CompositorService.isDwl && DwlService.dwlAvailable, + "warning": !CompositorService.isDwl ? I18n.tr("Requires DWL compositor") : (!DwlService.dwlAvailable ? I18n.tr("DWL service not available") : undefined) + }, + { + "id": "launcherButton", + "text": I18n.tr("App Launcher"), + "description": I18n.tr("Quick access to application launcher"), + "icon": "apps", + "enabled": true + }, + { + "id": "workspaceSwitcher", + "text": I18n.tr("Workspace Switcher"), + "description": I18n.tr("Shows current workspace and allows switching"), + "icon": "view_module", + "enabled": true + }, + { + "id": "focusedWindow", + "text": I18n.tr("Focused Window"), + "description": I18n.tr("Display currently focused application title"), + "icon": "window", + "enabled": true + }, + { + "id": "runningApps", + "text": I18n.tr("Running Apps"), + "description": I18n.tr("Shows all running applications with focus indication"), + "icon": "apps", + "enabled": true + }, + { + "id": "clock", + "text": I18n.tr("Clock"), + "description": I18n.tr("Current time and date display"), + "icon": "schedule", + "enabled": true + }, + { + "id": "weather", + "text": I18n.tr("Weather Widget"), + "description": I18n.tr("Current weather conditions and temperature"), + "icon": "wb_sunny", + "enabled": true + }, + { + "id": "music", + "text": I18n.tr("Media Controls"), + "description": I18n.tr("Control currently playing media"), + "icon": "music_note", + "enabled": true + }, + { + "id": "clipboard", + "text": I18n.tr("Clipboard Manager"), + "description": I18n.tr("Access clipboard history"), + "icon": "content_paste", + "enabled": true + }, + { + "id": "cpuUsage", + "text": I18n.tr("CPU Usage"), + "description": I18n.tr("CPU usage indicator"), + "icon": "memory", + "enabled": DgopService.dgopAvailable, + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined + }, + { + "id": "memUsage", + "text": I18n.tr("Memory Usage"), + "description": I18n.tr("Memory usage indicator"), + "icon": "developer_board", + "enabled": DgopService.dgopAvailable, + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined + }, + { + "id": "diskUsage", + "text": I18n.tr("Disk Usage"), + "description": I18n.tr("Percentage"), + "icon": "storage", + "enabled": DgopService.dgopAvailable, + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined + }, + { + "id": "cpuTemp", + "text": I18n.tr("CPU Temperature"), + "description": I18n.tr("CPU temperature display"), + "icon": "device_thermostat", + "enabled": DgopService.dgopAvailable, + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined + }, + { + "id": "gpuTemp", + "text": I18n.tr("GPU Temperature"), + "description": I18n.tr("GPU temperature display"), + "icon": "auto_awesome_mosaic", + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : I18n.tr("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."), + "enabled": DgopService.dgopAvailable + }, + { + "id": "systemTray", + "text": I18n.tr("System Tray"), + "description": I18n.tr("System notification area icons"), + "icon": "notifications", + "enabled": true + }, + { + "id": "privacyIndicator", + "text": I18n.tr("Privacy Indicator"), + "description": I18n.tr("Shows when microphone, camera, or screen sharing is active"), + "icon": "privacy_tip", + "enabled": true + }, + { + "id": "controlCenterButton", + "text": I18n.tr("Control Center"), + "description": I18n.tr("Access to system controls and settings"), + "icon": "settings", + "enabled": true + }, + { + "id": "notificationButton", + "text": I18n.tr("Notification Center"), + "description": I18n.tr("Access to notifications and do not disturb"), + "icon": "notifications", + "enabled": true + }, + { + "id": "battery", + "text": I18n.tr("Battery"), + "description": I18n.tr("Battery level and power management"), + "icon": "battery_std", + "enabled": true + }, + { + "id": "vpn", + "text": I18n.tr("VPN"), + "description": I18n.tr("VPN status and quick connect"), + "icon": "vpn_lock", + "enabled": true + }, + { + "id": "idleInhibitor", + "text": I18n.tr("Idle Inhibitor"), + "description": I18n.tr("Prevent screen timeout"), + "icon": "motion_sensor_active", + "enabled": true + }, + { + "id": "capsLockIndicator", + "text": I18n.tr("Caps Lock Indicator"), + "description": I18n.tr("Shows when caps lock is active"), + "icon": "shift_lock", + "enabled": true + }, + { + "id": "spacer", + "text": I18n.tr("Spacer"), + "description": I18n.tr("Customizable empty space"), + "icon": "more_horiz", + "enabled": true + }, + { + "id": "separator", + "text": I18n.tr("Separator"), + "description": I18n.tr("Visual divider between widgets"), + "icon": "remove", + "enabled": true + }, + { + "id": "network_speed_monitor", + "text": I18n.tr("Network Speed Monitor"), + "description": I18n.tr("Network download and upload speed display"), + "icon": "network_check", + "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined, + "enabled": DgopService.dgopAvailable + }, + { + "id": "keyboard_layout_name", + "text": I18n.tr("Keyboard Layout Name"), + "description": I18n.tr("Displays the active keyboard layout and allows switching"), + "icon": "keyboard" + }, + { + "id": "notepadButton", + "text": I18n.tr("Notepad"), + "description": I18n.tr("Quick access to notepad"), + "icon": "assignment", + "enabled": true + }, + { + "id": "colorPicker", + "text": I18n.tr("Color Picker"), + "description": I18n.tr("Quick access to color picker"), + "icon": "palette", + "enabled": true + }, + { + "id": "systemUpdate", + "text": I18n.tr("System Update"), + "description": I18n.tr("Check for system updates"), + "icon": "update", + "enabled": SystemUpdateService.distributionSupported + } + ]; + + var allPluginVariants = PluginService.getAllPluginVariants(); + for (var i = 0; i < allPluginVariants.length; i++) { + var variant = allPluginVariants[i]; + coreWidgets.push({ + "id": variant.fullId, + "text": variant.name, + "description": variant.description, + "icon": variant.icon, + "enabled": variant.loaded, + "warning": !variant.loaded ? I18n.tr("Plugin is disabled - enable in Plugins settings to use") : undefined + }); + } + + return coreWidgets; + } + + property var defaultLeftWidgets: [ + { + "id": "launcherButton", + "enabled": true + }, + { + "id": "workspaceSwitcher", + "enabled": true + }, + { + "id": "focusedWindow", + "enabled": true + } + ] + property var defaultCenterWidgets: [ + { + "id": "music", + "enabled": true + }, + { + "id": "clock", + "enabled": true + }, + { + "id": "weather", + "enabled": true + } + ] + property var defaultRightWidgets: [ + { + "id": "systemTray", + "enabled": true + }, + { + "id": "clipboard", + "enabled": true + }, + { + "id": "notificationButton", + "enabled": true + }, + { + "id": "battery", + "enabled": true + }, + { + "id": "controlCenterButton", + "enabled": true + } + ] + + function getWidgetsForSection(sectionId) { + switch (sectionId) { + case "left": + return selectedBarConfig?.leftWidgets || []; + case "center": + return selectedBarConfig?.centerWidgets || []; + case "right": + return selectedBarConfig?.rightWidgets || []; + default: + return []; + } + } + + function setWidgetsForSection(sectionId, widgets) { + switch (sectionId) { + case "left": + SettingsData.updateBarConfig(selectedBarId, { + leftWidgets: widgets + }); + break; + case "center": + SettingsData.updateBarConfig(selectedBarId, { + centerWidgets: widgets + }); + break; + case "right": + SettingsData.updateBarConfig(selectedBarId, { + rightWidgets: widgets + }); + break; + } + } + + function getWidgetsForPopup() { + return baseWidgetDefinitions.filter(widget => { + if (widget.warning && widget.warning.includes("Plugin is disabled")) + return false; + if (widget.enabled === false) + return false; + return true; + }); + } + + function addWidgetToSection(widgetId, targetSection) { + var widgetObj = { + "id": widgetId, + "enabled": true + }; + if (widgetId === "spacer") + widgetObj.size = 20; + if (widgetId === "gpuTemp") { + widgetObj.selectedGpuIndex = 0; + widgetObj.pciId = ""; + } + if (widgetId === "controlCenterButton") { + widgetObj.showNetworkIcon = true; + widgetObj.showBluetoothIcon = true; + widgetObj.showAudioIcon = true; + } + if (widgetId === "diskUsage") + widgetObj.mountPath = "/"; + if (widgetId === "cpuUsage" || widgetId === "memUsage" || widgetId === "cpuTemp" || widgetId === "gpuTemp") + widgetObj.minimumWidth = true; + + var widgets = getWidgetsForSection(targetSection).slice(); + widgets.push(widgetObj); + setWidgetsForSection(targetSection, widgets); + } + + function removeWidgetFromSection(sectionId, widgetIndex) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex >= 0 && widgetIndex < widgets.length) + widgets.splice(widgetIndex, 1); + setWidgetsForSection(sectionId, widgets); + } + + function handleItemEnabledChanged(sectionId, itemId, enabled) { + var widgets = getWidgetsForSection(sectionId).slice(); + for (var i = 0; i < widgets.length; i++) { + var widget = widgets[i]; + var widgetId = typeof widget === "string" ? widget : widget.id; + if (widgetId !== itemId) + continue; + + if (typeof widget === "string") { + widgets[i] = { + "id": widget, + "enabled": enabled + }; + break; + } + + var newWidget = { + "id": widget.id, + "enabled": enabled + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + else if (widget.id === "gpuTemp") + newWidget.selectedGpuIndex = 0; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + else if (widget.id === "gpuTemp") + newWidget.pciId = ""; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[i] = newWidget; + break; + } + setWidgetsForSection(sectionId, widgets); + } + + function handleItemOrderChanged(sectionId, newOrder) { + setWidgetsForSection(sectionId, newOrder); + } + + function handleSpacerSizeChanged(sectionId, widgetIndex, newSize) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex < 0 || widgetIndex >= widgets.length) { + setWidgetsForSection(sectionId, widgets); + return; + } + + var widget = widgets[widgetIndex]; + var widgetId = typeof widget === "string" ? widget : widget.id; + if (widgetId !== "spacer") { + setWidgetsForSection(sectionId, widgets); + return; + } + + if (typeof widget === "string") { + widgets[widgetIndex] = { + "id": widget, + "enabled": true, + "size": newSize + }; + setWidgetsForSection(sectionId, widgets); + return; + } + + var newWidget = { + "id": widget.id, + "enabled": widget.enabled, + "size": newSize + }; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[widgetIndex] = newWidget; + setWidgetsForSection(sectionId, widgets); + } + + function handleGpuSelectionChanged(sectionId, widgetIndex, selectedGpuIndex) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex < 0 || widgetIndex >= widgets.length) { + setWidgetsForSection(sectionId, widgets); + return; + } + + var pciId = DgopService.availableGpus && DgopService.availableGpus.length > selectedGpuIndex ? DgopService.availableGpus[selectedGpuIndex].pciId : ""; + var widget = widgets[widgetIndex]; + if (typeof widget === "string") { + widgets[widgetIndex] = { + "id": widget, + "enabled": true, + "selectedGpuIndex": selectedGpuIndex, + "pciId": pciId + }; + setWidgetsForSection(sectionId, widgets); + return; + } + + var newWidget = { + "id": widget.id, + "enabled": widget.enabled, + "selectedGpuIndex": selectedGpuIndex, + "pciId": pciId + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + widgets[widgetIndex] = newWidget; + setWidgetsForSection(sectionId, widgets); + } + + function handleDiskMountSelectionChanged(sectionId, widgetIndex, mountPath) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex < 0 || widgetIndex >= widgets.length) { + setWidgetsForSection(sectionId, widgets); + return; + } + + var widget = widgets[widgetIndex]; + if (typeof widget === "string") { + widgets[widgetIndex] = { + "id": widget, + "enabled": true, + "mountPath": mountPath + }; + setWidgetsForSection(sectionId, widgets); + return; + } + + var newWidget = { + "id": widget.id, + "enabled": widget.enabled, + "mountPath": mountPath + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[widgetIndex] = newWidget; + setWidgetsForSection(sectionId, widgets); + } + + function handleControlCenterSettingChanged(sectionId, widgetIndex, settingName, value) { + switch (settingName) { + case "showNetworkIcon": + SettingsData.set("controlCenterShowNetworkIcon", value); + break; + case "showBluetoothIcon": + SettingsData.set("controlCenterShowBluetoothIcon", value); + break; + case "showAudioIcon": + SettingsData.set("controlCenterShowAudioIcon", value); + break; + case "showVpnIcon": + SettingsData.set("controlCenterShowVpnIcon", value); + break; + case "showBrightnessIcon": + SettingsData.set("controlCenterShowBrightnessIcon", value); + break; + case "showMicIcon": + SettingsData.set("controlCenterShowMicIcon", value); + break; + case "showBatteryIcon": + SettingsData.set("controlCenterShowBatteryIcon", value); + break; + case "showPrinterIcon": + SettingsData.set("controlCenterShowPrinterIcon", value); + break; + } + } + + function handlePrivacySettingChanged(sectionId, widgetIndex, settingName, value) { + switch (settingName) { + case "showMicIcon": + SettingsData.set("privacyShowMicIcon", value); + break; + case "showCameraIcon": + SettingsData.set("privacyShowCameraIcon", value); + break; + case "showScreenSharingIcon": + SettingsData.set("privacyShowScreenShareIcon", value); + break; + } + } + + function handleMinimumWidthChanged(sectionId, widgetIndex, enabled) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex < 0 || widgetIndex >= widgets.length) { + setWidgetsForSection(sectionId, widgets); + return; + } + + var widget = widgets[widgetIndex]; + if (typeof widget === "string") { + widgets[widgetIndex] = { + "id": widget, + "enabled": true, + "minimumWidth": enabled + }; + setWidgetsForSection(sectionId, widgets); + return; + } + + var newWidget = { + "id": widget.id, + "enabled": widget.enabled, + "minimumWidth": enabled + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + if (widget.mountPath !== undefined) + newWidget.mountPath = widget.mountPath; + if (widget.showSwap !== undefined) + newWidget.showSwap = widget.showSwap; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[widgetIndex] = newWidget; + setWidgetsForSection(sectionId, widgets); + } + + function handleShowSwapChanged(sectionId, widgetIndex, enabled) { + var widgets = getWidgetsForSection(sectionId).slice(); + if (widgetIndex < 0 || widgetIndex >= widgets.length) { + setWidgetsForSection(sectionId, widgets); + return; + } + + var widget = widgets[widgetIndex]; + if (typeof widget === "string") { + widgets[widgetIndex] = { + "id": widget, + "enabled": true, + "showSwap": enabled + }; + setWidgetsForSection(sectionId, widgets); + return; + } + + var newWidget = { + "id": widget.id, + "enabled": widget.enabled, + "showSwap": enabled + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + if (widget.mountPath !== undefined) + newWidget.mountPath = widget.mountPath; + if (widget.minimumWidth !== undefined) + newWidget.minimumWidth = widget.minimumWidth; + if (widget.mediaSize !== undefined) + newWidget.mediaSize = widget.mediaSize; + if (widget.clockCompactMode !== undefined) + newWidget.clockCompactMode = widget.clockCompactMode; + if (widget.focusedWindowCompactMode !== undefined) + newWidget.focusedWindowCompactMode = widget.focusedWindowCompactMode; + if (widget.runningAppsCompactMode !== undefined) + newWidget.runningAppsCompactMode = widget.runningAppsCompactMode; + if (widget.keyboardLayoutNameCompactMode !== undefined) + newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[widgetIndex] = newWidget; + setWidgetsForSection(sectionId, widgets); + } + + function handleCompactModeChanged(sectionId, widgetId, value) { + var widgets = getWidgetsForSection(sectionId).slice(); + + for (var i = 0; i < widgets.length; i++) { + var widget = widgets[i]; + var currentId = typeof widget === "string" ? widget : widget.id; + + if (currentId !== widgetId) + continue; + + if (typeof widget === "string") { + widgets[i] = { + "id": widget, + "enabled": true + }; + widget = widgets[i]; + } else { + var newWidget = { + "id": widget.id, + "enabled": widget.enabled + }; + if (widget.size !== undefined) + newWidget.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + newWidget.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + newWidget.pciId = widget.pciId; + if (widget.mountPath !== undefined) + newWidget.mountPath = widget.mountPath; + if (widget.minimumWidth !== undefined) + newWidget.minimumWidth = widget.minimumWidth; + if (widget.showSwap !== undefined) + newWidget.showSwap = widget.showSwap; + if (widget.mediaSize !== undefined) + newWidget.mediaSize = widget.mediaSize; + if (widget.clockCompactMode !== undefined) + newWidget.clockCompactMode = widget.clockCompactMode; + if (widget.focusedWindowCompactMode !== undefined) + newWidget.focusedWindowCompactMode = widget.focusedWindowCompactMode; + if (widget.runningAppsCompactMode !== undefined) + newWidget.runningAppsCompactMode = widget.runningAppsCompactMode; + if (widget.keyboardLayoutNameCompactMode !== undefined) + newWidget.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; + if (widget.id === "controlCenterButton") { + newWidget.showNetworkIcon = widget.showNetworkIcon ?? true; + newWidget.showBluetoothIcon = widget.showBluetoothIcon ?? true; + newWidget.showAudioIcon = widget.showAudioIcon ?? true; + } + widgets[i] = newWidget; + widget = newWidget; + } + + switch (widgetId) { + case "music": + widget.mediaSize = value; + break; + case "clock": + widget.clockCompactMode = value; + break; + case "focusedWindow": + widget.focusedWindowCompactMode = value; + break; + case "runningApps": + widget.runningAppsCompactMode = value; + break; + case "keyboard_layout_name": + widget.keyboardLayoutNameCompactMode = value; + break; + } + + break; + } + + setWidgetsForSection(sectionId, widgets); + } + + function getItemsForSection(sectionId) { + var widgets = []; + var widgetData = getWidgetsForSection(sectionId); + widgetData.forEach(widget => { + var isString = typeof widget === "string"; + var widgetId = isString ? widget : widget.id; + var widgetDef = baseWidgetDefinitions.find(w => w.id === widgetId); + if (!widgetDef) + return; + + var item = Object.assign({}, widgetDef); + item.enabled = isString ? true : widget.enabled; + if (!isString) { + if (widget.size !== undefined) + item.size = widget.size; + if (widget.selectedGpuIndex !== undefined) + item.selectedGpuIndex = widget.selectedGpuIndex; + if (widget.pciId !== undefined) + item.pciId = widget.pciId; + if (widget.mountPath !== undefined) + item.mountPath = widget.mountPath; + if (widget.showNetworkIcon !== undefined) + item.showNetworkIcon = widget.showNetworkIcon; + if (widget.showBluetoothIcon !== undefined) + item.showBluetoothIcon = widget.showBluetoothIcon; + if (widget.showAudioIcon !== undefined) + item.showAudioIcon = widget.showAudioIcon; + if (widget.minimumWidth !== undefined) + item.minimumWidth = widget.minimumWidth; + if (widget.showSwap !== undefined) + item.showSwap = widget.showSwap; + if (widget.mediaSize !== undefined) + item.mediaSize = widget.mediaSize; + if (widget.clockCompactMode !== undefined) + item.clockCompactMode = widget.clockCompactMode; + if (widget.focusedWindowCompactMode !== undefined) + item.focusedWindowCompactMode = widget.focusedWindowCompactMode; + if (widget.runningAppsCompactMode !== undefined) + item.runningAppsCompactMode = widget.runningAppsCompactMode; + if (widget.keyboardLayoutNameCompactMode !== undefined) + item.keyboardLayoutNameCompactMode = widget.keyboardLayoutNameCompactMode; + } + widgets.push(item); + }); + return widgets; + } + + Component.onCompleted: { + const leftWidgets = selectedBarConfig?.leftWidgets; + const centerWidgets = selectedBarConfig?.centerWidgets; + const rightWidgets = selectedBarConfig?.rightWidgets; + + if (!leftWidgets) + setWidgetsForSection("left", defaultLeftWidgets); + if (!centerWidgets) + setWidgetsForSection("center", defaultCenterWidgets); + if (!rightWidgets) + setWidgetsForSection("right", defaultRightWidgets); + + const sections = ["left", "center", "right"]; + sections.forEach(sectionId => { + var widgets = getWidgetsForSection(sectionId).slice(); + var updated = false; + for (var i = 0; i < widgets.length; i++) { + var widget = widgets[i]; + if (typeof widget === "object" && widget.id === "spacer" && !widget.size) { + widgets[i] = Object.assign({}, widget, { + "size": 20 + }); + updated = true; + } + } + if (updated) + setWidgetsForSection(sectionId, widgets); + }); + } + + WidgetSelectionPopup { + id: widgetSelectionPopup + parentModal: widgetsTab.parentModal + onWidgetSelected: (widgetId, targetSection) => { + widgetsTab.addWidgetToSection(widgetId, targetSection); + } + } + + 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: barSelectorContent.implicitHeight + Theme.spacingL * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + border.width: 0 + visible: hasMultipleBars + + Column { + id: barSelectorContent + anchors.fill: parent + anchors.margins: Theme.spacingL + spacing: Theme.spacingM + + Row { + width: parent.width + spacing: Theme.spacingM + + DankIcon { + name: "toolbar" + size: Theme.iconSize + color: Theme.primary + anchors.verticalCenter: parent.verticalCenter + } + + StyledText { + text: I18n.tr("Select Bar") + font.pixelSize: Theme.fontSizeLarge + font.weight: Font.Medium + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + } + } + + DankButtonGroup { + id: barSelectorGroup + width: parent.width + model: SettingsData.barConfigs.map(cfg => cfg.name || ("Bar " + (SettingsData.barConfigs.indexOf(cfg) + 1))) + currentIndex: { + const idx = SettingsData.barConfigs.findIndex(cfg => cfg.id === selectedBarId); + return idx >= 0 ? idx : 0; + } + checkEnabled: false + onSelectionChanged: (index, selected) => { + if (!selected) + return; + if (index >= 0 && index < SettingsData.barConfigs.length) + selectedBarId = SettingsData.barConfigs[index].id; + } + } + } + } + + StyledRect { + width: parent.width + height: widgetManagementHeader.implicitHeight + Theme.spacingL * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + border.width: 0 + + Column { + id: widgetManagementHeader + anchors.fill: parent + anchors.margins: Theme.spacingL + spacing: Theme.spacingM + + RowLayout { + width: parent.width + spacing: Theme.spacingM + + DankIcon { + name: "widgets" + size: Theme.iconSize + color: Theme.primary + Layout.alignment: Qt.AlignVCenter + } + + StyledText { + text: I18n.tr("Widget Management") + font.pixelSize: Theme.fontSizeLarge + font.weight: Font.Medium + color: Theme.surfaceText + Layout.alignment: Qt.AlignVCenter + } + + Item { + height: 1 + Layout.fillWidth: true + } + + Rectangle { + width: 80 + height: 28 + radius: Theme.cornerRadius + color: resetArea.containsMouse ? Theme.surfacePressed : Theme.surfaceVariant + Layout.alignment: Qt.AlignVCenter + border.width: 0 + + Row { + anchors.centerIn: parent + spacing: Theme.spacingXS + + DankIcon { + name: "refresh" + size: 14 + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + } + + StyledText { + text: I18n.tr("Reset") + font.pixelSize: Theme.fontSizeSmall + font.weight: Font.Medium + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + } + } + + MouseArea { + id: resetArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + onClicked: { + setWidgetsForSection("left", defaultLeftWidgets); + setWidgetsForSection("center", defaultCenterWidgets); + setWidgetsForSection("right", defaultRightWidgets); + } + } + + Behavior on color { + ColorAnimation { + duration: Theme.shortDuration + easing.type: Theme.standardEasing + } + } + } + } + + StyledText { + width: parent.width + text: I18n.tr("Drag widgets to reorder within sections. Use the eye icon to hide/show widgets (maintains spacing), or X to remove them completely.") + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + wrapMode: Text.WordWrap + } + } + } + + Column { + width: parent.width + spacing: Theme.spacingL + + StyledRect { + width: parent.width + height: leftSection.implicitHeight + Theme.spacingL * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + border.width: 0 + + WidgetsTabSection { + id: leftSection + anchors.fill: parent + anchors.margins: Theme.spacingL + title: selectedBarIsVertical ? I18n.tr("Top Section") : I18n.tr("Left Section") + titleIcon: "format_align_left" + sectionId: "left" + allWidgets: widgetsTab.baseWidgetDefinitions + items: widgetsTab.getItemsForSection("left") + onItemEnabledChanged: (sectionId, itemId, enabled) => { + widgetsTab.handleItemEnabledChanged(sectionId, itemId, enabled); + } + onItemOrderChanged: newOrder => { + widgetsTab.handleItemOrderChanged(sectionId, newOrder); + } + onAddWidget: sectionId => { + widgetSelectionPopup.targetSection = sectionId; + widgetSelectionPopup.allWidgets = widgetsTab.getWidgetsForPopup(); + widgetSelectionPopup.show(); + } + onRemoveWidget: (sectionId, index) => { + widgetsTab.removeWidgetFromSection(sectionId, index); + } + onSpacerSizeChanged: (sectionId, index, size) => { + widgetsTab.handleSpacerSizeChanged(sectionId, index, size); + } + onGpuSelectionChanged: (sectionId, index, gpuIndex) => { + widgetsTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); + } + onDiskMountSelectionChanged: (sectionId, index, mountPath) => { + widgetsTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); + } + onControlCenterSettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handleControlCenterSettingChanged(sectionId, index, setting, value); + } + onPrivacySettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handlePrivacySettingChanged(sectionId, index, setting, value); + } + onMinimumWidthChanged: (sectionId, index, enabled) => { + widgetsTab.handleMinimumWidthChanged(sectionId, index, enabled); + } + onShowSwapChanged: (sectionId, index, enabled) => { + widgetsTab.handleShowSwapChanged(sectionId, index, enabled); + } + onCompactModeChanged: (widgetId, value) => { + widgetsTab.handleCompactModeChanged(sectionId, widgetId, value); + } + } + } + + StyledRect { + width: parent.width + height: centerSection.implicitHeight + Theme.spacingL * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + border.width: 0 + + WidgetsTabSection { + id: centerSection + anchors.fill: parent + anchors.margins: Theme.spacingL + title: selectedBarIsVertical ? I18n.tr("Middle Section") : I18n.tr("Center Section") + titleIcon: "format_align_center" + sectionId: "center" + allWidgets: widgetsTab.baseWidgetDefinitions + items: widgetsTab.getItemsForSection("center") + onItemEnabledChanged: (sectionId, itemId, enabled) => { + widgetsTab.handleItemEnabledChanged(sectionId, itemId, enabled); + } + onItemOrderChanged: newOrder => { + widgetsTab.handleItemOrderChanged(sectionId, newOrder); + } + onAddWidget: sectionId => { + widgetSelectionPopup.targetSection = sectionId; + widgetSelectionPopup.allWidgets = widgetsTab.getWidgetsForPopup(); + widgetSelectionPopup.show(); + } + onRemoveWidget: (sectionId, index) => { + widgetsTab.removeWidgetFromSection(sectionId, index); + } + onSpacerSizeChanged: (sectionId, index, size) => { + widgetsTab.handleSpacerSizeChanged(sectionId, index, size); + } + onGpuSelectionChanged: (sectionId, index, gpuIndex) => { + widgetsTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); + } + onDiskMountSelectionChanged: (sectionId, index, mountPath) => { + widgetsTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); + } + onControlCenterSettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handleControlCenterSettingChanged(sectionId, index, setting, value); + } + onPrivacySettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handlePrivacySettingChanged(sectionId, index, setting, value); + } + onMinimumWidthChanged: (sectionId, index, enabled) => { + widgetsTab.handleMinimumWidthChanged(sectionId, index, enabled); + } + onShowSwapChanged: (sectionId, index, enabled) => { + widgetsTab.handleShowSwapChanged(sectionId, index, enabled); + } + onCompactModeChanged: (widgetId, value) => { + widgetsTab.handleCompactModeChanged(sectionId, widgetId, value); + } + } + } + + StyledRect { + width: parent.width + height: rightSection.implicitHeight + Theme.spacingL * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + border.width: 0 + + WidgetsTabSection { + id: rightSection + anchors.fill: parent + anchors.margins: Theme.spacingL + title: selectedBarIsVertical ? I18n.tr("Bottom Section") : I18n.tr("Right Section") + titleIcon: "format_align_right" + sectionId: "right" + allWidgets: widgetsTab.baseWidgetDefinitions + items: widgetsTab.getItemsForSection("right") + onItemEnabledChanged: (sectionId, itemId, enabled) => { + widgetsTab.handleItemEnabledChanged(sectionId, itemId, enabled); + } + onItemOrderChanged: newOrder => { + widgetsTab.handleItemOrderChanged(sectionId, newOrder); + } + onAddWidget: sectionId => { + widgetSelectionPopup.targetSection = sectionId; + widgetSelectionPopup.allWidgets = widgetsTab.getWidgetsForPopup(); + widgetSelectionPopup.show(); + } + onRemoveWidget: (sectionId, index) => { + widgetsTab.removeWidgetFromSection(sectionId, index); + } + onSpacerSizeChanged: (sectionId, index, size) => { + widgetsTab.handleSpacerSizeChanged(sectionId, index, size); + } + onGpuSelectionChanged: (sectionId, index, gpuIndex) => { + widgetsTab.handleGpuSelectionChanged(sectionId, index, gpuIndex); + } + onDiskMountSelectionChanged: (sectionId, index, mountPath) => { + widgetsTab.handleDiskMountSelectionChanged(sectionId, index, mountPath); + } + onControlCenterSettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handleControlCenterSettingChanged(sectionId, index, setting, value); + } + onPrivacySettingChanged: (sectionId, index, setting, value) => { + widgetsTab.handlePrivacySettingChanged(sectionId, index, setting, value); + } + onMinimumWidthChanged: (sectionId, index, enabled) => { + widgetsTab.handleMinimumWidthChanged(sectionId, index, enabled); + } + onShowSwapChanged: (sectionId, index, enabled) => { + widgetsTab.handleShowSwapChanged(sectionId, index, enabled); + } + onCompactModeChanged: (widgetId, value) => { + widgetsTab.handleCompactModeChanged(sectionId, widgetId, value); + } + } + } + } + } + } +} diff --git a/quickshell/Widgets/DankToggle.qml b/quickshell/Widgets/DankToggle.qml index e48150e5..ff5a5b54 100644 --- a/quickshell/Widgets/DankToggle.qml +++ b/quickshell/Widgets/DankToggle.qml @@ -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 diff --git a/quickshell/translations/en.json b/quickshell/translations/en.json index 0c91f8de..e6edb3a8 100644 --- a/quickshell/translations/en.json +++ b/quickshell/translations/en.json @@ -2,7 +2,7 @@ { "term": "%1 DMS bind(s) may be overridden by config binds that come after the include.", "context": "%1 DMS bind(s) may be overridden by config binds that come after the include.", - "reference": "Modules/Settings/KeybindsTab.qml:325", + "reference": "Modules/Settings/KeybindsTab.qml:323", "comment": "" }, { @@ -32,7 +32,7 @@ { "term": "%1 display(s)", "context": "%1 display(s)", - "reference": "Modules/Settings/DankBarTab.qml:1243", + "reference": "Modules/Settings/DankBarTab.qml:393", "comment": "" }, { @@ -50,7 +50,7 @@ { "term": "%1 widgets", "context": "%1 widgets", - "reference": "Modules/Settings/DankBarTab.qml:1260", + "reference": "Modules/Settings/DankBarTab.qml:410", "comment": "" }, { @@ -176,7 +176,7 @@ { "term": "About", "context": "About", - "reference": "Modals/Settings/SettingsSidebar.qml:171, Modules/Settings/AboutTab.qml:514", + "reference": "Modals/Settings/SettingsSidebar.qml:182, Modules/Settings/AboutTab.qml:514", "comment": "" }, { @@ -194,25 +194,25 @@ { "term": "Access clipboard history", "context": "Access clipboard history", - "reference": "Modules/Settings/DankBarTab.qml:397", + "reference": "Modules/Settings/WidgetsTab.qml:94", "comment": "" }, { "term": "Access to notifications and do not disturb", "context": "Access to notifications and do not disturb", - "reference": "Modules/Settings/DankBarTab.qml:465", + "reference": "Modules/Settings/WidgetsTab.qml:162", "comment": "" }, { "term": "Access to system controls and settings", "context": "Access to system controls and settings", - "reference": "Modules/Settings/DankBarTab.qml:458", + "reference": "Modules/Settings/WidgetsTab.qml:155", "comment": "" }, { "term": "Action", "context": "Action", - "reference": "Widgets/KeybindItem.qml:794, Widgets/KeybindItem.qml:829", + "reference": "Widgets/KeybindItem.qml:790, Widgets/KeybindItem.qml:825", "comment": "" }, { @@ -260,13 +260,13 @@ { "term": "Add", "context": "Add", - "reference": "Widgets/KeybindItem.qml:1102, Modules/Plugins/ListSettingWithInput.qml:126", + "reference": "Widgets/KeybindItem.qml:1098, Modules/Plugins/ListSettingWithInput.qml:126", "comment": "" }, { "term": "Add Bar", "context": "Add Bar", - "reference": "Modules/Settings/DankBarTab.qml:1159", + "reference": "Modules/Settings/DankBarTab.qml:316", "comment": "" }, { @@ -308,7 +308,7 @@ { "term": "All", "context": "All", - "reference": "Services/AppSearchService.qml:310, Services/AppSearchService.qml:326, Modals/Spotlight/SpotlightModal.qml:65, Modules/AppDrawer/CategorySelector.qml:11, Modules/AppDrawer/AppLauncher.qml:16, Modules/AppDrawer/AppLauncher.qml:27, Modules/AppDrawer/AppLauncher.qml:28, Modules/AppDrawer/AppLauncher.qml:45, Modules/AppDrawer/AppLauncher.qml:46, Modules/AppDrawer/AppLauncher.qml:80, Modules/AppDrawer/AppDrawerPopout.qml:57, Modules/Settings/KeybindsTab.qml:397", + "reference": "Services/AppSearchService.qml:310, Services/AppSearchService.qml:326, Modals/Spotlight/SpotlightModal.qml:65, Modules/AppDrawer/CategorySelector.qml:11, Modules/AppDrawer/AppLauncher.qml:16, Modules/AppDrawer/AppLauncher.qml:27, Modules/AppDrawer/AppLauncher.qml:28, Modules/AppDrawer/AppLauncher.qml:45, Modules/AppDrawer/AppLauncher.qml:46, Modules/AppDrawer/AppLauncher.qml:80, Modules/AppDrawer/AppDrawerPopout.qml:57, Modules/Settings/KeybindsTab.qml:395", "comment": "" }, { @@ -326,7 +326,7 @@ { "term": "All displays", "context": "All displays", - "reference": "Modules/Settings/DisplaysTab.qml:796, Modules/Settings/DankBarTab.qml:1241, Modules/Settings/DankBarTab.qml:1432", + "reference": "Modules/Settings/DisplaysTab.qml:796, Modules/Settings/DankBarTab.qml:392, Modules/Settings/DankBarTab.qml:510", "comment": "" }, { @@ -374,7 +374,7 @@ { "term": "App Launcher", "context": "App Launcher", - "reference": "Modules/Settings/DankBarTab.qml:347", + "reference": "Modules/Settings/WidgetsTab.qml:44", "comment": "" }, { @@ -518,13 +518,13 @@ { "term": "Auto Popup Gaps", "context": "Auto Popup Gaps", - "reference": "Modules/Settings/DankBarTab.qml:2134", + "reference": "Modules/Settings/DankBarTab.qml:815", "comment": "" }, { "term": "Auto-hide", "context": "Auto-hide", - "reference": "Modules/Settings/DankBarTab.qml:1647", + "reference": "Modules/Settings/DankBarTab.qml:655", "comment": "" }, { @@ -569,12 +569,6 @@ "reference": "Modules/Settings/WallpaperTab.qml:880", "comment": "" }, - { - "term": "Automatically calculate popup distance from bar edge.", - "context": "Automatically calculate popup distance from bar edge.", - "reference": "Modules/Settings/DankBarTab.qml:2135", - "comment": "" - }, { "term": "Automatically cycle through wallpapers in the same folder", "context": "Automatically cycle through wallpapers in the same folder", @@ -593,12 +587,6 @@ "reference": "Modules/Settings/TimeWeatherTab.qml:374", "comment": "" }, - { - "term": "Automatically hide the top bar to expand screen real estate", - "context": "Automatically hide the top bar to expand screen real estate", - "reference": "Modules/Settings/DankBarTab.qml:1654", - "comment": "" - }, { "term": "Automatically lock after", "context": "Automatically lock after", @@ -668,25 +656,25 @@ { "term": "Bar Configurations", "context": "Bar Configurations", - "reference": "Modules/Settings/DankBarTab.qml:1146", + "reference": "Modules/Settings/DankBarTab.qml:301", "comment": "" }, { "term": "Bar Transparency", "context": "Bar Transparency", - "reference": "Modules/Settings/DankBarTab.qml:2861, Modules/Settings/DankBarTab.qml:2875", + "reference": "Modules/Settings/DankBarTab.qml:1160", "comment": "" }, { "term": "Battery", "context": "Battery", - "reference": "Modules/Settings/WidgetsTabSection.qml:836, Modules/Settings/DankBarTab.qml:471", + "reference": "Modules/Settings/WidgetsTabSection.qml:836, Modules/Settings/WidgetsTab.qml:168", "comment": "" }, { "term": "Battery level and power management", "context": "Battery level and power management", - "reference": "Modules/Settings/DankBarTab.qml:472", + "reference": "Modules/Settings/WidgetsTab.qml:169", "comment": "" }, { @@ -704,7 +692,7 @@ { "term": "Binds Include Missing", "context": "Binds Include Missing", - "reference": "Modules/Settings/KeybindsTab.qml:307", + "reference": "Modules/Settings/KeybindsTab.qml:305", "comment": "" }, { @@ -740,37 +728,37 @@ { "term": "Border", "context": "Border", - "reference": "Modules/Settings/DockTab.qml:185, Modules/Settings/DockTab.qml:188, Modules/Settings/DankBarTab.qml:2369", + "reference": "Modules/Settings/DockTab.qml:185, Modules/Settings/DockTab.qml:188, Modules/Settings/DankBarTab.qml:937", "comment": "" }, { "term": "Border Color", "context": "Border Color", - "reference": "Modules/Settings/DockTab.qml:195, Modules/Settings/DankBarTab.qml:2401", + "reference": "Modules/Settings/DockTab.qml:195", "comment": "" }, { "term": "Border Opacity", "context": "Border Opacity", - "reference": "Modules/Settings/DockTab.qml:229, Modules/Settings/DankBarTab.qml:2463, Modules/Settings/DankBarTab.qml:2477", + "reference": "Modules/Settings/DockTab.qml:229, Modules/Settings/DankBarTab.qml:1001", "comment": "" }, { "term": "Border Thickness", "context": "Border Thickness", - "reference": "Modules/Settings/DockTab.qml:240, Modules/Settings/DankBarTab.qml:2537, Modules/Settings/DankBarTab.qml:2551", + "reference": "Modules/Settings/DockTab.qml:240, Modules/Settings/DankBarTab.qml:1023", "comment": "" }, { "term": "Bottom", "context": "Bottom", - "reference": "Modules/Settings/DankBarTab.qml:1218, Modules/Settings/DankBarTab.qml:1558", + "reference": "Modules/Settings/DankBarTab.qml:369, Modules/Settings/DankBarTab.qml:601", "comment": "" }, { "term": "Bottom Section", "context": "Bottom Section", - "reference": "Modules/Settings/DankBarTab.qml:3346", + "reference": "Modules/Settings/WidgetsTab.qml:1133", "comment": "" }, { @@ -806,25 +794,25 @@ { "term": "CPU Temperature", "context": "CPU Temperature", - "reference": "Modules/Settings/DankBarTab.qml:427", + "reference": "Modules/Settings/WidgetsTab.qml:124", "comment": "" }, { "term": "CPU Usage", "context": "CPU Usage", - "reference": "Modules/Settings/DankBarTab.qml:403", + "reference": "Modules/Settings/WidgetsTab.qml:100", "comment": "" }, { "term": "CPU temperature display", "context": "CPU temperature display", - "reference": "Modules/Settings/DankBarTab.qml:428", + "reference": "Modules/Settings/WidgetsTab.qml:125", "comment": "" }, { "term": "CPU usage indicator", "context": "CPU usage indicator", - "reference": "Modules/Settings/DankBarTab.qml:404", + "reference": "Modules/Settings/WidgetsTab.qml:101", "comment": "" }, { @@ -854,7 +842,7 @@ { "term": "Cancel", "context": "Cancel", - "reference": "Modals/BluetoothPairingModal.qml:272, Modals/PolkitAuthModal.qml:264, Modals/WifiPasswordModal.qml:605, Widgets/KeybindItem.qml:1086, Modals/FileBrowser/FileBrowserOverwriteDialog.qml:83, Modules/Settings/PluginBrowser.qml:634", + "reference": "Modals/BluetoothPairingModal.qml:272, Modals/PolkitAuthModal.qml:264, Modals/WifiPasswordModal.qml:605, Widgets/KeybindItem.qml:1082, Modals/FileBrowser/FileBrowserOverwriteDialog.qml:83, Modules/Settings/PluginBrowser.qml:634", "comment": "" }, { @@ -884,13 +872,13 @@ { "term": "Caps Lock Indicator", "context": "Caps Lock Indicator", - "reference": "Modules/Settings/DankBarTab.qml:492", + "reference": "Modules/Settings/WidgetsTab.qml:189", "comment": "" }, { "term": "Center Section", "context": "Center Section", - "reference": "Modules/Settings/DankBarTab.qml:3288", + "reference": "Modules/Settings/WidgetsTab.qml:1076", "comment": "" }, { @@ -926,7 +914,7 @@ { "term": "Check for system updates", "context": "Check for system updates", - "reference": "Modules/Settings/DankBarTab.qml:542", + "reference": "Modules/Settings/WidgetsTab.qml:239", "comment": "" }, { @@ -956,7 +944,7 @@ { "term": "Choose the border accent color", "context": "Choose the border accent color", - "reference": "Modules/Settings/DockTab.qml:196, Modules/Settings/DankBarTab.qml:2408", + "reference": "Modules/Settings/DockTab.qml:196", "comment": "" }, { @@ -965,12 +953,6 @@ "reference": "Modules/Settings/LauncherTab.qml:39", "comment": "" }, - { - "term": "Choose the widget outline accent color", - "context": "Choose the widget outline accent color", - "reference": "Modules/Settings/DankBarTab.qml:2649", - "comment": "" - }, { "term": "Choose where notification popups appear on screen", "context": "Choose where notification popups appear on screen", @@ -1028,13 +1010,13 @@ { "term": "Click any shortcut to edit. Changes save to dms/binds.kdl", "context": "Click any shortcut to edit. Changes save to dms/binds.kdl", - "reference": "Modules/Settings/KeybindsTab.qml:209", + "reference": "Modules/Settings/KeybindsTab.qml:207", "comment": "" }, { "term": "Click to capture", "context": "Click to capture", - "reference": "Widgets/KeybindItem.qml:571", + "reference": "Widgets/KeybindItem.qml:567", "comment": "" }, { @@ -1046,13 +1028,13 @@ { "term": "Clipboard Manager", "context": "Clipboard Manager", - "reference": "Modules/Settings/DankBarTab.qml:396", + "reference": "Modules/Settings/WidgetsTab.qml:93", "comment": "" }, { "term": "Clock", "context": "Clock", - "reference": "Modules/Settings/DankBarTab.qml:375", + "reference": "Modules/Settings/WidgetsTab.qml:72", "comment": "" }, { @@ -1067,6 +1049,12 @@ "reference": "Modules/Settings/LauncherTab.qml:331", "comment": "" }, + { + "term": "Color", + "context": "Color", + "reference": "Modules/Settings/DankBarTab.qml:963, Modules/Settings/DankBarTab.qml:1072", + "comment": "" + }, { "term": "Color Mode", "context": "Color Mode", @@ -1082,7 +1070,7 @@ { "term": "Color Picker", "context": "Color Picker", - "reference": "Modules/Settings/DankBarTab.qml:534", + "reference": "Modules/Settings/WidgetsTab.qml:231", "comment": "" }, { @@ -1112,7 +1100,7 @@ { "term": "Command", "context": "Command", - "reference": "Widgets/KeybindItem.qml:974", + "reference": "Widgets/KeybindItem.qml:970", "comment": "" }, { @@ -1142,7 +1130,7 @@ { "term": "Config action: %1", "context": "Config action: %1", - "reference": "Widgets/KeybindItem.qml:420", + "reference": "Widgets/KeybindItem.qml:416", "comment": "" }, { @@ -1190,7 +1178,7 @@ { "term": "Conflicts with: %1", "context": "Conflicts with: %1", - "reference": "Widgets/KeybindItem.qml:674", + "reference": "Widgets/KeybindItem.qml:670", "comment": "" }, { @@ -1238,13 +1226,13 @@ { "term": "Control Center", "context": "Control Center", - "reference": "Modules/Settings/DankBarTab.qml:457", + "reference": "Modules/Settings/WidgetsTab.qml:154", "comment": "" }, { "term": "Control currently playing media", "context": "Control currently playing media", - "reference": "Modules/Settings/DankBarTab.qml:390", + "reference": "Modules/Settings/WidgetsTab.qml:87", "comment": "" }, { @@ -1286,7 +1274,13 @@ { "term": "Corner Radius Override", "context": "Corner Radius Override", - "reference": "Modules/Settings/DankBarTab.qml:2276", + "reference": "Modules/Settings/DankBarTab.qml:898", + "comment": "" + }, + { + "term": "Corners & Background", + "context": "Corners & Background", + "reference": "Modules/Settings/DankBarTab.qml:863", "comment": "" }, { @@ -1334,19 +1328,19 @@ { "term": "Current time and date display", "context": "Current time and date display", - "reference": "Modules/Settings/DankBarTab.qml:376", + "reference": "Modules/Settings/WidgetsTab.qml:73", "comment": "" }, { "term": "Current weather conditions and temperature", "context": "Current weather conditions and temperature", - "reference": "Modules/Settings/DankBarTab.qml:383", + "reference": "Modules/Settings/WidgetsTab.qml:80", "comment": "" }, { "term": "Custom", "context": "Custom", - "reference": "Widgets/KeybindItem.qml:911, Modules/Settings/TypographyMotionTab.qml:222, Modules/Settings/LauncherTab.qml:65, Modules/Settings/LauncherTab.qml:162", + "reference": "Widgets/KeybindItem.qml:907, Modules/Settings/TypographyMotionTab.qml:222, Modules/Settings/LauncherTab.qml:65, Modules/Settings/LauncherTab.qml:162", "comment": "" }, { @@ -1418,7 +1412,7 @@ { "term": "Customizable empty space", "context": "Customizable empty space", - "reference": "Modules/Settings/DankBarTab.qml:500", + "reference": "Modules/Settings/WidgetsTab.qml:197", "comment": "" }, { @@ -1448,7 +1442,7 @@ { "term": "DMS shell actions (launcher, clipboard, etc.)", "context": "DMS shell actions (launcher, clipboard, etc.)", - "reference": "Widgets/KeybindItem.qml:707", + "reference": "Widgets/KeybindItem.qml:703", "comment": "" }, { @@ -1460,7 +1454,7 @@ { "term": "DWL service not available", "context": "DWL service not available", - "reference": "Modules/Settings/DankBarTab.qml:343", + "reference": "Modules/Settings/WidgetsTab.qml:40", "comment": "" }, { @@ -1490,7 +1484,7 @@ { "term": "DankBar Font Scale", "context": "DankBar Font Scale", - "reference": "Modules/Settings/DankBarTab.qml:3023", + "reference": "Modules/Settings/DankBarTab.qml:1208", "comment": "" }, { @@ -1652,7 +1646,7 @@ { "term": "Disabled", "context": "Disabled", - "reference": "Modals/DisplayConfirmationModal.qml:144, Modules/Settings/NetworkTab.qml:741, Modules/Settings/DankBarTab.qml:1274", + "reference": "Modals/DisplayConfirmationModal.qml:144, Modules/Settings/NetworkTab.qml:741, Modules/Settings/DankBarTab.qml:424", "comment": "" }, { @@ -1682,7 +1676,7 @@ { "term": "Disk Usage", "context": "Disk Usage", - "reference": "Modules/Settings/DankBarTab.qml:419", + "reference": "Modules/Settings/WidgetsTab.qml:116", "comment": "" }, { @@ -1694,7 +1688,7 @@ { "term": "Display Assignment", "context": "Display Assignment", - "reference": "Modules/Settings/DankBarTab.qml:1404", + "reference": "Modules/Settings/DankBarTab.qml:488", "comment": "" }, { @@ -1718,7 +1712,7 @@ { "term": "Display and switch DWL layouts", "context": "Display and switch DWL layouts", - "reference": "Modules/Settings/DankBarTab.qml:340", + "reference": "Modules/Settings/WidgetsTab.qml:37", "comment": "" }, { @@ -1730,7 +1724,7 @@ { "term": "Display currently focused application title", "context": "Display currently focused application title", - "reference": "Modules/Settings/DankBarTab.qml:362", + "reference": "Modules/Settings/WidgetsTab.qml:59", "comment": "" }, { @@ -1766,13 +1760,13 @@ { "term": "Displays", "context": "Displays", - "reference": "Modals/Settings/SettingsSidebar.qml:123", + "reference": "Modals/Settings/SettingsSidebar.qml:134", "comment": "" }, { "term": "Displays the active keyboard layout and allows switching", "context": "Displays the active keyboard layout and allows switching", - "reference": "Modules/Settings/DankBarTab.qml:522", + "reference": "Modules/Settings/WidgetsTab.qml:219", "comment": "" }, { @@ -1790,13 +1784,13 @@ { "term": "Dock", "context": "Dock", - "reference": "Modals/Settings/SettingsSidebar.qml:103", + "reference": "Modals/Settings/SettingsSidebar.qml:114", "comment": "" }, { "term": "Dock & Launcher", "context": "Dock & Launcher", - "reference": "Modals/Settings/SettingsSidebar.qml:98", + "reference": "Modals/Settings/SettingsSidebar.qml:109", "comment": "" }, { @@ -1838,7 +1832,7 @@ { "term": "Drag widgets to reorder within sections. Use the eye icon to hide/show widgets (maintains spacing), or X to remove them completely.", "context": "Drag widgets to reorder within sections. Use the eye icon to hide/show widgets (maintains spacing), or X to remove them completely.", - "reference": "Modules/Settings/DankBarTab.qml:3205", + "reference": "Modules/Settings/WidgetsTab.qml:996", "comment": "" }, { @@ -1872,9 +1866,9 @@ "comment": "" }, { - "term": "Edge Spacing (0 = edge-to-edge)", - "context": "Edge Spacing (0 = edge-to-edge)", - "reference": "Modules/Settings/DankBarTab.qml:1915, Modules/Settings/DankBarTab.qml:1929", + "term": "Edge Spacing", + "context": "Edge Spacing", + "reference": "Modules/Settings/DankBarTab.qml:749", "comment": "" }, { @@ -1898,7 +1892,13 @@ { "term": "Enable Bar", "context": "Enable Bar", - "reference": "Modules/Settings/DankBarTab.qml:1349", + "reference": "Modules/Settings/DankBarTab.qml:473", + "comment": "" + }, + { + "term": "Enable Border", + "context": "Enable Border", + "reference": "Modules/Settings/DankBarTab.qml:941", "comment": "" }, { @@ -1937,6 +1937,12 @@ "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:212", "comment": "" }, + { + "term": "Enable Widget Outline", + "context": "Enable Widget Outline", + "reference": "Modules/Settings/DankBarTab.qml:1050", + "comment": "" + }, { "term": "Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.", "context": "Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.", @@ -2054,7 +2060,7 @@ { "term": "Exclusive Zone Offset", "context": "Exclusive Zone Offset", - "reference": "Modules/Settings/DockTab.qml:148, Modules/Settings/DankBarTab.qml:1989, Modules/Settings/DankBarTab.qml:2003", + "reference": "Modules/Settings/DockTab.qml:148, Modules/Settings/DankBarTab.qml:769", "comment": "" }, { @@ -2354,25 +2360,25 @@ { "term": "First Time Setup", "context": "First Time Setup", - "reference": "Modules/Settings/KeybindsTab.qml:305", + "reference": "Modules/Settings/KeybindsTab.qml:303", "comment": "" }, { "term": "Fix Now", "context": "Fix Now", - "reference": "Modules/Settings/KeybindsTab.qml:352", + "reference": "Modules/Settings/KeybindsTab.qml:350", "comment": "" }, { "term": "Fixing...", "context": "Fixing...", - "reference": "Modules/Settings/KeybindsTab.qml:349", + "reference": "Modules/Settings/KeybindsTab.qml:347", "comment": "" }, { "term": "Focused Window", "context": "Focused Window", - "reference": "Modules/Settings/DankBarTab.qml:361", + "reference": "Modules/Settings/WidgetsTab.qml:58", "comment": "" }, { @@ -2384,7 +2390,7 @@ { "term": "Font Scale", "context": "Font Scale", - "reference": "Modules/Settings/TypographyMotionTab.qml:194", + "reference": "Modules/Settings/TypographyMotionTab.qml:194, Modules/Settings/DankBarTab.qml:1203", "comment": "" }, { @@ -2468,13 +2474,13 @@ { "term": "GPU Temperature", "context": "GPU Temperature", - "reference": "Modules/Settings/DankBarTab.qml:435", + "reference": "Modules/Settings/WidgetsTab.qml:132", "comment": "" }, { "term": "GPU temperature display", "context": "GPU temperature display", - "reference": "Modules/Settings/DankBarTab.qml:436", + "reference": "Modules/Settings/WidgetsTab.qml:133", "comment": "" }, { @@ -2516,13 +2522,13 @@ { "term": "Goth Corner Radius", "context": "Goth Corner Radius", - "reference": "Modules/Settings/DankBarTab.qml:2297, Modules/Settings/DankBarTab.qml:2311", + "reference": "Modules/Settings/DankBarTab.qml:915", "comment": "" }, { "term": "Goth Corners", "context": "Goth Corners", - "reference": "Modules/Settings/DankBarTab.qml:2264", + "reference": "Modules/Settings/DankBarTab.qml:890", "comment": "" }, { @@ -2592,9 +2598,9 @@ "comment": "" }, { - "term": "Hide Delay (ms)", - "context": "Hide Delay (ms)", - "reference": "Modules/Settings/DankBarTab.qml:1694, Modules/Settings/DankBarTab.qml:1708", + "term": "Hide Delay", + "context": "Hide Delay", + "reference": "Modules/Settings/DankBarTab.qml:681", "comment": "" }, { @@ -2642,7 +2648,7 @@ { "term": "Hotkey overlay title (optional)", "context": "Hotkey overlay title (optional)", - "reference": "Widgets/KeybindItem.qml:1045", + "reference": "Widgets/KeybindItem.qml:1041", "comment": "" }, { @@ -2714,7 +2720,7 @@ { "term": "Idle Inhibitor", "context": "Idle Inhibitor", - "reference": "Modules/Settings/DankBarTab.qml:485, Modules/Settings/OSDTab.qml:118", + "reference": "Modules/Settings/WidgetsTab.qml:182, Modules/Settings/OSDTab.qml:118", "comment": "" }, { @@ -2864,25 +2870,25 @@ { "term": "Key", "context": "Key", - "reference": "Widgets/KeybindItem.qml:530", + "reference": "Widgets/KeybindItem.qml:526", "comment": "" }, { "term": "Keyboard Layout Name", "context": "Keyboard Layout Name", - "reference": "Modules/Settings/DankBarTab.qml:521", + "reference": "Modules/Settings/WidgetsTab.qml:218", "comment": "" }, { "term": "Keyboard Shortcuts", "context": "Keyboard Shortcuts", - "reference": "Modals/Settings/SettingsSidebar.qml:116, Modules/Settings/KeybindsTab.qml:202", + "reference": "Modals/Settings/SettingsSidebar.qml:127, Modules/Settings/KeybindsTab.qml:200", "comment": "" }, { "term": "Keys", "context": "Keys", - "reference": "Widgets/KeybindItem.qml:443", + "reference": "Widgets/KeybindItem.qml:439", "comment": "" }, { @@ -2954,7 +2960,7 @@ { "term": "Launcher", "context": "Launcher", - "reference": "Modals/Settings/SettingsSidebar.qml:108", + "reference": "Modals/Settings/SettingsSidebar.qml:119", "comment": "" }, { @@ -2966,19 +2972,19 @@ { "term": "Layout", "context": "Layout", - "reference": "Modules/Settings/DankBarTab.qml:339, Modules/DankBar/Popouts/DWLLayoutPopout.qml:182", + "reference": "Modules/Settings/WidgetsTab.qml:36, Modules/DankBar/Popouts/DWLLayoutPopout.qml:182", "comment": "" }, { "term": "Left", "context": "Left", - "reference": "Modules/Settings/DankBarTab.qml:1220, Modules/Settings/DankBarTab.qml:1558, Modules/DankBar/Popouts/BatteryPopout.qml:532", + "reference": "Modules/Settings/DankBarTab.qml:371, Modules/Settings/DankBarTab.qml:601, Modules/DankBar/Popouts/BatteryPopout.qml:532", "comment": "" }, { "term": "Left Section", "context": "Left Section", - "reference": "Modules/Settings/DankBarTab.qml:3230", + "reference": "Modules/Settings/WidgetsTab.qml:1019", "comment": "" }, { @@ -3002,7 +3008,7 @@ { "term": "Loading keybinds...", "context": "Loading keybinds...", - "reference": "Modules/Settings/KeybindsTab.qml:561", + "reference": "Modules/Settings/KeybindsTab.qml:559", "comment": "" }, { @@ -3044,7 +3050,7 @@ { "term": "Lock Screen", "context": "Lock Screen", - "reference": "Modals/Settings/SettingsSidebar.qml:148, Modules/Settings/LockScreenTab.qml:26", + "reference": "Modals/Settings/SettingsSidebar.qml:159, Modules/Settings/LockScreenTab.qml:26", "comment": "" }, { @@ -3116,7 +3122,7 @@ { "term": "Manage up to 4 independent bar configurations. Each bar has its own position, widgets, styling, and display assignment.", "context": "Manage up to 4 independent bar configurations. Each bar has its own position, widgets, styling, and display assignment.", - "reference": "Modules/Settings/DankBarTab.qml:1171", + "reference": "Modules/Settings/DankBarTab.qml:308", "comment": "" }, { @@ -3128,13 +3134,13 @@ { "term": "Manual Gap Size", "context": "Manual Gap Size", - "reference": "Modules/Settings/DankBarTab.qml:2167, Modules/Settings/DankBarTab.qml:2181", + "reference": "Modules/Settings/DankBarTab.qml:841", "comment": "" }, { "term": "Manual Show/Hide", "context": "Manual Show/Hide", - "reference": "Modules/Settings/DankBarTab.qml:1785", + "reference": "Modules/Settings/DankBarTab.qml:711", "comment": "" }, { @@ -3200,7 +3206,7 @@ { "term": "Media Controls", "context": "Media Controls", - "reference": "Modules/Settings/DankBarTab.qml:389", + "reference": "Modules/Settings/WidgetsTab.qml:86", "comment": "" }, { @@ -3230,7 +3236,7 @@ { "term": "Media Player", "context": "Media Player", - "reference": "Modals/Settings/SettingsSidebar.qml:69", + "reference": "Modals/Settings/SettingsSidebar.qml:80", "comment": "" }, { @@ -3266,13 +3272,13 @@ { "term": "Memory Usage", "context": "Memory Usage", - "reference": "Modules/Settings/DankBarTab.qml:411", + "reference": "Modules/Settings/WidgetsTab.qml:108", "comment": "" }, { "term": "Memory usage indicator", "context": "Memory usage indicator", - "reference": "Modules/Settings/DankBarTab.qml:412", + "reference": "Modules/Settings/WidgetsTab.qml:109", "comment": "" }, { @@ -3290,7 +3296,7 @@ { "term": "Middle Section", "context": "Middle Section", - "reference": "Modules/Settings/DankBarTab.qml:3288", + "reference": "Modules/Settings/WidgetsTab.qml:1076", "comment": "" }, { @@ -3398,7 +3404,7 @@ { "term": "Network", "context": "Network", - "reference": "Services/CupsService.qml:131, Modals/Settings/SettingsSidebar.qml:129, Modules/ProcessList/PerformanceTab.qml:342, Modules/Settings/WidgetsTabSection.qml:800", + "reference": "Services/CupsService.qml:131, Modals/Settings/SettingsSidebar.qml:140, Modules/ProcessList/PerformanceTab.qml:342, Modules/Settings/WidgetsTabSection.qml:800", "comment": "" }, { @@ -3422,7 +3428,7 @@ { "term": "Network Speed Monitor", "context": "Network Speed Monitor", - "reference": "Modules/Settings/DankBarTab.qml:513", + "reference": "Modules/Settings/WidgetsTab.qml:210", "comment": "" }, { @@ -3434,7 +3440,7 @@ { "term": "Network download and upload speed display", "context": "Network download and upload speed display", - "reference": "Modules/Settings/DankBarTab.qml:514", + "reference": "Modules/Settings/WidgetsTab.qml:211", "comment": "" }, { @@ -3452,13 +3458,13 @@ { "term": "New Key", "context": "New Key", - "reference": "Widgets/KeybindItem.qml:530", + "reference": "Widgets/KeybindItem.qml:526", "comment": "" }, { "term": "New Keybind", "context": "New Keybind", - "reference": "Modules/Settings/KeybindsTab.qml:475", + "reference": "Modules/Settings/KeybindsTab.qml:473", "comment": "" }, { @@ -3500,7 +3506,7 @@ { "term": "Niri compositor actions (focus, move, etc.)", "context": "Niri compositor actions (focus, move, etc.)", - "reference": "Widgets/KeybindItem.qml:708", + "reference": "Widgets/KeybindItem.qml:704", "comment": "" }, { @@ -3518,7 +3524,7 @@ { "term": "No Background", "context": "No Background", - "reference": "Modules/Settings/DankBarTab.qml:2248", + "reference": "Modules/Settings/DankBarTab.qml:875", "comment": "" }, { @@ -3548,7 +3554,7 @@ { "term": "No action", "context": "No action", - "reference": "Widgets/KeybindItem.qml:283", + "reference": "Widgets/KeybindItem.qml:279", "comment": "" }, { @@ -3560,7 +3566,7 @@ { "term": "No changes", "context": "No changes", - "reference": "Widgets/KeybindItem.qml:1079", + "reference": "Widgets/KeybindItem.qml:1075", "comment": "" }, { @@ -3596,7 +3602,7 @@ { "term": "No keybinds found", "context": "No keybinds found", - "reference": "Modules/Settings/KeybindsTab.qml:569", + "reference": "Modules/Settings/KeybindsTab.qml:567", "comment": "" }, { @@ -3662,7 +3668,7 @@ { "term": "Notepad", "context": "Notepad", - "reference": "DMSShell.qml:545, Modules/Settings/DankBarTab.qml:527", + "reference": "DMSShell.qml:545, Modules/Settings/WidgetsTab.qml:224", "comment": "" }, { @@ -3686,7 +3692,7 @@ { "term": "Notification Center", "context": "Notification Center", - "reference": "Modules/Settings/DankBarTab.qml:464", + "reference": "Modules/Settings/WidgetsTab.qml:161", "comment": "" }, { @@ -3722,7 +3728,7 @@ { "term": "Notifications", "context": "Notifications", - "reference": "Modals/Settings/SettingsSidebar.qml:74, Modules/Notifications/Center/NotificationHeader.qml:25", + "reference": "Modals/Settings/SettingsSidebar.qml:85, Modules/Notifications/Center/NotificationHeader.qml:25", "comment": "" }, { @@ -3764,7 +3770,7 @@ { "term": "On-screen Displays", "context": "On-screen Displays", - "reference": "Modals/Settings/SettingsSidebar.qml:79, Modules/Settings/OSDTab.qml:24", + "reference": "Modals/Settings/SettingsSidebar.qml:90, Modules/Settings/OSDTab.qml:24", "comment": "" }, { @@ -3827,22 +3833,16 @@ "reference": "Services/CupsService.qml:767", "comment": "" }, - { - "term": "Outline Color", - "context": "Outline Color", - "reference": "Modules/Settings/DankBarTab.qml:2642", - "comment": "" - }, { "term": "Outline Opacity", "context": "Outline Opacity", - "reference": "Modules/Settings/DankBarTab.qml:2704, Modules/Settings/DankBarTab.qml:2718", + "reference": "Modules/Settings/DankBarTab.qml:1110", "comment": "" }, { "term": "Outline Thickness", "context": "Outline Thickness", - "reference": "Modules/Settings/DankBarTab.qml:2778, Modules/Settings/DankBarTab.qml:2792", + "reference": "Modules/Settings/DankBarTab.qml:1132", "comment": "" }, { @@ -3866,13 +3866,13 @@ { "term": "Overridden by config", "context": "Overridden by config", - "reference": "Widgets/KeybindItem.qml:324", + "reference": "Widgets/KeybindItem.qml:320", "comment": "" }, { "term": "Override", "context": "Override", - "reference": "Widgets/KeybindItem.qml:310", + "reference": "Widgets/KeybindItem.qml:306", "comment": "" }, { @@ -3980,7 +3980,7 @@ { "term": "Percentage", "context": "Percentage", - "reference": "Modules/Settings/DankBarTab.qml:420", + "reference": "Modules/Settings/WidgetsTab.qml:117", "comment": "" }, { @@ -4064,13 +4064,13 @@ { "term": "Plugin is disabled - enable in Plugins settings to use", "context": "Plugin is disabled - enable in Plugins settings to use", - "reference": "Modules/Settings/DankBarTab.qml:557", + "reference": "Modules/Settings/WidgetsTab.qml:254", "comment": "" }, { "term": "Plugins", "context": "Plugins", - "reference": "Modals/Settings/SettingsSidebar.qml:161, Modules/Settings/AboutTab.qml:228, Modules/Settings/AboutTab.qml:236", + "reference": "Modals/Settings/SettingsSidebar.qml:172, Modules/Settings/AboutTab.qml:228, Modules/Settings/AboutTab.qml:236", "comment": "" }, { @@ -4088,7 +4088,7 @@ { "term": "Position", "context": "Position", - "reference": "Modules/Settings/DockTab.qml:28, Modules/Settings/DankBarTab.qml:1548", + "reference": "Modules/Settings/DockTab.qml:28, Modules/Settings/DankBarTab.qml:591", "comment": "" }, { @@ -4100,19 +4100,19 @@ { "term": "Possible Override Conflicts", "context": "Possible Override Conflicts", - "reference": "Modules/Settings/KeybindsTab.qml:309", + "reference": "Modules/Settings/KeybindsTab.qml:307", "comment": "" }, { "term": "Power & Security", "context": "Power & Security", - "reference": "Modals/Settings/SettingsSidebar.qml:143", + "reference": "Modals/Settings/SettingsSidebar.qml:154", "comment": "" }, { "term": "Power & Sleep", "context": "Power & Sleep", - "reference": "Modals/Settings/SettingsSidebar.qml:153", + "reference": "Modals/Settings/SettingsSidebar.qml:164", "comment": "" }, { @@ -4172,7 +4172,7 @@ { "term": "Press key...", "context": "Press key...", - "reference": "Widgets/KeybindItem.qml:571", + "reference": "Widgets/KeybindItem.qml:567", "comment": "" }, { @@ -4190,7 +4190,7 @@ { "term": "Prevent screen timeout", "context": "Prevent screen timeout", - "reference": "Modules/Settings/DankBarTab.qml:486", + "reference": "Modules/Settings/WidgetsTab.qml:183", "comment": "" }, { @@ -4238,7 +4238,7 @@ { "term": "Printers", "context": "Printers", - "reference": "Modals/Settings/SettingsSidebar.qml:136, Modules/Settings/PrinterTab.qml:153, Modules/Settings/PrinterTab.qml:539, Modules/ControlCenter/BuiltinPlugins/CupsWidget.qml:17", + "reference": "Modals/Settings/SettingsSidebar.qml:147, Modules/Settings/PrinterTab.qml:153, Modules/Settings/PrinterTab.qml:539, Modules/ControlCenter/BuiltinPlugins/CupsWidget.qml:17", "comment": "" }, { @@ -4250,7 +4250,7 @@ { "term": "Privacy Indicator", "context": "Privacy Indicator", - "reference": "Modules/Settings/DankBarTab.qml:450", + "reference": "Modules/Settings/WidgetsTab.qml:147", "comment": "" }, { @@ -4292,19 +4292,19 @@ { "term": "Quick access to application launcher", "context": "Quick access to application launcher", - "reference": "Modules/Settings/DankBarTab.qml:348", + "reference": "Modules/Settings/WidgetsTab.qml:45", "comment": "" }, { "term": "Quick access to color picker", "context": "Quick access to color picker", - "reference": "Modules/Settings/DankBarTab.qml:535", + "reference": "Modules/Settings/WidgetsTab.qml:232", "comment": "" }, { "term": "Quick access to notepad", "context": "Quick access to notepad", - "reference": "Modules/Settings/DankBarTab.qml:528", + "reference": "Modules/Settings/WidgetsTab.qml:225", "comment": "" }, { @@ -4406,13 +4406,13 @@ { "term": "Requires DWL compositor", "context": "Requires DWL compositor", - "reference": "Modules/Settings/DankBarTab.qml:343", + "reference": "Modules/Settings/WidgetsTab.qml:40", "comment": "" }, { "term": "Reset", "context": "Reset", - "reference": "Modules/Settings/DankBarTab.qml:3166, Modules/ControlCenter/Components/EditControls.qml:227", + "reference": "Modules/Settings/WidgetsTab.qml:965, Modules/ControlCenter/Components/EditControls.qml:227", "comment": "" }, { @@ -4448,13 +4448,13 @@ { "term": "Right", "context": "Right", - "reference": "Modules/Settings/DankBarTab.qml:1222, Modules/Settings/DankBarTab.qml:1558", + "reference": "Modules/Settings/DankBarTab.qml:373, Modules/Settings/DankBarTab.qml:601", "comment": "" }, { "term": "Right Section", "context": "Right Section", - "reference": "Modules/Settings/DankBarTab.qml:3346", + "reference": "Modules/Settings/WidgetsTab.qml:1133", "comment": "" }, { @@ -4472,19 +4472,19 @@ { "term": "Run a program (e.g., firefox, kitty)", "context": "Run a program (e.g., firefox, kitty)", - "reference": "Widgets/KeybindItem.qml:709", + "reference": "Widgets/KeybindItem.qml:705", "comment": "" }, { "term": "Run a shell command (e.g., notify-send)", "context": "Run a shell command (e.g., notify-send)", - "reference": "Widgets/KeybindItem.qml:710", + "reference": "Widgets/KeybindItem.qml:706", "comment": "" }, { "term": "Running Apps", "context": "Running Apps", - "reference": "Modals/Settings/SettingsSidebar.qml:84, Modules/Settings/DankBarTab.qml:368", + "reference": "Modals/Settings/SettingsSidebar.qml:95, Modules/Settings/WidgetsTab.qml:65", "comment": "" }, { @@ -4502,7 +4502,7 @@ { "term": "Save", "context": "Save", - "reference": "Modals/DankColorPickerModal.qml:710, Widgets/KeybindItem.qml:1102, Modals/FileBrowser/FileBrowserSaveRow.qml:55, Modules/Notepad/NotepadTextEditor.qml:511, Modules/Notepad/Notepad.qml:461", + "reference": "Modals/DankColorPickerModal.qml:710, Widgets/KeybindItem.qml:1098, Modals/FileBrowser/FileBrowserSaveRow.qml:55, Modules/Notepad/NotepadTextEditor.qml:511, Modules/Notepad/Notepad.qml:461", "comment": "" }, { @@ -4532,7 +4532,7 @@ { "term": "Scale DankBar font sizes independently", "context": "Scale DankBar font sizes independently", - "reference": "Modules/Settings/DankBarTab.qml:3030", + "reference": "Modules/Settings/DankBarTab.qml:1209", "comment": "" }, { @@ -4598,7 +4598,7 @@ { "term": "Search keybinds...", "context": "Search keybinds...", - "reference": "Modules/Settings/KeybindsTab.qml:226", + "reference": "Modules/Settings/KeybindsTab.qml:224", "comment": "" }, { @@ -4643,6 +4643,12 @@ "reference": "Modals/AppPickerModal.qml:11", "comment": "" }, + { + "term": "Select Bar", + "context": "Select Bar", + "reference": "Modules/Settings/WidgetsTab.qml:881", + "comment": "" + }, { "term": "Select Custom Theme", "context": "custom theme file browser title", @@ -4748,7 +4754,7 @@ { "term": "Select...", "context": "Select...", - "reference": "Widgets/KeybindItem.qml:804, Widgets/KeybindItem.qml:858", + "reference": "Widgets/KeybindItem.qml:800, Widgets/KeybindItem.qml:854", "comment": "" }, { @@ -4760,7 +4766,7 @@ { "term": "Separator", "context": "Separator", - "reference": "Modules/Settings/DankBarTab.qml:506", + "reference": "Modules/Settings/WidgetsTab.qml:203", "comment": "" }, { @@ -4784,25 +4790,25 @@ { "term": "Set key and action to save", "context": "Set key and action to save", - "reference": "Widgets/KeybindItem.qml:1079", + "reference": "Widgets/KeybindItem.qml:1075", "comment": "" }, { "term": "Settings", "context": "settings window title", - "reference": "Services/AppSearchService.qml:269, Services/PopoutService.qml:226, Modals/Settings/SettingsModal.qml:41, Modals/Settings/SettingsModal.qml:182, Modules/DankDash/DankDashPopout.qml:290", + "reference": "Services/AppSearchService.qml:269, Services/PopoutService.qml:226, Modals/Settings/SettingsSidebar.qml:57, Modals/Settings/SettingsModal.qml:41, Modals/Settings/SettingsModal.qml:182, Modules/DankDash/DankDashPopout.qml:290", "comment": "" }, { "term": "Setup", "context": "Setup", - "reference": "Modules/Settings/KeybindsTab.qml:351", + "reference": "Modules/Settings/KeybindsTab.qml:349", "comment": "" }, { "term": "Shell", "context": "Shell", - "reference": "Widgets/KeybindItem.qml:1006", + "reference": "Widgets/KeybindItem.qml:1002", "comment": "" }, { @@ -4820,7 +4826,7 @@ { "term": "Shortcuts", "context": "Shortcuts", - "reference": "Modules/Settings/KeybindsTab.qml:531, Modules/Settings/KeybindsTab.qml:531", + "reference": "Modules/Settings/KeybindsTab.qml:529, Modules/Settings/KeybindsTab.qml:529", "comment": "" }, { @@ -4922,19 +4928,19 @@ { "term": "Show on Last Display", "context": "Show on Last Display", - "reference": "Modules/Settings/DisplaysTab.qml:817, Modules/Settings/DankBarTab.qml:1446", + "reference": "Modules/Settings/DisplaysTab.qml:817, Modules/Settings/DankBarTab.qml:522", "comment": "" }, { "term": "Show on Overview", "context": "Show on Overview", - "reference": "Modules/Settings/DockTab.qml:86, Modules/Settings/DankBarTab.qml:1840", + "reference": "Modules/Settings/DockTab.qml:86, Modules/Settings/DankBarTab.qml:731", "comment": "" }, { "term": "Show on all connected displays", "context": "Show on all connected displays", - "reference": "Modules/Settings/DisplaysTab.qml:797, Modules/Settings/DankBarTab.qml:1433", + "reference": "Modules/Settings/DisplaysTab.qml:797", "comment": "" }, { @@ -5024,25 +5030,25 @@ { "term": "Shows all running applications with focus indication", "context": "Shows all running applications with focus indication", - "reference": "Modules/Settings/DankBarTab.qml:369", + "reference": "Modules/Settings/WidgetsTab.qml:66", "comment": "" }, { "term": "Shows current workspace and allows switching", "context": "Shows current workspace and allows switching", - "reference": "Modules/Settings/DankBarTab.qml:355", + "reference": "Modules/Settings/WidgetsTab.qml:52", "comment": "" }, { "term": "Shows when caps lock is active", "context": "Shows when caps lock is active", - "reference": "Modules/Settings/DankBarTab.qml:493", + "reference": "Modules/Settings/WidgetsTab.qml:190", "comment": "" }, { "term": "Shows when microphone, camera, or screen sharing is active", "context": "Shows when microphone, camera, or screen sharing is active", - "reference": "Modules/Settings/DankBarTab.qml:451", + "reference": "Modules/Settings/WidgetsTab.qml:148", "comment": "" }, { @@ -5066,7 +5072,7 @@ { "term": "Size", "context": "Size", - "reference": "Modules/ProcessList/SystemTab.qml:442, Modules/Settings/DankBarTab.qml:2063, Modules/Settings/DankBarTab.qml:2077", + "reference": "Modules/ProcessList/SystemTab.qml:442, Modules/Settings/DankBarTab.qml:789", "comment": "" }, { @@ -5108,13 +5114,13 @@ { "term": "Spacer", "context": "Spacer", - "reference": "Modules/Settings/DankBarTab.qml:499", + "reference": "Modules/Settings/WidgetsTab.qml:196", "comment": "" }, { "term": "Spacing", "context": "Spacing", - "reference": "Modules/Settings/DockTab.qml:136, Modules/Settings/DankBarTab.qml:1898", + "reference": "Modules/Settings/DockTab.qml:136, Modules/Settings/DankBarTab.qml:744", "comment": "" }, { @@ -5132,7 +5138,7 @@ { "term": "Square Corners", "context": "Square Corners", - "reference": "Modules/Settings/DankBarTab.qml:2236", + "reference": "Modules/Settings/DankBarTab.qml:867", "comment": "" }, { @@ -5282,19 +5288,19 @@ { "term": "System Tray", "context": "System Tray", - "reference": "Modules/Settings/DisplaysTab.qml:64, Modules/Settings/DankBarTab.qml:443", + "reference": "Modules/Settings/DisplaysTab.qml:64, Modules/Settings/WidgetsTab.qml:140", "comment": "" }, { "term": "System Update", "context": "System Update", - "reference": "Modules/Settings/DankBarTab.qml:541", + "reference": "Modules/Settings/WidgetsTab.qml:238", "comment": "" }, { "term": "System Updater", "context": "System Updater", - "reference": "Modals/Settings/SettingsSidebar.qml:90, Modules/Settings/SystemUpdaterTab.qml:24", + "reference": "Modals/Settings/SettingsSidebar.qml:101, Modules/Settings/SystemUpdaterTab.qml:24", "comment": "" }, { @@ -5306,7 +5312,7 @@ { "term": "System notification area icons", "context": "System notification area icons", - "reference": "Modules/Settings/DankBarTab.qml:444", + "reference": "Modules/Settings/WidgetsTab.qml:141", "comment": "" }, { @@ -5414,13 +5420,13 @@ { "term": "This bind is overridden by config.kdl", "context": "This bind is overridden by config.kdl", - "reference": "Widgets/KeybindItem.qml:411", + "reference": "Widgets/KeybindItem.qml:407", "comment": "" }, { "term": "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.", "context": "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.", - "reference": "Modules/Settings/DankBarTab.qml:438", + "reference": "Modules/Settings/WidgetsTab.qml:135", "comment": "" }, { @@ -5474,7 +5480,7 @@ { "term": "Title", "context": "Title", - "reference": "Widgets/KeybindItem.qml:1034", + "reference": "Widgets/KeybindItem.qml:1030", "comment": "" }, { @@ -5492,7 +5498,7 @@ { "term": "To use this DMS bind, remove or change the keybind in your config.kdl", "context": "To use this DMS bind, remove or change the keybind in your config.kdl", - "reference": "Widgets/KeybindItem.qml:428", + "reference": "Widgets/KeybindItem.qml:424", "comment": "" }, { @@ -5507,16 +5513,10 @@ "reference": "Services/WeatherService.qml:475", "comment": "" }, - { - "term": "Toggle top bar visibility manually (can be controlled via IPC)", - "context": "Toggle top bar visibility manually (can be controlled via IPC)", - "reference": "Modules/Settings/DankBarTab.qml:1792", - "comment": "" - }, { "term": "Toggle visibility of this bar configuration", "context": "Toggle visibility of this bar configuration", - "reference": "Modules/Settings/DankBarTab.qml:1356", + "reference": "Modules/Settings/DankBarTab.qml:477", "comment": "" }, { @@ -5546,7 +5546,7 @@ { "term": "Top", "context": "Top", - "reference": "Modules/Settings/DankBarTab.qml:1216, Modules/Settings/DankBarTab.qml:1224, Modules/Settings/DankBarTab.qml:1558", + "reference": "Modules/Settings/DankBarTab.qml:367, Modules/Settings/DankBarTab.qml:375, Modules/Settings/DankBarTab.qml:601", "comment": "" }, { @@ -5558,7 +5558,7 @@ { "term": "Top Section", "context": "Top Section", - "reference": "Modules/Settings/DankBarTab.qml:3230", + "reference": "Modules/Settings/WidgetsTab.qml:1019", "comment": "" }, { @@ -5576,7 +5576,7 @@ { "term": "Transparency", "context": "Transparency", - "reference": "Modules/Settings/DockTab.qml:169", + "reference": "Modules/Settings/DockTab.qml:169, Modules/Settings/DankBarTab.qml:1155", "comment": "" }, { @@ -5588,7 +5588,7 @@ { "term": "Type", "context": "Type", - "reference": "Widgets/KeybindItem.qml:687", + "reference": "Widgets/KeybindItem.qml:683", "comment": "" }, { @@ -5636,7 +5636,7 @@ { "term": "Unsaved changes", "context": "Unsaved changes", - "reference": "Widgets/KeybindItem.qml:1079, Modules/Notepad/NotepadTextEditor.qml:588", + "reference": "Widgets/KeybindItem.qml:1075, Modules/Notepad/NotepadTextEditor.qml:588", "comment": "" }, { @@ -5780,7 +5780,7 @@ { "term": "VPN", "context": "VPN", - "reference": "Modules/Settings/WidgetsTabSection.qml:806, Modules/Settings/NetworkTab.qml:1403, Modules/Settings/DankBarTab.qml:478", + "reference": "Modules/Settings/WidgetsTabSection.qml:806, Modules/Settings/WidgetsTab.qml:175, Modules/Settings/NetworkTab.qml:1403", "comment": "" }, { @@ -5816,7 +5816,7 @@ { "term": "VPN status and quick connect", "context": "VPN status and quick connect", - "reference": "Modules/Settings/DankBarTab.qml:479", + "reference": "Modules/Settings/WidgetsTab.qml:176", "comment": "" }, { @@ -5864,13 +5864,13 @@ { "term": "Visibility", "context": "Visibility", - "reference": "Modules/Settings/TimeWeatherTab.qml:1030, Modules/DankBar/Widgets/WeatherForecastCard.qml:80", + "reference": "Modules/Settings/TimeWeatherTab.qml:1030, Modules/Settings/DankBarTab.qml:651, Modules/DankBar/Widgets/WeatherForecastCard.qml:80", "comment": "" }, { "term": "Visual divider between widgets", "context": "Visual divider between widgets", - "reference": "Modules/Settings/DankBarTab.qml:507", + "reference": "Modules/Settings/WidgetsTab.qml:204", "comment": "" }, { @@ -5942,7 +5942,7 @@ { "term": "Weather Widget", "context": "Weather Widget", - "reference": "Modules/Settings/DankBarTab.qml:382", + "reference": "Modules/Settings/WidgetsTab.qml:79", "comment": "" }, { @@ -6002,13 +6002,13 @@ { "term": "Widget Management", "context": "Widget Management", - "reference": "Modules/Settings/DankBarTab.qml:3132", + "reference": "Modules/Settings/WidgetsTab.qml:933", "comment": "" }, { "term": "Widget Outline", "context": "Widget Outline", - "reference": "Modules/Settings/DankBarTab.qml:2610", + "reference": "Modules/Settings/DankBarTab.qml:1046", "comment": "" }, { @@ -6026,7 +6026,13 @@ { "term": "Widget Transparency", "context": "Widget Transparency", - "reference": "Modules/Settings/DankBarTab.qml:2935, Modules/Settings/DankBarTab.qml:2949", + "reference": "Modules/Settings/DankBarTab.qml:1181", + "comment": "" + }, + { + "term": "Widgets", + "context": "Widgets", + "reference": "Modals/Settings/SettingsSidebar.qml:62", "comment": "" }, { @@ -6068,19 +6074,19 @@ { "term": "Workspace Switcher", "context": "Workspace Switcher", - "reference": "Modules/Settings/DankBarTab.qml:354", + "reference": "Modules/Settings/WidgetsTab.qml:51", "comment": "" }, { "term": "Workspaces", "context": "Workspaces", - "reference": "Modals/Settings/SettingsSidebar.qml:64", + "reference": "Modals/Settings/SettingsSidebar.qml:75", "comment": "" }, { "term": "Workspaces & Widgets", "context": "Workspaces & Widgets", - "reference": "Modals/Settings/SettingsSidebar.qml:59", + "reference": "Modals/Settings/SettingsSidebar.qml:70", "comment": "" }, { @@ -6122,7 +6128,7 @@ { "term": "dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.", "context": "dms/binds.kdl exists but is not included in config.kdl. Custom keybinds will not work until this is fixed.", - "reference": "Modules/Settings/KeybindsTab.qml:322", + "reference": "Modules/Settings/KeybindsTab.qml:320", "comment": "" }, { @@ -6134,13 +6140,13 @@ { "term": "e.g., firefox, kitty --title foo", "context": "e.g., firefox, kitty --title foo", - "reference": "Widgets/KeybindItem.qml:985", + "reference": "Widgets/KeybindItem.qml:981", "comment": "" }, { "term": "e.g., focus-workspace 3, resize-column -10", "context": "e.g., focus-workspace 3, resize-column -10", - "reference": "Widgets/KeybindItem.qml:922", + "reference": "Widgets/KeybindItem.qml:918", "comment": "" }, { diff --git a/quickshell/translations/poexports/es.json b/quickshell/translations/poexports/es.json index aac604a5..4a0d471b 100644 --- a/quickshell/translations/poexports/es.json +++ b/quickshell/translations/poexports/es.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "Clima de la semana" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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" }, @@ -254,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 (" }, @@ -332,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" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "Bluetooth" }, - "Bluetooth Icon": { - "Bluetooth Icon": "Icono Bluetooth" - }, "Bluetooth Settings": { "Bluetooth Settings": "Ajustes Bluetooth" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "Cerrar vista general al iniciar" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "Redondeo de esquinas (0 = esquinas cuadradas)" - }, "Corner Radius Override": { "Corner Radius Override": "Redondeo de esquinas personal" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "Cubierta abierta" }, @@ -827,12 +788,6 @@ "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" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "Prioridades visibles sobre apps en pantalla completa" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "Habilitar barra" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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." }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "Hibernar" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "Duración antes de ocultar (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "Seleccionar logo del lanzador" }, diff --git a/quickshell/translations/poexports/it.json b/quickshell/translations/poexports/it.json index 650c547a..2f30f2e8 100644 --- a/quickshell/translations/poexports/it.json +++ b/quickshell/translations/poexports/it.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "Previsioni 7-giorni" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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": "" }, @@ -254,9 +221,6 @@ "Audio Devices": { "Audio Devices": "Dispositivi Audio" }, - "Audio Icon": { - "Audio Icon": "Icona Audio" - }, "Audio Output Devices (": { "Audio Output Devices (": "Dispositivi Uscita Audio (" }, @@ -332,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" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "" }, - "Bluetooth Icon": { - "Bluetooth Icon": "Icona Bluetooth" - }, "Bluetooth Settings": { "Bluetooth Settings": "Impostazioni Bluetooth" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "Chiudi Overview all'Avvio" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "Raggio Angoli (0 = angoli squadrati)" - }, "Corner Radius Override": { "Corner Radius Override": "Sovrascrittura Raggio Angoli" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "Coperchio Aperto" }, @@ -827,12 +788,6 @@ "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" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "Visualizza tutte le priorità sulle apps a schermo pieno" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "Abilita Barra" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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." }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "Iberna" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "Ritardo Scomparsa (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "Seleziona Logo Launcher" }, diff --git a/quickshell/translations/poexports/ja.json b/quickshell/translations/poexports/ja.json index f91ce0f1..d144ac0c 100644 --- a/quickshell/translations/poexports/ja.json +++ b/quickshell/translations/poexports/ja.json @@ -29,12 +29,6 @@ "(Unnamed)": { "(Unnamed)": "(名前なし)" }, - "- Stateless System Monitoring": { - "- Stateless System Monitoring": "- ステートレスシステム監視" - }, - "- Support Us With a Star ⭐": { - "- Support Us With a Star ⭐": "- 星を付けて応援してください⭐" - }, "0 = square corners": { "0 = square corners": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "7日間予報" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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": "" }, @@ -254,9 +221,6 @@ "Audio Devices": { "Audio Devices": "オーディオデバイス" }, - "Audio Icon": { - "Audio Icon": "オーディオアイコン" - }, "Audio Output Devices (": { "Audio Output Devices (": "オーディオ出力デバイス(" }, @@ -332,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": "画面のスペースを広げるために上部のバーを自動的に非表示" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "" }, - "Bluetooth Icon": { - "Bluetooth Icon": "Bluetoothアイコン" - }, "Bluetooth Settings": { "Bluetooth Settings": "Bluetooth設定" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "起動中のときに概要を閉じる" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "コーナー半径(0 = 角丸なし)" - }, "Corner Radius Override": { "Corner Radius Override": "コーナー半径オーバーライド" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "カバーオープン" }, @@ -827,12 +788,6 @@ "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 フォントスケール" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "フルスクリーンアプリよりもすべての優先度を表示する" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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 = エッジ・トゥ・エッジ)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "バーを起用" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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 を手動で設定する必要があります。" }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "休止状態" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "遅延を隠す (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "ランチャーロゴを選ぶ" }, diff --git a/quickshell/translations/poexports/pl.json b/quickshell/translations/poexports/pl.json index 7d2396f9..e9877e56 100644 --- a/quickshell/translations/poexports/pl.json +++ b/quickshell/translations/poexports/pl.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "Prognoza 7-dniowa" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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" }, @@ -254,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 (" }, @@ -332,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" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "Bluetooth" }, - "Bluetooth Icon": { - "Bluetooth Icon": "Ikona Bluetooth" - }, "Bluetooth Settings": { "Bluetooth Settings": "Ustawienia Bluetooth" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "Zamknij podgląd przy uruchomieniu" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "Promień narożnika (0 = kwadratowe narożniki)" - }, "Corner Radius Override": { "Corner Radius Override": "Zastąpienie promienia narożnika" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "Pokrywa otwarta" }, @@ -827,12 +788,6 @@ "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" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "Wyświetlaj wszystkie priorytety nad aplikacjami pełnoekranowymi" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "Włącz pasek" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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." }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "Hibernacja" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "Opóźnienie ukrycia (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "Wybierz logo launchera" }, diff --git a/quickshell/translations/poexports/pt.json b/quickshell/translations/poexports/pt.json index d8a31833..08a7ee55 100644 --- a/quickshell/translations/poexports/pt.json +++ b/quickshell/translations/poexports/pt.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "Previsão do Tempo de 7 Dias" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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": "" }, @@ -254,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 (" }, @@ -332,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" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "" }, - "Bluetooth Icon": { - "Bluetooth Icon": "ícone do Bluetooth" - }, "Bluetooth Settings": { "Bluetooth Settings": "Configurações do Bluetooth" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "Ângulo da quina (0 = quina quadrilátera)" - }, "Corner Radius Override": { "Corner Radius Override": "" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "" }, @@ -827,12 +788,6 @@ "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" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "Exibir todas as prioridades em aplicativos de tela cheia" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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." }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "Hibernar" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "Selecionar Logo do Lançador" }, diff --git a/quickshell/translations/poexports/tr.json b/quickshell/translations/poexports/tr.json index b4de41a2..1de5c696 100644 --- a/quickshell/translations/poexports/tr.json +++ b/quickshell/translations/poexports/tr.json @@ -29,12 +29,6 @@ "(Unnamed)": { "(Unnamed)": "(İsimsiz)" }, - "- Stateless System Monitoring": { - "- Stateless System Monitoring": "- Durumsuz Sistem İzleme" - }, - "- Support Us With a Star ⭐": { - "- Support Us With a Star ⭐": "- Bir yıldızla bize destek olun ⭐" - }, "0 = square corners": { "0 = square corners": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "7 Günlük Tahmin" - }, "8 seconds": { "8 seconds": "" }, @@ -149,15 +140,9 @@ "Add Widget": { "Add Widget": "Widget Ekle" }, - "Add Widget to ": { - "Add Widget to ": "Şuraya Widget ekle:" - }, "Add Widget to %1 Section": { "Add Widget to %1 Section": "%1 Bölümüne Widget Ekle" }, - "Add a VPN in NetworkManager": { - "Add a VPN in NetworkManager": "NetworkManager'da VPN ekle" - }, "Add a border around the dock": { "Add a border around the dock": "Dock etrafına kenarlık ekle" }, @@ -182,9 +167,6 @@ "Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": { "Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Geri • F1/I: Dosya bilgisi • F10: Yardım • Esc: Kapat" }, - "Always Show OSD Percentage": { - "Always Show OSD Percentage": "OSD Yüzdesini Her Zaman Göster" - }, "Always Show Percentage": { "Always Show Percentage": "" }, @@ -227,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.": "Uygulamalar önce kullanım sıklığına göre, daha sonra son kullanılana göre ve en son alfabetik olarak sıralanır." }, - "Are you sure you want to hibernate the system?": { - "Are you sure you want to hibernate the system?": "Sistemi hazırda bekletme moduna almak istediğinizden emin misiniz?" - }, - "Are you sure you want to log out?": { - "Are you sure you want to log out?": "Çıkış yapmak istediğinizden emin misiniz?" - }, - "Are you sure you want to power off the system?": { - "Are you sure you want to power off the system?": "Sistemi kapatmak istediğinizden emin misiniz?" - }, - "Are you sure you want to reboot the system?": { - "Are you sure you want to reboot the system?": "Sistemi yeniden başlatmak istediğinizden emin misiniz?" - }, - "Are you sure you want to suspend the system?": { - "Are you sure you want to suspend the system?": "Sistemi askıya almak istediğinizden emin misiniz?" - }, "Audio": { "Audio": "Ses" }, @@ -254,9 +221,6 @@ "Audio Devices": { "Audio Devices": "Ses Aygıtları" }, - "Audio Icon": { - "Audio Icon": "Ses Simgesi" - }, "Audio Output Devices (": { "Audio Output Devices (": "Ses Çıkış Aygıtları (" }, @@ -332,9 +296,6 @@ "Automatically determine your location using your IP address": { "Automatically determine your location using your IP address": "IP adresinizi kullanarak konumunuzu otomatik olarak belirleyin" }, - "Automatically extract colors from wallpaper": { - "Automatically extract colors from wallpaper": "Duvar kağıdından renkleri otomatik olarak çıkarın" - }, "Automatically hide the top bar to expand screen real estate": { "Automatically hide the top bar to expand screen real estate": "Ekran alanını genişletmek için üst çubuğu otomatik olarak gizle" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "Bluetooth" }, - "Bluetooth Icon": { - "Bluetooth Icon": "Bluetooth Simgesi" - }, "Bluetooth Settings": { "Bluetooth Settings": "Bluetooth Ayarları" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "Başlatmada Genel Görünümü Kapat" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "Köşe Yarıçapı (0 = kare köşeler)" - }, "Corner Radius Override": { "Corner Radius Override": "Köşe Yarıçapı Değiştirme" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "Kapak Açık" }, @@ -827,12 +788,6 @@ "Dank Bar": { "Dank Bar": "Dank Bar" }, - "Dank Bar Transparency": { - "Dank Bar Transparency": "Dank Bar Şeffaflığı" - }, - "Dank Bar Widget Transparency": { - "Dank Bar Widget Transparency": "Dank Bar Widget Şeffaflığı" - }, "DankBar Font Scale": { "DankBar Font Scale": "DankBar Yazı Tipi Ölçeği" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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": "Ekranın üst, alt, sol veya sağ kenarına yerleştirilebilen, sabitlenmiş ve çalışan uygulamaları içeren bir dock görüntüleyin." - }, "Display all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "Tam ekran uygulamaların üzerinde tüm öncelikleri göster" }, @@ -968,9 +920,6 @@ "Display settings for ": { "Display settings for ": "Ekran ayarları: " }, - "Display volume and brightness percentage values by default in OSD popups": { - "Display volume and brightness percentage values by default in OSD popups": "OSD açılır pencerelerinde varsayılan olarak ses seviyesi ve parlaklık yüzdelik değerlerini göster" - }, "Display volume and brightness percentage values in OSD popups": { "Display volume and brightness percentage values in OSD popups": "" }, @@ -1034,8 +983,8 @@ "Dusk (Nautical Twilight)": { "Dusk (Nautical Twilight)": "Alacakaranlık (Denizci Alacakaranlığı)" }, - "Dynamic Theming": { - "Dynamic Theming": "Dinamik Tema" + "Edge Spacing": { + "Edge Spacing": "" }, "Edge Spacing (0 = edge-to-edge)": { "Edge Spacing (0 = edge-to-edge)": "Kenar Aralığı (0 = kenardan kenara)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "Barı Etkinleştir" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,6 +1022,9 @@ "Enable WiFi": { "Enable WiFi": "WiFi Etkinleştir" }, + "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.": "Kompozitör tarafından hedeflenebilir bulanıklık katmanını etkinleştir (isim alanı: dms:blurwallpaper). Manuel Niri yapılandırması gerektirir." }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "Hazırda Beklet" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "Gizleme Gecikmesi (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "Uygulama Seç" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "Başlatıcı Logosu Seç" }, diff --git a/quickshell/translations/poexports/zh_CN.json b/quickshell/translations/poexports/zh_CN.json index 9cad99b7..a96f8f63 100644 --- a/quickshell/translations/poexports/zh_CN.json +++ b/quickshell/translations/poexports/zh_CN.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "七日天气预报" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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": "" }, @@ -254,9 +221,6 @@ "Audio Devices": { "Audio Devices": "音频设备" }, - "Audio Icon": { - "Audio Icon": "音量图标" - }, "Audio Output Devices (": { "Audio Output Devices (": "音频输出设备 (" }, @@ -332,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": "自动隐藏顶栏以扩展屏幕可用空间" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "" }, - "Bluetooth Icon": { - "Bluetooth Icon": "蓝牙图标" - }, "Bluetooth Settings": { "Bluetooth Settings": "蓝牙设置" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "在启动时关闭概览" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "圆角半径(0 = 直角)" - }, "Corner Radius Override": { "Corner Radius Override": "圆角半径覆盖" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "打印机盖已打开" }, @@ -827,12 +788,6 @@ "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 字体缩放" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "应用全屏时仍显示所有优先级的通知" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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 = 紧贴边缘)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "启用状态栏" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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。" }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "休眠" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "隐藏延迟 (ms)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "选择启动器Logo" }, diff --git a/quickshell/translations/poexports/zh_TW.json b/quickshell/translations/poexports/zh_TW.json index 6e6404c2..966a25d1 100644 --- a/quickshell/translations/poexports/zh_TW.json +++ b/quickshell/translations/poexports/zh_TW.json @@ -29,12 +29,6 @@ "(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": "" }, @@ -80,9 +74,6 @@ "5 seconds": { "5 seconds": "" }, - "7-Day Forecast": { - "7-Day Forecast": "七天氣象預報" - }, "8 seconds": { "8 seconds": "" }, @@ -149,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": "" }, @@ -182,9 +167,6 @@ "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": "" }, @@ -227,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": "音訊" }, @@ -254,9 +221,6 @@ "Audio Devices": { "Audio Devices": "音訊設備" }, - "Audio Icon": { - "Audio Icon": "音訊圖示" - }, "Audio Output Devices (": { "Audio Output Devices (": "音訊輸出設備 (" }, @@ -332,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": "自動隱藏頂部欄以擴大螢幕空間" }, @@ -398,9 +359,6 @@ "Bluetooth": { "Bluetooth": "藍牙" }, - "Bluetooth Icon": { - "Bluetooth Icon": "藍芽圖示" - }, "Bluetooth Settings": { "Bluetooth Settings": "藍芽設定" }, @@ -587,6 +545,9 @@ "Close Overview on Launch": { "Close Overview on Launch": "啟動時關閉概覽" }, + "Color": { + "Color": "" + }, "Color Mode": { "Color Mode": "" }, @@ -722,12 +683,12 @@ "Corner Radius": { "Corner Radius": "" }, - "Corner Radius (0 = square corners)": { - "Corner Radius (0 = square corners)": "圓角半徑 (0 = 方角)" - }, "Corner Radius Override": { "Corner Radius Override": "圓角半徑覆寫" }, + "Corners & Background": { + "Corners & Background": "" + }, "Cover Open": { "Cover Open": "上蓋開啟" }, @@ -827,12 +788,6 @@ "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 字體縮放" }, @@ -941,9 +896,6 @@ "Display a dock with pinned and running applications": { "Display a dock with pinned and running applications": "" }, - "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 all priorities over fullscreen apps": { "Display all priorities over fullscreen apps": "顯示全螢幕應用程式上的所有優先級" }, @@ -968,9 +920,6 @@ "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": "" }, @@ -1034,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 = 無間隔)" @@ -1052,6 +1001,9 @@ "Enable Bar": { "Enable Bar": "啟用欄" }, + "Enable Border": { + "Enable Border": "" + }, "Enable Do Not Disturb": { "Enable Do Not Disturb": "" }, @@ -1070,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。" }, @@ -1406,6 +1361,9 @@ "Hibernate": { "Hibernate": "休眠" }, + "Hide Delay": { + "Hide Delay": "" + }, "Hide Delay (ms)": { "Hide Delay (ms)": "隱藏延遲 (毫秒)" }, @@ -2474,6 +2432,9 @@ "Select Application": { "Select Application": "" }, + "Select Bar": { + "Select Bar": "" + }, "Select Launcher Logo": { "Select Launcher Logo": "選擇啟動器 Logo" }, diff --git a/quickshell/translations/template.json b/quickshell/translations/template.json index 8c414fb8..70ed6132 100644 --- a/quickshell/translations/template.json +++ b/quickshell/translations/template.json @@ -664,13 +664,6 @@ "reference": "", "comment": "" }, - { - "term": "Automatically calculate popup distance from bar edge.", - "translation": "", - "context": "", - "reference": "", - "comment": "" - }, { "term": "Automatically cycle through wallpapers in the same folder", "translation": "", @@ -692,13 +685,6 @@ "reference": "", "comment": "" }, - { - "term": "Automatically hide the top bar to expand screen real estate", - "translation": "", - "context": "", - "reference": "", - "comment": "" - }, { "term": "Automatically lock after", "translation": "", @@ -1126,13 +1112,6 @@ "reference": "", "comment": "" }, - { - "term": "Choose the widget outline accent color", - "translation": "", - "context": "", - "reference": "", - "comment": "" - }, { "term": "Choose where notification popups appear on screen", "translation": "", @@ -1245,6 +1224,13 @@ "reference": "", "comment": "" }, + { + "term": "Color", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Color Mode", "translation": "", @@ -1504,6 +1490,13 @@ "reference": "", "comment": "" }, + { + "term": "Corners & Background", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Cover Open", "translation": "", @@ -2184,7 +2177,7 @@ "comment": "" }, { - "term": "Edge Spacing (0 = edge-to-edge)", + "term": "Edge Spacing", "translation": "", "context": "", "reference": "", @@ -2218,6 +2211,13 @@ "reference": "", "comment": "" }, + { + "term": "Enable Border", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Enable Do Not Disturb", "translation": "", @@ -2260,6 +2260,13 @@ "reference": "", "comment": "" }, + { + "term": "Enable Widget Outline", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.", "translation": "", @@ -3024,7 +3031,7 @@ "comment": "" }, { - "term": "Hide Delay (ms)", + "term": "Hide Delay", "translation": "", "context": "", "reference": "", @@ -4465,13 +4472,6 @@ "reference": "", "comment": "" }, - { - "term": "Outline Color", - "translation": "", - "context": "", - "reference": "", - "comment": "" - }, { "term": "Outline Opacity", "translation": "", @@ -5417,6 +5417,13 @@ "reference": "", "comment": "" }, + { + "term": "Select Bar", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Select Custom Theme", "translation": "", @@ -6425,13 +6432,6 @@ "reference": "", "comment": "" }, - { - "term": "Toggle top bar visibility manually (can be controlled via IPC)", - "translation": "", - "context": "", - "reference": "", - "comment": "" - }, { "term": "Toggle visibility of this bar configuration", "translation": "", @@ -7034,6 +7034,13 @@ "reference": "", "comment": "" }, + { + "term": "Widgets", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, { "term": "Wind", "translation": "",