From 3a2bb40117d40a315a14e30ba841fef9e5d4e7f4 Mon Sep 17 00:00:00 2001 From: mkuritsu Date: Fri, 12 Sep 2025 11:50:07 +0100 Subject: [PATCH] Add toggle to hide unoccupied workspaces --- Modules/Bar/Widgets/Workspace.qml | 5 +++++ .../Bar/WidgetSettings/WorkspaceSettings.qml | 15 ++++++++++++--- Services/BarWidgetRegistry.qml | 3 ++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Modules/Bar/Widgets/Workspace.qml b/Modules/Bar/Widgets/Workspace.qml index d8bb543..950ca61 100644 --- a/Modules/Bar/Widgets/Workspace.qml +++ b/Modules/Bar/Widgets/Workspace.qml @@ -33,6 +33,8 @@ Item { } readonly property string labelMode: (widgetSettings.labelMode !== undefined) ? widgetSettings.labelMode : widgetMetadata.labelMode + readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : widgetMetadata.hideUnoccupied + onHideUnoccupiedChanged: refreshWorkspaces() property bool isDestroying: false property bool hovered: false @@ -91,6 +93,9 @@ Item { for (var i = 0; i < WorkspaceService.workspaces.count; i++) { const ws = WorkspaceService.workspaces.get(i) if (ws.output.toLowerCase() === screen.name.toLowerCase()) { + if (hideUnoccupied && !ws.isOccupied && !ws.isFocused) { + continue + } localWorkspaces.append(ws) } } diff --git a/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml b/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml index 1e44dae..14effa2 100644 --- a/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml +++ b/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml @@ -14,9 +14,10 @@ ColumnLayout { property var widgetMetadata: null function saveSettings() { - var settings = Object.assign({}, widgetData || {}) - settings.labelMode = labelModeCombo.currentKey - return settings + var settings = Object.assign({}, widgetData || {}); + settings.labelMode = labelModeCombo.currentKey; + settings.hideUnoccupied = hideUnoccupiedToggle.checked; + return settings; } NComboBox { @@ -41,4 +42,12 @@ ColumnLayout { onSelected: key => labelModeCombo.currentKey = key minimumWidth: 200 * scaling } + + NToggle { + id: hideUnoccupiedToggle + label: "Hide unoccupied" + description: "Don't display workspaces without windows." + checked: widgetData.hideUnoccupied + onToggled: checked => hideUnoccupiedToggle.checked = checked + } } diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index b67c769..bd6dc35 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -87,7 +87,8 @@ Singleton { }, "Workspace": { "allowUserSettings": true, - "labelMode": "index" + "labelMode": "index", + "hideUnoccupied": false }, "MediaMini": { "allowUserSettings": true,