Harden lock lifecycle, recovery, and keyboard wake - #8930
Conversation
|
Reproduces here; the PR applies cleanly to current ASUS TUF Gaming A16 (FA608UP), Omarchy 4.0.1-1, Hyprland 0.56.2-1, Quickshell 0.3.1-1, kernel 7.1.9, single panel on amdgpu. Every lid-open resume leaves the lock screen drawn but keyboard-dead; a click anywhere restores typing. That symptom localizes it precisely: Checked before commenting:
Also closes #8361, #8520, #7811 — worth adding to #8869 is the same bug with a narrower, unbudgeted retry; this supersedes it. Its one good extra, |
Co-authored-by: Ali <ali@vonsensey.se> Co-authored-by: Trevor <192667774+v-t-r-gg@users.noreply.github.com>
Co-authored-by: notTanveer <tanveer.x.ansari@gmail.com> Co-authored-by: rovshanmuradov <rovshan2525@gmail.com>
e57023e to
3b7e678
Compare
|
Real-world confirmation of the #7106 failure mode this PR targets: two stranded locks in 24 h on 4.0.2-1 (quickshell 0.3.1-1, Hyprland 0.56.2-1, AMD Strix Halo, dual monitor), both caused by a dotfile manager writing a local plugin over SSH while the desktop was idle-locked — full journal excerpts and versions in #7106. One detail that supports the "preserve the owning service / defer the reload" approach: the in-process recovery after the reload stalled indefinitely at |
# Conflicts: # shell/shell.qml
…view-9469-20260906
…dex/portfolio-9457-20260907
Preserve a live session-lock owner through plugin reload, disable/removal and service synchronization, and recover password focus after mapping or keyboard wake. This addresses the lock lifecycle and input paths behind #6888, #7106, #6858, #7467 and #8628; hardware-specific outcomes still need validation.
The integration keeps authentication services in the current private store and exposes only ownership booleans to lifecycle code. It preserves an owning locker, defers reload until unlock, retains bounded focus retries and serialized blank/wake behavior, and bounds restart shutdown with one monotonic deadline. Restart requires confirmed absence before launching a replacement and retains #9469's notification readiness check.
Installed VM testing caught and fixed an additional ordinary-restart regression: Quickshell returns
No running instances.with status zero even in JSON mode. The dispatcher now recognizes only that exact successful result under a fixed locale; malformed output and query failures remain errors.Integrate after #9469. This branch includes current Quattro and that prerequisite through an ordinary merge. It consolidates relevant work from #7169, #7572, #7471 and #7592 while retaining their authors as co-authors. The narrower focus-only #8869 overlaps and must be reconciled before applying both.
At final
4aea51f2ddf3bef230626cf23d182a38f2284d5d, independent Daybreak review found no remaining code blocker. Focused lock, reload, private-auth, restart, sleep, video and update regression suites plus 112 CLI checks passed. Actual candidate/usr/bincommands and QML in a disposable 4.0.2 VM passed normal restart with one replacement process, secure lock acquisition, rescan preserving its owner, refusal to restart an owned lock, and keyboard password unlock. Inspected screenshots and a short transition recording support the visual/focus smoke. Guest files were restored afterward.Keep draft for affected-hardware validation: ASUS TUF keyboard wake, Strix Halo/multiple displays, physical DPMS, suspend/resume, hotplug, fingerprint and crash-recovery paths were not established on this final revision. Source tests and a single virtual display cannot establish those outcomes.