Make a dead lock client diagnosable and recoverable (#6630)

* Persist the Omarchy shell log across sessions

Quickshell only logs to its instance runtime dir on tmpfs, so when the
shell dies the idle/lock event trail is gone after a reboot (#6628).
Launch the shell through omarchy-launch-shell, which pipes stdout/stderr
into the journal under the omarchy-shell tag — bounded, timestamped, and
persistent — and surface that log in omarchy-debug-idle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Recover a locked session whose lock client died

When the shell dies while the session is locked, Hyprland's failsafe
keeps the session locked with no lock client left, and
omarchy-restart-shell refused to run in exactly that state, leaving
reboot as the only way back in (#6628). Gate the refusal on the lock
service actually holding (or acquiring) the lock rather than on the
session's LOCK state — a dead shell and a crash-handler relaunch that
holds no lock both fail that check — then restart the shell, re-acquire
the session lock, and wait for it to report secure, the same
secure-poll omarchy-system-sleep-lock uses, so the user can
authenticate out of the failsafe. Enable Hyprland's
allow_session_lock_restore so the compositor accepts the replacement
lock client.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-08-09 12:59:32 +02:00
committed by GitHub
co-authored by Claude Fable 5
parent 3aa7c1ee13
commit 1ded25fd45
6 changed files with 124 additions and 9 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ hl.on("hyprland.start", function()
hl.exec_cmd("systemctl --user import-environment $(env | cut -d'=' -f 1)")
hl.exec_cmd("dbus-update-activation-environment --systemd --all")
hl.exec_cmd("quickshell -n -p $OMARCHY_PATH/shell")
hl.exec_cmd("omarchy-launch-shell")
hl.exec_cmd("omarchy-first-run")
hl.exec_cmd("omarchy-powerprofiles-init")
hl.exec_cmd(o.launch("omarchy-hyprland-monitor-watch"))
+3
View File
@@ -110,6 +110,9 @@ hl.config({
anr_missed_pings = 3,
on_focus_under_fullscreen = 1,
initial_workspace_tracking = 0,
-- Let a fresh shell re-acquire the session lock after the lock client
-- died, so omarchy-restart-shell can recover the LOCK failsafe.
allow_session_lock_restore = true,
},
cursor = {