diff --git a/modules/Bar.qml b/modules/Bar.qml index 6b4f324..ce37240 100644 --- a/modules/Bar.qml +++ b/modules/Bar.qml @@ -129,13 +129,15 @@ PanelWindow { spacing: M.Theme.groupSpacing M.BarGroup { + id: workspacesGroup leftEdge: true M.Workspaces { bar: bar - visible: M.Modules.workspaces.enable + visible: M.Modules.workspaces.enable && M.NiriIpc.available } } M.BarGroup { + leftEdge: !workspacesGroup.visible M.Tray { bar: bar visible: M.Modules.tray.enable diff --git a/modules/NiriIpc.qml b/modules/NiriIpc.qml index 5d792e4..ec37937 100644 --- a/modules/NiriIpc.qml +++ b/modules/NiriIpc.qml @@ -11,14 +11,14 @@ QtObject { signal windowFocusChanged(var windowId) signal windowOpenedOrChanged(var window) - readonly property bool available: Quickshell.env("NIRI_SOCKET") !== "" + property bool available: false property string focusedTitle: "" property string focusedAppId: "" property bool overviewOpen: false property var _focusedProc: Process { - running: root.available + running: true command: ["niri", "msg", "--json", "focused-window"] stdout: StdioCollector { onStreamFinished: { @@ -37,13 +37,14 @@ QtObject { } property var _eventStream: Process { - running: root.available + running: true command: ["niri", "msg", "--json", "event-stream"] stdout: SplitParser { splitMarker: "\n" onRead: line => { try { const ev = JSON.parse(line); + root.available = true; if (ev.WorkspacesChanged !== undefined) root.workspacesChanged(ev.WorkspacesChanged.workspaces); else if (ev.WorkspaceActivated !== undefined) diff --git a/modules/WindowTitle.qml b/modules/WindowTitle.qml index 7c9a897..8fdd0ad 100644 --- a/modules/WindowTitle.qml +++ b/modules/WindowTitle.qml @@ -7,7 +7,7 @@ import "." as M M.BarSection { id: root spacing: M.Theme.moduleSpacing - visible: M.Modules.windowTitle.enable && M.NiriIpc.available && M.NiriIpc.focusedTitle !== "" + visible: M.Modules.windowTitle.enable && M.NiriIpc.focusedTitle !== "" tooltip: M.NiriIpc.focusedAppId ? M.NiriIpc.focusedAppId + "\n" + M.NiriIpc.focusedTitle : M.NiriIpc.focusedTitle diff --git a/modules/Workspaces.qml b/modules/Workspaces.qml index b8d435a..bac38d2 100644 --- a/modules/Workspaces.qml +++ b/modules/Workspaces.qml @@ -14,12 +14,10 @@ Row { readonly property string _output: bar.screen?.name ?? "" readonly property var _workspaces: _allWorkspaces.filter(w => w.output === root._output) - visible: M.NiriIpc.available - // Initial state Process { id: initProc - running: M.NiriIpc.available + running: true command: ["niri", "msg", "--json", "workspaces"] stdout: StdioCollector { onStreamFinished: {