Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Fingerprint unlock fails after every suspend (fprintd device stuck busy) and the shell retries every 250ms until unlock
Reported by callumau · filed Sep 12, 2026Closed upstream on 2026-10-04 by the bot omarchybot; the closing comment says it was fixed by PR #7158. GitHub close reason: completed.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
Framework Laptop 13 (AMD Ryzen 5 7640U), Goodix MOC Fingerprint Sensor, Omarchy 4.0.3-1, Hyprland 0.56.2-2, quickshell 0.3.1-1, kernel 7.2.3-arch1-3.
What's wrong?
Locking the session starts a fingerprint verify immediately (startFingerprint() on secureStateChanged). If the machine suspends while that verify is still in flight (typical lid-close flow: omarchy-sleep-lock secures the lock, logind suspends within a second or two), fingerprint unlock is dead after resume:
fprintd[...]: Device reported an error during verify: Cannot run while suspended.
quickshell[...]: pam_fprintd(omarchy-lock-fingerprint:auth): ReleaseDevice failed: Release failed with error: The device is still busy with another operation, please try again later.
omarchy-shell[...]: quickshell.service.pam.subprocess: Error while authenticating: "Authentication service cannot retrieve authentication info" (code 9)Every retry then fails instantly, and fingerprintRetryTimer (interval: 250, non-repeat, restarted on every error) has no backoff and no retry cap: onError -> 250ms -> startFingerprint() -> error -> repeat. That is a PAM subprocess spawn 4x per second for the entire lock — frozen during suspend, resuming at wake. Observed continuously from resume at 12:34:09 until password unlock at 12:34:16; an overnight lock would mean tens of thousands of spawns.
User-visible effect: after every wake the fingerprint reader is unusable and the password must be typed, which also makes the post-resume lock-screen blanking (#11411) much more noticeable.
Steps to reproduce
- Enroll a fingerprint, configure it for the lock screen (
omarchy setup security fingerprint). - Lock the session and suspend within a few seconds (close the lid).
- Wake the machine and try the fingerprint sensor — nothing happens; watch
journalctl --user -t omarchy-shellfill with PAM errors every ~250ms until unlock.
Expected
After resume the fingerprint verify is either cleanly restarted or retried with backoff; fingerprint unlock works, and there is no tight retry loop.
Actual
The stuck verify leaves fprintd's device busy; every retry errors instantly; the shell retries at 4Hz until the session is unlocked by other means.
Proposed fix
One or more of:
- Add backoff and a cap to
fingerprintRetryTimer(e.g. exponential up to a few seconds; stop after N consecutive immediate failures until the next state change such as resume or screens-changed). - Abort the in-flight verify on
PrepareForSleep(or simply don't leave one pending across suspend), and start a fresh verify on resume instead of retrying into a stuck device. - Treat the fprintd "device busy" error class specially: wait for fprintd to settle instead of hammering it.
Related issues
- #11411 — lock screen blanks ~5s after resume (the reason typing the password blind is needed at all)
- #8361 — lock screen loses keyboard focus after resume
View raw text
### System details Framework Laptop 13 (AMD Ryzen 5 7640U), Goodix MOC Fingerprint Sensor, Omarchy 4.0.3-1, Hyprland 0.56.2-2, quickshell 0.3.1-1, kernel 7.2.3-arch1-3. ### What's wrong? Locking the session starts a fingerprint verify immediately (`startFingerprint()` on `secureStateChanged`). If the machine suspends while that verify is still in flight (typical lid-close flow: `omarchy-sleep-lock` secures the lock, logind suspends within a second or two), fingerprint unlock is dead after resume: ``` fprintd[...]: Device reported an error during verify: Cannot run while suspended. quickshell[...]: pam_fprintd(omarchy-lock-fingerprint:auth): ReleaseDevice failed: Release failed with error: The device is still busy with another operation, please try again later. omarchy-shell[...]: quickshell.service.pam.subprocess: Error while authenticating: "Authentication service cannot retrieve authentication info" (code 9) ``` Every retry then fails instantly, and `fingerprintRetryTimer` (`interval: 250`, non-repeat, restarted on every error) has **no backoff and no retry cap**: `onError` -> 250ms -> `startFingerprint()` -> error -> repeat. That is a PAM subprocess spawn 4x per second for the entire lock — frozen during suspend, resuming at wake. Observed continuously from resume at 12:34:09 until password unlock at 12:34:16; an overnight lock would mean tens of thousands of spawns. User-visible effect: after every wake the fingerprint reader is unusable and the password must be typed, which also makes the post-resume lock-screen blanking (#11411) much more noticeable. **Steps to reproduce** 1. Enroll a fingerprint, configure it for the lock screen (`omarchy setup security fingerprint`). 2. Lock the session and suspend within a few seconds (close the lid). 3. Wake the machine and try the fingerprint sensor — nothing happens; watch `journalctl --user -t omarchy-shell` fill with PAM errors every ~250ms until unlock. **Expected** After resume the fingerprint verify is either cleanly restarted or retried with backoff; fingerprint unlock works, and there is no tight retry loop. **Actual** The stuck verify leaves fprintd's device busy; every retry errors instantly; the shell retries at 4Hz until the session is unlocked by other means. **Proposed fix** One or more of: - Add backoff and a cap to `fingerprintRetryTimer` (e.g. exponential up to a few seconds; stop after N consecutive immediate failures until the next state change such as resume or screens-changed). - Abort the in-flight verify on `PrepareForSleep` (or simply don't leave one pending across suspend), and start a fresh verify on resume instead of retrying into a stuck device. - Treat the fprintd "device busy" error class specially: wait for fprintd to settle instead of hammering it. **Related issues** - #11411 — lock screen blanks ~5s after resume (the reason typing the password blind is needed at all) - #8361 — lock screen loses keyboard focus after resume
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
- Related PRpr/11273· confirmed
- Related PRpr/10653· confirmed
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.