diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index 952ae9cd..6267ecaa 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -175,6 +175,7 @@ Singleton { property bool showWorkspacePadding: false property bool workspaceScrolling: false property bool showWorkspaceApps: false + property bool groupWorkspaceApps: true property int maxWorkspaceIcons: 3 property bool workspacesPerMonitor: true property bool showOccupiedWorkspacesOnly: false diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index 15916616..be204ab0 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -86,6 +86,7 @@ var SPEC = { workspaceScrolling: { def: false }, showWorkspaceApps: { def: false }, maxWorkspaceIcons: { def: 3 }, + groupWorkspaceApps: { def: true }, workspacesPerMonitor: { def: true }, showOccupiedWorkspacesOnly: { def: false }, reverseScrolling: { def: false }, diff --git a/quickshell/Modules/DankBar/Widgets/WorkspaceSwitcher.qml b/quickshell/Modules/DankBar/Widgets/WorkspaceSwitcher.qml index a31caafe..93307862 100644 --- a/quickshell/Modules/DankBar/Widgets/WorkspaceSwitcher.qml +++ b/quickshell/Modules/DankBar/Widgets/WorkspaceSwitcher.qml @@ -241,7 +241,7 @@ Item { } const keyBase = (w.app_id || w.appId || w.class || w.windowClass || "unknown"); - const key = isActiveWs ? `${keyBase}_${i}` : keyBase; + const key = isActiveWs || !SettingsData.groupWorkspaceApps ? `${keyBase}_${i}` : keyBase; if (!byApp[key]) { const moddedId = Paths.moddedAppId(keyBase); diff --git a/quickshell/Modules/Settings/WorkspacesTab.qml b/quickshell/Modules/Settings/WorkspacesTab.qml index 0b56bab5..d3b5bea3 100644 --- a/quickshell/Modules/Settings/WorkspacesTab.qml +++ b/quickshell/Modules/Settings/WorkspacesTab.qml @@ -103,6 +103,16 @@ Item { } } + SettingsToggleRow { + settingKey: "groupWorkspaceApps" + tags: ["workspace", "apps", "icons", "group", "grouped", "collapse"] + text: I18n.tr("Group Workspace Apps") + description: I18n.tr("Group repeated application icons in unfocused workspaces") + checked: SettingsData.groupWorkspaceApps + visible: SettingsData.showWorkspaceApps + onToggled: checked => SettingsData.set("groupWorkspaceApps", checked) + } + SettingsToggleRow { settingKey: "workspacesPerMonitor" tags: ["workspace", "per-monitor", "multi-monitor"] diff --git a/quickshell/translations/settings_search_index.json b/quickshell/translations/settings_search_index.json index e6885e7a..c7dde9a8 100644 --- a/quickshell/translations/settings_search_index.json +++ b/quickshell/translations/settings_search_index.json @@ -708,6 +708,31 @@ ], "icon": "visibility_off" }, + { + "section": "groupWorkspaceApps", + "label": "Group Workspace Apps", + "tabIndex": 4, + "category": "Workspaces", + "keywords": [ + "app", + "application", + "apps", + "collapse", + "desktop", + "group", + "grouped", + "icons", + "program", + "repeated", + "same", + "spaces", + "virtual", + "virtual desktops", + "workspace", + "workspaces" + ], + "description": "Group repeated application icons in the same workspace" + }, { "section": "workspaceIcons", "label": "Named Workspace Icons", @@ -873,19 +898,25 @@ }, { "section": "showWorkspaceName", - "label": "Workspace Name", + "label": "Workspace Names", "tabIndex": 4, "category": "Workspaces", "keywords": [ + "bars", "desktop", + "first", + "horizontal", "labels", + "letter", + "name", + "names", "panel", "show", "spaces", "statusbar", - "switcher", "taskbar", "topbar", + "vertical", "virtual", "virtual desktops", "workspace",