diff --git a/modules/Bar.qml b/modules/Bar.qml index ce37240..6b4f324 100644 --- a/modules/Bar.qml +++ b/modules/Bar.qml @@ -129,15 +129,13 @@ PanelWindow { spacing: M.Theme.groupSpacing M.BarGroup { - id: workspacesGroup leftEdge: true M.Workspaces { bar: bar - visible: M.Modules.workspaces.enable && M.NiriIpc.available + visible: M.Modules.workspaces.enable } } 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 ec37937..5d792e4 100644 --- a/modules/NiriIpc.qml +++ b/modules/NiriIpc.qml @@ -11,14 +11,14 @@ QtObject { signal windowFocusChanged(var windowId) signal windowOpenedOrChanged(var window) - property bool available: false + readonly property bool available: Quickshell.env("NIRI_SOCKET") !== "" property string focusedTitle: "" property string focusedAppId: "" property bool overviewOpen: false property var _focusedProc: Process { - running: true + running: root.available command: ["niri", "msg", "--json", "focused-window"] stdout: StdioCollector { onStreamFinished: { @@ -37,14 +37,13 @@ QtObject { } property var _eventStream: Process { - running: true + running: root.available 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 8fdd0ad..7c9a897 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.focusedTitle !== "" + visible: M.Modules.windowTitle.enable && M.NiriIpc.available && 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 bac38d2..b8d435a 100644 --- a/modules/Workspaces.qml +++ b/modules/Workspaces.qml @@ -14,10 +14,12 @@ 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: true + running: M.NiriIpc.available command: ["niri", "msg", "--json", "workspaces"] stdout: StdioCollector { onStreamFinished: {