summaryrefslogtreecommitdiffstats
path: root/desktop/modules/shells/README.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 09:25:50 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 09:25:50 +0100
commit81d21f2e335d2fd59f8fc43d4788c2426c8a2fe1 (patch)
treebddfb5bc82db54496b1d4a7b44793d9d6c7ac41a /desktop/modules/shells/README.md
parent11c4c745c7ed5477c74abe7de3458924a0567a3a (diff)
downloadquickshell-81d21f2e335d2fd59f8fc43d4788c2426c8a2fe1.tar.gz
quickshell-81d21f2e335d2fd59f8fc43d4788c2426c8a2fe1.zip
shells: a settings page that restarts the shells, with a notification
Settings > Desktop > Shells lists every directory holding a shell.qml, running or stopped by `qs list --all`, with Restart (Start when it is not running) per row and a Restart all. Every button runs reload.sh through Quickshell.execDetached, which leaves the script outside the desktop shell's process, so restarting desktop from its own settings window works: the window closes and the new process carries on. restart.sh wraps reload.sh and sends one notification naming the shells that came back, or a critical one naming those that did not. Back means qs lists an instance on the shell's config path under a pid it did not have before, within 5s; the old instance can linger in the list for a moment after qs kill. It checks the process, not the config, so a shell that starts with a broken component still counts as back. The rows reuse the ai module's AiRow rather than a copy of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/shells/README.md')
-rw-r--r--desktop/modules/shells/README.md21
1 files changed, 21 insertions, 0 deletions
diff --git a/desktop/modules/shells/README.md b/desktop/modules/shells/README.md
new file mode 100644
index 0000000..16a93b5
--- /dev/null
+++ b/desktop/modules/shells/README.md
@@ -0,0 +1,21 @@
+# shells
+
+Every directory in the repo holding a `shell.qml`, with whether `qs list
+--all` shows an instance on it, and a Restart (or Start, when it is not
+running) per row plus a Restart all. All three run `reload.sh`, so a button
+does what the script does from a terminal, wrapped by `restart.sh`, which
+then sends one notification naming the shells that came back, or a critical
+one naming those that did not. Back means a `qs` instance on the shell's
+config path under a pid it did not have before, within 5s: the old instance
+can linger in the list for a moment after `qs kill`. It is the process, not
+the config: a shell that starts with a broken component counts as back.
+
+The script is started with `Quickshell.execDetached`, which leaves it outside
+the desktop shell's process: restarting `desktop` from here kills the process
+drawing the page and the script carries on and starts the new one. The
+settings window closes with it and is not reopened. The new shell inherits
+the desktop shell's environment, which is the one Hyprland's autostart gave
+it.
+
+A hung desktop shell cannot be restarted from here, since the page is part of
+it. `./reload.sh` from a terminal remains the way out.