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.
Resume from sleep leaves panel dark on Lenovo LOQ 15ARP9 (NVIDIA dGPU-only, s2idle): stale dpmsStatus skips DPMS enable
Reported by adhimiw · filed Sep 25, 2026 · open at source
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?
- AreaOutside the audited area· Decided by agents · verified
- 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
Resume from sleep leaves panel dark on Lenovo LOQ 15ARP9 (NVIDIA dGPU-only, s2idle)
Hardware: Lenovo LOQ 15ARP9 (83JC), RTX 4050 Max-Q Mobile, no iGPU (dGPU-only), BIOS PQCN31WW, mem_sleep: [s2idle] only
Software: Omarchy 4.0.4-1, linux-omarchy 7.2.5-3, nvidia-open-dkms 610.57.04, Hyprland (Quickshell)
Symptom
Clicking Sleep (or systemctl suspend) suspends fine (PM: suspend entry (s2idle)), but on wake the internal panel stays black. Fans/keyboard come on, system is alive (SSH works), only the display never re-lights. Hard reboot required. Same class of failure as #4200 / #2635, and the same hardware as CachyOS/linux-cachyos#493 and NVIDIA/open-gpu-kernel-modules#1136.
Root cause
omarchy-system-wake relies on omarchy-brightness-display on to re-enable the panel, but that command skips the DPMS enable dispatch when Hyprland already reports dpmsStatus=true:
# bin/omarchy-brightness-display
hyprctl monitors -j | jq -e '[.[] | select(.disabled == false)] | length > 0 and all(.dpmsStatus)' && exit 0
hyprctl dispatch 'hl.dsp.dpms({ action = "enable" })'After s2idle resume on this NVIDIA setup the reported dpmsStatus is stale (true while the panel is physically dark), so the enable is skipped and nothing ever re-lights the eDP panel. NVIDIA driver state is otherwise healthy (PreserveVideoMemoryAllocations=1, EnableS0ixPowerManagement=1, S0ix Status: Enabled, nvidia-resume.service finishes OK).
Local workaround (verified)
Force the DPMS enable in the resume path instead of trusting the guard — patched ~/.local/bin/omarchy-resume-wake-listener so on PrepareForSleep(false) it runs:
sleep 1
for _ in 1 2 3; do
hyprctl dispatch 'hl.dsp.dpms({ action = "enable" })' >/dev/null 2>&1 || true
sleep 1
done
omarchy-system-wake >/dev/null 2>&1 || trueSuggested upstream fix
Give the resume path a way to bypass the already-lit guard, e.g.:
- add a
--forceflag toomarchy-brightness-display onthat skips thejq … all(.dpmsStatus)early-exit, and - call it (or the raw
hl.dsp.dpms enabledispatch with a short retry) fromomarchy-system-wake/ the resume listener.
The guard itself is still valuable for the keystroke path (avoids the unlock-screen flash noted in omarchy-mac@54d79d9) — it just must not gate the actual resume path on s2idle+NVIDIA hardware where the status is stale.
Happy to turn this into a PR against quattro if maintainers agree with the --force approach.
View raw text
## Resume from sleep leaves panel dark on Lenovo LOQ 15ARP9 (NVIDIA dGPU-only, s2idle)
**Hardware:** Lenovo LOQ 15ARP9 (83JC), RTX 4050 Max-Q Mobile, no iGPU (dGPU-only), BIOS PQCN31WW, `mem_sleep: [s2idle]` only
**Software:** Omarchy 4.0.4-1, `linux-omarchy 7.2.5-3`, `nvidia-open-dkms 610.57.04`, Hyprland (Quickshell)
### Symptom
Clicking Sleep (or `systemctl suspend`) suspends fine (`PM: suspend entry (s2idle)`), but on wake the internal panel stays black. Fans/keyboard come on, system is alive (SSH works), only the display never re-lights. Hard reboot required. Same class of failure as #4200 / #2635, and the same hardware as CachyOS/linux-cachyos#493 and NVIDIA/open-gpu-kernel-modules#1136.
### Root cause
`omarchy-system-wake` relies on `omarchy-brightness-display on` to re-enable the panel, but that command **skips** the DPMS enable dispatch when Hyprland already reports `dpmsStatus=true`:
```bash
# bin/omarchy-brightness-display
hyprctl monitors -j | jq -e '[.[] | select(.disabled == false)] | length > 0 and all(.dpmsStatus)' && exit 0
hyprctl dispatch 'hl.dsp.dpms({ action = "enable" })'
```
After s2idle resume on this NVIDIA setup the reported `dpmsStatus` is stale (`true` while the panel is physically dark), so the enable is skipped and nothing ever re-lights the eDP panel. NVIDIA driver state is otherwise healthy (`PreserveVideoMemoryAllocations=1`, `EnableS0ixPowerManagement=1`, S0ix Status: Enabled, `nvidia-resume.service` finishes OK).
### Local workaround (verified)
Force the DPMS enable in the resume path instead of trusting the guard — patched `~/.local/bin/omarchy-resume-wake-listener` so on `PrepareForSleep(false)` it runs:
```bash
sleep 1
for _ in 1 2 3; do
hyprctl dispatch 'hl.dsp.dpms({ action = "enable" })' >/dev/null 2>&1 || true
sleep 1
done
omarchy-system-wake >/dev/null 2>&1 || true
```
### Suggested upstream fix
Give the resume path a way to bypass the already-lit guard, e.g.:
- add a `--force` flag to `omarchy-brightness-display on` that skips the `jq … all(.dpmsStatus)` early-exit, and
- call it (or the raw `hl.dsp.dpms enable` dispatch with a short retry) from `omarchy-system-wake` / the resume listener.
The guard itself is still valuable for the keystroke path (avoids the unlock-screen flash noted in omarchy-mac@54d79d9) — it just must not gate the actual resume path on s2idle+NVIDIA hardware where the status is stale.
Happy to turn this into a PR against `quattro` if maintainers agree with the `--force` approach.
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
Not linked to any known issue, other report or change yet.
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.
- Out of scopeDecided by agents · verified · 2026-10-09 18:25 UTC