System details
Omarchy 4.0.1 Quattro, Hyprland 0.56.2, Quickshell 0.3.1, NVIDIA RTX 3080 Ti, and two 2560×1440 DisplayPort outputs at 180 Hz and 200 Hz.
Problem
At the idle lock deadline, Omarchy removed the fullscreen screensaver while the native session lock was still creating surfaces. Depending on output timing, this exposed either the password view or the desktop before real DPMS standby.
Cause
omarchy-system-lock removed the terminal screensaver before ext-session-lock reported the multi-output lock secure. When composed with the compositor-side dismissal monitor from #7780, disabling that monitor at the lock deadline could also emit an active-state callback and tear the screensaver down through the input-dismiss path.
Verified solution
PR #9632 adds an idle-only concealed lock entry point. The lock surfaces paint black without loading the wallpaper or authentication field, the pointer is hidden during mapping, and synthetic pointer initialization cannot reveal the view. The idle service keeps the fullscreen screensaver mapped over the desktop until ext-session-lock reports secure, then performs the existing lock cleanup and real delayed DPMS standby.
The verified local composition also rejects #7780's dismissal callback after the idle cycle enters locking.
Verification
Focused idle, lock, fingerprint, password-layout, and system-lock tests pass. On the dual-output hardware test, the normal splash transitioned into genuine monitor standby without a password or desktop flash. Wake restored the synchronized lock views.
Scope
This fix changes only the normal idle screensaver-to-lock handoff. Suspend and hibernate remain separate in #9231.
System details
Omarchy 4.0.1 Quattro, Hyprland 0.56.2, Quickshell 0.3.1, NVIDIA RTX 3080 Ti, and two 2560×1440 DisplayPort outputs at 180 Hz and 200 Hz.
Problem
At the idle lock deadline, Omarchy removed the fullscreen screensaver while the native session lock was still creating surfaces. Depending on output timing, this exposed either the password view or the desktop before real DPMS standby.
Cause
omarchy-system-lockremoved the terminal screensaver before ext-session-lock reported the multi-output lock secure. When composed with the compositor-side dismissal monitor from #7780, disabling that monitor at the lock deadline could also emit an active-state callback and tear the screensaver down through the input-dismiss path.Verified solution
PR #9632 adds an idle-only concealed lock entry point. The lock surfaces paint black without loading the wallpaper or authentication field, the pointer is hidden during mapping, and synthetic pointer initialization cannot reveal the view. The idle service keeps the fullscreen screensaver mapped over the desktop until ext-session-lock reports secure, then performs the existing lock cleanup and real delayed DPMS standby.
The verified local composition also rejects #7780's dismissal callback after the idle cycle enters locking.
Verification
Focused idle, lock, fingerprint, password-layout, and system-lock tests pass. On the dual-output hardware test, the normal splash transitioned into genuine monitor standby without a password or desktop flash. Wake restored the synchronized lock views.
Scope
This fix changes only the normal idle screensaver-to-lock handoff. Suspend and hibernate remain separate in #9231.