Skip to content

Recover shell restarts when the replacement launch is rejected - #11014

Open
anovoselnik wants to merge 1 commit into
omacom:quattrofrom
anovoselnik:fix/dictation-shell-recovery
Open

Recover shell restarts when the replacement launch is rejected#11014
anovoselnik wants to merge 1 commit into
omacom:quattrofrom
anovoselnik:fix/dictation-shell-recovery

Conversation

@anovoselnik

Copy link
Copy Markdown

Closing the Dictation configuration terminal on Omarchy 4.0.3 left the bar down. The journal recorded Exiting due to IPC request, followed five seconds later by An instance of this configuration is already running. No core dump was recorded, and no Quickshell process remained afterward.

The restart command dispatches its replacement only once. If that launch is rejected while the old instance still holds its singleton lock, readiness polling cannot bring the shell back. Retry the existing no-duplicate launch every two seconds within a 30-second readiness deadline. Keep the active lock-screen guard and stranded-lock recovery intact.

This extends the longer readiness window proposed in #8630, credited in the commit. Unlike #10634 (overlapping restart requests), it handles a rejected replacement within a single restart. The missing-Voxtype install guard is already covered by #6832 and is outside this PR.

Validation:

  • Regression tests fail against the unchanged upstream restart command for both slow readiness and a rejected first launch, and pass with this change.
  • bash test/shell.d/restart-shell-test.sh, bash -n, and git diff --check pass, including active-lock preservation and stranded-lock recovery.
  • Live candidate restart succeeds and the replacement answers shell ping. The original singleton-lock timing has not been deterministically reproduced on the live desktop; its failure path is exercised with stubbed launch/IPC boundaries.
  • ./test/all: CLI passes; 230 of 236 shell test files pass. Six failures reproduce with the unchanged upstream restart script: config, launch-about, locate, network-qr, snapper, and unowned-system-paths. These include missing sibling packaging-checkout coverage and unrelated environment/test failures.

Prepared with Codex.

Allow a 30-second readiness window and retry the no-duplicate launch every two seconds. Cover a rejected first launch, slow startup, and the existing locked-session protections.

Co-authored-by: Jacky Lam <lamchun1110@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant