From f1e3452307685b02e5ec91b4b91714fae13f6dc1 Mon Sep 17 00:00:00 2001 From: Roni Laukkarinen Date: Mon, 20 Apr 2026 16:15:02 +0300 Subject: [PATCH] feat(system-tray): add optional monochrome icons setting (#2241) Adds a 'Monochrome Icons' toggle to the system tray widget context menu. When enabled, all system tray icons are desaturated using MultiEffect, giving a cleaner monochrome bar aesthetic that matches minimal themes. The setting is per-user (settings.json), defaults to false to preserve existing behavior. --- quickshell/Common/SettingsData.qml | 1 + quickshell/Common/settings/SettingsSpec.js | 1 + .../Modules/DankBar/Widgets/SystemTrayBar.qml | 16 ++++++++++++++++ quickshell/Modules/Settings/DankBarTab.qml | 9 +++++++++ 4 files changed, 27 insertions(+) diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index e70d25b9..0a060db4 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -211,6 +211,7 @@ Singleton { property int selectedGpuIndex: 0 property var enabledGpuPciIds: [] property bool showSystemTray: true + property bool systemTrayMonochromeIcons: false property bool showClock: true property bool showNotificationButton: true property bool showBattery: true diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index bf5c99f3..8c49c9d6 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -79,6 +79,7 @@ var SPEC = { selectedGpuIndex: { def: 0 }, enabledGpuPciIds: { def: [] }, showSystemTray: { def: true }, + systemTrayMonochromeIcons: { def: false }, showClock: { def: true }, showNotificationButton: { def: true }, showBattery: { def: true }, diff --git a/quickshell/Modules/DankBar/Widgets/SystemTrayBar.qml b/quickshell/Modules/DankBar/Widgets/SystemTrayBar.qml index 7fb93629..18702051 100644 --- a/quickshell/Modules/DankBar/Widgets/SystemTrayBar.qml +++ b/quickshell/Modules/DankBar/Widgets/SystemTrayBar.qml @@ -366,6 +366,10 @@ BasePill { smooth: true mipmap: true visible: status === Image.Ready + layer.enabled: SettingsData.systemTrayMonochromeIcons + layer.effect: MultiEffect { + saturation: -1 + } } Text { @@ -581,6 +585,10 @@ BasePill { smooth: true mipmap: true visible: status === Image.Ready + layer.enabled: SettingsData.systemTrayMonochromeIcons + layer.effect: MultiEffect { + saturation: -1 + } } Text { @@ -709,6 +717,10 @@ BasePill { smooth: true mipmap: true visible: status === Image.Ready + layer.enabled: SettingsData.systemTrayMonochromeIcons + layer.effect: MultiEffect { + saturation: -1 + } } Text { @@ -1210,6 +1222,10 @@ BasePill { smooth: true mipmap: true visible: status === Image.Ready + layer.enabled: SettingsData.systemTrayMonochromeIcons + layer.effect: MultiEffect { + saturation: -1 + } } Text { diff --git a/quickshell/Modules/Settings/DankBarTab.qml b/quickshell/Modules/Settings/DankBarTab.qml index a4bd87d1..9771e4ce 100644 --- a/quickshell/Modules/Settings/DankBarTab.qml +++ b/quickshell/Modules/Settings/DankBarTab.qml @@ -714,6 +714,15 @@ Item { }) } + SettingsToggleCard { + iconName: "filter_b_and_w" + title: I18n.tr("Monochrome System Tray Icons") + description: I18n.tr("Desaturate all system tray icons for a uniform monochrome look") + visible: selectedBarConfig?.enabled + checked: SettingsData.systemTrayMonochromeIcons + onToggled: checked => SettingsData.set("systemTrayMonochromeIcons", checked) + } + SettingsToggleCard { iconName: "mouse" title: I18n.tr("Scroll Wheel")