From 8331d1954d9cd23c058307875ebea1d7f23ba59a Mon Sep 17 00:00:00 2001 From: shouya <526598+shouya@users.noreply.github.com> Date: Fri, 21 Nov 2025 14:49:31 +0900 Subject: [PATCH] show workspaces for the focused screen --- Modules/Bar/Widgets/Workspace.qml | 13 ++++++++++++- .../Bar/WidgetSettings/WorkspaceSettings.qml | 9 +++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Modules/Bar/Widgets/Workspace.qml b/Modules/Bar/Widgets/Workspace.qml index 325f1a7e..680ca2df 100644 --- a/Modules/Bar/Widgets/Workspace.qml +++ b/Modules/Bar/Widgets/Workspace.qml @@ -46,6 +46,7 @@ Item { readonly property string labelMode: (widgetSettings.labelMode !== undefined) ? widgetSettings.labelMode : widgetMetadata.labelMode readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : widgetMetadata.hideUnoccupied + readonly property bool showFocusedScreen: (widgetSettings.showFocusedScreen !== undefined) ? widgetSettings.showFocusedScreen : widgetMetadata.showFocusedScreen readonly property int characterCount: isVertical ? 2 : ((widgetSettings.characterCount !== undefined) ? widgetSettings.characterCount : widgetMetadata.characterCount) property bool isDestroying: false @@ -162,10 +163,20 @@ Item { function refreshWorkspaces() { localWorkspaces.clear(); + + var focusedOutput = null; + if (showFocusedScreen) { + for (var i = 0; i < CompositorService.workspaces.count; i++) { + const ws = CompositorService.workspaces.get(i); + if (ws.isFocused) focusedOutput = ws.output.toLowerCase(); + } + } + if (screen !== null) { for (var i = 0; i < CompositorService.workspaces.count; i++) { const ws = CompositorService.workspaces.get(i); - if (ws.output.toLowerCase() === screen.name.toLowerCase()) { + if ((showFocusedScreen && ws.output.toLowerCase() == focusedOutput) || + (!showFocusedScreen && ws.output.toLowerCase() == screen.name.toLowerCase())) { if (hideUnoccupied && !ws.isOccupied && !ws.isFocused) { continue; } diff --git a/Modules/Panels/Settings/Bar/WidgetSettings/WorkspaceSettings.qml b/Modules/Panels/Settings/Bar/WidgetSettings/WorkspaceSettings.qml index 0c702563..dfb4ef84 100644 --- a/Modules/Panels/Settings/Bar/WidgetSettings/WorkspaceSettings.qml +++ b/Modules/Panels/Settings/Bar/WidgetSettings/WorkspaceSettings.qml @@ -14,6 +14,7 @@ ColumnLayout { property string valueLabelMode: widgetData.labelMode !== undefined ? widgetData.labelMode : widgetMetadata.labelMode property bool valueHideUnoccupied: widgetData.hideUnoccupied !== undefined ? widgetData.hideUnoccupied : widgetMetadata.hideUnoccupied + property bool valueShowFocusedScreen: widgetData.showFocusedScreen !== undefined ? widgetData.showFocusedScreen : widgetMetadata.showFocusedScreen property int valueCharacterCount: widgetData.characterCount !== undefined ? widgetData.characterCount : widgetMetadata.characterCount function saveSettings() { @@ -21,6 +22,7 @@ ColumnLayout { settings.labelMode = valueLabelMode; settings.hideUnoccupied = valueHideUnoccupied; settings.characterCount = valueCharacterCount; + settings.showFocusedScreen = valueShowFocusedScreen; return settings; } @@ -51,6 +53,13 @@ ColumnLayout { minimumWidth: 200 } + NToggle { + label: I18n.tr("bar.widget-settings.workspace.show-focused-screen.label") + description: I18n.tr("bar.widget-settings.workspace.show-focused-screen.description") + checked: valueShowFocusedScreen + onToggled: checked => valueShowFocusedScreen = checked + } + NToggle { label: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.label") description: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.description")