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.
Locked screen DPMS repeatedly wakes/re-blanks every ~15s on dual-monitor setup
Reported by kellylipke · filed Sep 8, 2026 · open at source
This defect is tracked under R-2112. This report describes the same defect, so it is folded under it in the inbox.
Earliest report of this defect: R-834 (filed Sep 8, 2026).
Decided by agents · verified· Oct 9, 2026
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?
- 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?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
What happened
After locking the screen (Omarchy shell lock, dual-monitor setup), the displays do not stay dark. They blank via DPMS as expected ~5s after lock, but then spontaneously wake ~9s later showing the password prompt, blank again ~5s after that, and repeat this cycle indefinitely until the password is actually entered. No keyboard or mouse input occurred during the spontaneous wake events (confirmed via live log capture — see evidence below). The session remains securely locked throughout (secure=true never drops), so this is a display/DPMS bug, not a security issue.
Expected behavior
Once DPMS turns the monitors off after locking, they should stay off until the user provides real input (keypress/mouse), not cycle on their own.
Steps to reproduce
- Have two monitors connected (in this case DP-1 + HDMI-A-1 on an AMD amdgpu setup).
- Lock the screen (
omarchy system lockor the normal lock keybind/menu action). - Don't touch the mouse or keyboard. Watch the monitors.
- Observe: after the initial 5s blank, the screens wake on their own, briefly show the lock/password prompt, then blank again ~5s later. This repeats every ~15s.
Evidence
I captured hyprctl monitors -j DPMS status on a 0.5s poll, and tailed the omarchy-shell journal (journalctl -t omarchy-shell -f), during a reproduction. Timeline:
23:32:39 lock-requested / secure=true
23:32:45 both monitors DPMS -> false (expected 5s post-lock blank)
23:32:54 both monitors DPMS -> true <-- spontaneous wake, no input
23:33:00 both monitors DPMS -> false (blank again, 5s later)
23:33:10 both monitors DPMS -> true <-- spontaneous wake, no input
23:33:16 both monitors DPMS -> false (blank again, 5s later)
23:33:24 real unlock (password typed) -> secure=false, unlockedEach spontaneous wake at 23:32:54 and 23:33:10 lines up exactly with a burst of warnings in the shell log:
WARN scene: QML IpcHandler at .../plugins/agents/Panel.qml[327:3]: Handler was registered but will not be used because another handler is registered for target omarchy.agents
WARN scene: QML IpcHandler at .../plugins/panels/bluetooth/Panel.qml[640:3]: ... target omarchy.bluetooth
WARN scene: QML IpcHandler at .../plugins/panels/network/Panel.qml[210:3]: ... target omarchy.network
WARN scene: QML IpcHandler at @Ui/Panel.qml[48:3]: ... target omarchy.audio
WARN scene: QML IpcHandler at .../plugins/panels/monitor/Panel.qml[220:3]: ... target omarchy.monitor
WARN scene: QML IpcHandler at .../plugins/panels/power/Panel.qml[177:3]: ... target omarchy.power
WARN scene: QML IpcHandler at .../plugins/panels/weather/Panel.qml[476:3]: ... target omarchy.weather
WARN scene: QML IpcHandler at .../plugins/bar/widgets/SystemUpdate.qml[27:3]: ... target omarchy.system-update
WARN scene: QML IpcHandler at .../plugins/panels/clock/BarWidget.qml[129:3]: ... target omarchy.clock
WARN scene: QML IpcHandler at .../plugins/bar/widgets/Indicators.qml[168:3]: ... target omarchy.indicators...appearing twice, ~2s apart, right at each wake. This indicates the shell's per-monitor panel components are being torn down and rebuilt at that moment. I checked whether this rebuild pattern happens continuously regardless of lock state by polling for 30s while unlocked/idle — it did not occur at all outside of the locked session, so it's specific to being locked.
Suspected cause
shell/plugins/lock/LockView.qml wires a full-screen MouseArea so that onPositionChanged (and onClicked, Keys.onPressed) call wakeRequested(), which re-enables DPMS and re-arms the 5s blank timer (shell/plugins/lock/Service.qml, idleBlankTimer / runBlank() / armBlankTimer()). If the periodic per-monitor panel rebuild reflows/recreates the lock surface, that recreation appears to fire a spurious positionChanged on the MouseArea even though no real pointer motion occurred, which re-triggers wakeRequested() → DPMS enable → re-arm blank timer → repeat. What triggers the underlying ~14-16s panel rebuild while locked is unclear from the logs alone; it may be related to wl_output re-announcement around DPMS transitions causing Quickshell's per-screen Variants to rebuild.
Environment
- Omarchy: 4.0.2-1
- Hyprland: 0.56.2
- Kernel: 7.1.9-arch1-2
- GPU: AMD Radeon RX 6700/6700XT (Navi 22, amdgpu driver)
- CPU: AMD Ryzen 5 7600X
- Displays: 2x BenQ GC2870 1920x1080@60, connected via DP-1 and HDMI-A-1
- Display server: Wayland (Hyprland), Xwayland 24.1.13
Full omarchy debug --no-sudo --print output available locally at /tmp/omarchy-debug.log; happy to attach/paste more of it on request.
Diagnosed with the help of Claude Code (log correlation via a live hyprctl/journal capture during reproduction).
View raw text
## What happened After locking the screen (Omarchy shell lock, dual-monitor setup), the displays do not stay dark. They blank via DPMS as expected ~5s after lock, but then spontaneously wake ~9s later showing the password prompt, blank again ~5s after that, and repeat this cycle indefinitely until the password is actually entered. No keyboard or mouse input occurred during the spontaneous wake events (confirmed via live log capture — see evidence below). The session remains securely locked throughout (`secure=true` never drops), so this is a display/DPMS bug, not a security issue. ## Expected behavior Once DPMS turns the monitors off after locking, they should stay off until the user provides real input (keypress/mouse), not cycle on their own. ## Steps to reproduce 1. Have two monitors connected (in this case DP-1 + HDMI-A-1 on an AMD amdgpu setup). 2. Lock the screen (`omarchy system lock` or the normal lock keybind/menu action). 3. Don't touch the mouse or keyboard. Watch the monitors. 4. Observe: after the initial 5s blank, the screens wake on their own, briefly show the lock/password prompt, then blank again ~5s later. This repeats every ~15s. ## Evidence I captured `hyprctl monitors -j` DPMS status on a 0.5s poll, and tailed the `omarchy-shell` journal (`journalctl -t omarchy-shell -f`), during a reproduction. Timeline: ``` 23:32:39 lock-requested / secure=true 23:32:45 both monitors DPMS -> false (expected 5s post-lock blank) 23:32:54 both monitors DPMS -> true <-- spontaneous wake, no input 23:33:00 both monitors DPMS -> false (blank again, 5s later) 23:33:10 both monitors DPMS -> true <-- spontaneous wake, no input 23:33:16 both monitors DPMS -> false (blank again, 5s later) 23:33:24 real unlock (password typed) -> secure=false, unlocked ``` Each spontaneous wake at 23:32:54 and 23:33:10 lines up exactly with a burst of warnings in the shell log: ``` WARN scene: QML IpcHandler at .../plugins/agents/Panel.qml[327:3]: Handler was registered but will not be used because another handler is registered for target omarchy.agents WARN scene: QML IpcHandler at .../plugins/panels/bluetooth/Panel.qml[640:3]: ... target omarchy.bluetooth WARN scene: QML IpcHandler at .../plugins/panels/network/Panel.qml[210:3]: ... target omarchy.network WARN scene: QML IpcHandler at @Ui/Panel.qml[48:3]: ... target omarchy.audio WARN scene: QML IpcHandler at .../plugins/panels/monitor/Panel.qml[220:3]: ... target omarchy.monitor WARN scene: QML IpcHandler at .../plugins/panels/power/Panel.qml[177:3]: ... target omarchy.power WARN scene: QML IpcHandler at .../plugins/panels/weather/Panel.qml[476:3]: ... target omarchy.weather WARN scene: QML IpcHandler at .../plugins/bar/widgets/SystemUpdate.qml[27:3]: ... target omarchy.system-update WARN scene: QML IpcHandler at .../plugins/panels/clock/BarWidget.qml[129:3]: ... target omarchy.clock WARN scene: QML IpcHandler at .../plugins/bar/widgets/Indicators.qml[168:3]: ... target omarchy.indicators ``` ...appearing twice, ~2s apart, right at each wake. This indicates the shell's per-monitor panel components are being torn down and rebuilt at that moment. I checked whether this rebuild pattern happens continuously regardless of lock state by polling for 30s while unlocked/idle — it did not occur at all outside of the locked session, so it's specific to being locked. ## Suspected cause `shell/plugins/lock/LockView.qml` wires a full-screen `MouseArea` so that `onPositionChanged` (and `onClicked`, `Keys.onPressed`) call `wakeRequested()`, which re-enables DPMS and re-arms the 5s blank timer (`shell/plugins/lock/Service.qml`, `idleBlankTimer` / `runBlank()` / `armBlankTimer()`). If the periodic per-monitor panel rebuild reflows/recreates the lock surface, that recreation appears to fire a spurious `positionChanged` on the MouseArea even though no real pointer motion occurred, which re-triggers `wakeRequested()` → DPMS enable → re-arm blank timer → repeat. What triggers the underlying ~14-16s panel rebuild while locked is unclear from the logs alone; it may be related to `wl_output` re-announcement around DPMS transitions causing Quickshell's per-screen `Variants` to rebuild. ## Environment - Omarchy: 4.0.2-1 - Hyprland: 0.56.2 - Kernel: 7.1.9-arch1-2 - GPU: AMD Radeon RX 6700/6700XT (Navi 22, amdgpu driver) - CPU: AMD Ryzen 5 7600X - Displays: 2x BenQ GC2870 1920x1080@60, connected via DP-1 and HDMI-A-1 - Display server: Wayland (Hyprland), Xwayland 24.1.13 Full `omarchy debug --no-sudo --print` output available locally at `/tmp/omarchy-debug.log`; happy to attach/paste more of it on request. --- Diagnosed with the help of Claude Code (log correlation via a live `hyprctl`/journal capture during reproduction).
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/8896· confirmed
- Fixed bypr/11991· confirmed
- Related PRpr/10343· confirmed
- Duplicate ofR-2112Lock screen wakes in a loop on monitors that drop HDMI hotplug in standby· decided by agents · verified
- Related PRpr/13129· 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.