diff --git a/modules/Bar.qml b/modules/Bar.qml index 48cf971..c0ee33b 100644 --- a/modules/Bar.qml +++ b/modules/Bar.qml @@ -50,7 +50,7 @@ PanelWindow { anchors.verticalCenter: parent.verticalCenter spacing: M.Theme.barSpacing - M.Workspaces { visible: M.Modules.workspaces } + M.Workspaces { bar: bar; visible: M.Modules.workspaces } M.Tray { bar: bar visible: M.Modules.tray diff --git a/modules/Workspaces.qml b/modules/Workspaces.qml index 6f45225..e185d6f 100644 --- a/modules/Workspaces.qml +++ b/modules/Workspaces.qml @@ -1,4 +1,5 @@ import QtQuick +import Quickshell import Quickshell.Io import "." as M @@ -6,8 +7,12 @@ Row { id: root spacing: 4 - property var _workspaces: [] + required property var bar + + property var _allWorkspaces: [] property int _activeId: -1 + readonly property string _output: bar.screen?.name ?? "" + readonly property var _workspaces: _allWorkspaces.filter(w => w.output === root._output) // Initial state Process { @@ -18,7 +23,7 @@ Row { onStreamFinished: { try { const ws = JSON.parse(text); - root._workspaces = ws.sort((a, b) => a.idx - b.idx); + root._allWorkspaces = ws.sort((a, b) => a.idx - b.idx); for (const w of ws) { if (w.is_focused) root._activeId = w.id; @@ -39,7 +44,7 @@ Row { try { const ev = JSON.parse(line); if (ev.WorkspacesChanged !== undefined) { - root._workspaces = ev.WorkspacesChanged.workspaces + root._allWorkspaces = ev.WorkspacesChanged.workspaces .sort((a, b) => a.idx - b.idx); } else if (ev.WorkspaceActivated !== undefined) { if (ev.WorkspaceActivated.focused)