From 9cf68537428fb9dd95e1e85e8fd2dd663cdbcab7 Mon Sep 17 00:00:00 2001 From: Damocles Date: Wed, 15 Apr 2026 21:08:44 +0200 Subject: [PATCH] feat: auto-disable niri-dependent components when NIRI_SOCKET is absent --- modules/NiriIpc.qml | 6 ++++-- modules/WindowTitle.qml | 2 +- modules/Workspaces.qml | 4 +++- shell.qml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/NiriIpc.qml b/modules/NiriIpc.qml index b64fbb3..5d792e4 100644 --- a/modules/NiriIpc.qml +++ b/modules/NiriIpc.qml @@ -11,12 +11,14 @@ QtObject { signal windowFocusChanged(var windowId) signal windowOpenedOrChanged(var window) + 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: { @@ -35,7 +37,7 @@ QtObject { } property var _eventStream: Process { - running: true + running: root.available command: ["niri", "msg", "--json", "event-stream"] stdout: SplitParser { splitMarker: "\n" 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: { diff --git a/shell.qml b/shell.qml index 1431e85..81dd953 100644 --- a/shell.qml +++ b/shell.qml @@ -34,7 +34,7 @@ ShellRoot { } LazyLoader { - active: Modules.overviewBackdrop.enable + active: Modules.overviewBackdrop.enable && NiriIpc.available OverviewBackdrop { screen: scope.modelData }