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.
Suspend/resume causes compositor freeze on NVIDIA hybrid GPU laptops
Reported by KrisKind75 · filed Mar 3, 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
Issue Draft: Suspend/resume freeze on NVIDIA hybrid GPU laptops
Repo: https://github.com/basecamp/omarchy
Title
Suspend/resume causes compositor freeze on NVIDIA hybrid GPU laptops (nvidia-utils freeze workaround)
Body
Summary
After suspend/resume, Hyprland and Wayland clients (waybar, hyprlock) freeze or crash. The screen shows a stale frame (e.g. the lock screen) but no input is accepted. Mouse cursor may still move. The only recovery is killing Hyprland or a hard reboot.
Root Cause
nvidia-utils (590.48.01) installs a systemd drop-in that disables user session freezing during suspend:
# /usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf
[Service]
Environment="SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"systemd itself warns about this on every suspend:
User sessions remain unfrozen on explicit request ($SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=0).
This is not recommended, and might result in unexpected behavior, particularly
in suspend-then-hibernate operations or setups with encrypted home directories.Because user sessions are not frozen, Wayland clients continue running while the GPU is being suspended by nvidia-suspend.service. When the GPU disappears mid-operation, clients crash (waybar SIGABRT) or the compositor hangs with a stale framebuffer.
Reproduction
- NVIDIA hybrid GPU laptop (Intel + NVIDIA),
nvidia-open-dkmsinstalled - Lock screen or just close lid (triggers suspend via logind)
- Wait a few seconds, then resume (open lid / press key)
- Lock screen appears but keyboard input is dead. Mouse cursor may still move.
- Only recovery: kill Hyprland from TTY (Ctrl+Alt+F3) or hard reboot
Reproduced multiple times, 100% consistent.
Attempted Fixes
- Overriding the drop-in with
SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=true: Did not resolve the issue (compositor still froze on resume, possibly because NVIDIA driver itself doesn't handle frozen sessions well). - Killing hyprlock/walker after resume: Doesn't help because the compositor itself is frozen, not just the lock screen.
Current Workaround
Disable suspend on lid close entirely:
# /etc/systemd/logind.conf.d/lid-lock.conf
[Login]
HandleLidSwitch=lock
HandleLidSwitchExternalPower=lockThis locks the screen on lid close without suspending. Users can still hibernate manually (which does a full shutdown/restore and avoids the GPU state issue).
Environment
- Omarchy: v3.4.1
- Hyprland: 0.54.0
- Aquamarine: 0.10.0
- Kernel: 6.18.13-arch1-1
- NVIDIA: nvidia-open-dkms 590.48.01-4
- GPU: Intel Arc (Meteor Lake) + NVIDIA RTX 4080 Max-Q
- Laptop: ASUS (ROG/Zephyrus style, dual GPU with HDMI on NVIDIA)
Relevant Logs
Suspend entry:
systemd-logind: The system will suspend now!
systemd-sleep: User sessions remain unfrozen on explicit request
kernel: PM: suspend entry (s2idle)Resume + crash:
kernel: PM: suspend exit
systemd-coredump: Process (waybar) of user 1000 dumped core. [SIGABRT]Hyprland crash report (when restarting after freeze):
terminate called after throwing an instance of 'std::runtime_error'
what(): CBackend::create() failed!
aquamarine: Session is not active, waiting for 5s
aquamarine: Session timeout reached
aquamarine: Session could not be activated in time
aquamarine: DRM Backend failedSuggestion
This seems like a systemic issue with nvidia-utils disabling session freezing. Possible approaches:
- Omarchy-level workaround: Add a post-resume hook that restarts the compositor gracefully if it detects a frozen state
- Document the issue for NVIDIA hybrid GPU users with a recommended logind override
- Upstream to NVIDIA/Hyprland: The
FREEZE_USER_SESSIONS=falseworkaround may have been necessary for older drivers but seems to cause more problems than it solves with current nvidia-open-dkms + Wayland compositors - Investigate hibernate as alternative:
systemctl hibernatedoes a full power cycle and should avoid the GPU state issue entirely — could be the recommended sleep mode for NVIDIA laptops
Related
- systemd warning: https://github.com/systemd/systemd/issues/31292
- NVIDIA Wayland suspend issues are widely reported in the Hyprland community
View raw text
# Issue Draft: Suspend/resume freeze on NVIDIA hybrid GPU laptops **Repo:** https://github.com/basecamp/omarchy --- ## Title Suspend/resume causes compositor freeze on NVIDIA hybrid GPU laptops (nvidia-utils freeze workaround) ## Body ### Summary After suspend/resume, Hyprland and Wayland clients (waybar, hyprlock) freeze or crash. The screen shows a stale frame (e.g. the lock screen) but no input is accepted. Mouse cursor may still move. The only recovery is killing Hyprland or a hard reboot. ### Root Cause `nvidia-utils` (590.48.01) installs a systemd drop-in that disables user session freezing during suspend: ``` # /usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf [Service] Environment="SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false" ``` systemd itself warns about this on every suspend: ``` User sessions remain unfrozen on explicit request ($SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=0). This is not recommended, and might result in unexpected behavior, particularly in suspend-then-hibernate operations or setups with encrypted home directories. ``` Because user sessions are not frozen, Wayland clients continue running while the GPU is being suspended by `nvidia-suspend.service`. When the GPU disappears mid-operation, clients crash (waybar SIGABRT) or the compositor hangs with a stale framebuffer. ### Reproduction 1. NVIDIA hybrid GPU laptop (Intel + NVIDIA), `nvidia-open-dkms` installed 2. Lock screen or just close lid (triggers suspend via logind) 3. Wait a few seconds, then resume (open lid / press key) 4. Lock screen appears but keyboard input is dead. Mouse cursor may still move. 5. Only recovery: kill Hyprland from TTY (Ctrl+Alt+F3) or hard reboot Reproduced multiple times, 100% consistent. ### Attempted Fixes - **Overriding the drop-in** with `SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=true`: Did not resolve the issue (compositor still froze on resume, possibly because NVIDIA driver itself doesn't handle frozen sessions well). - **Killing hyprlock/walker after resume**: Doesn't help because the compositor itself is frozen, not just the lock screen. ### Current Workaround Disable suspend on lid close entirely: ```bash # /etc/systemd/logind.conf.d/lid-lock.conf [Login] HandleLidSwitch=lock HandleLidSwitchExternalPower=lock ``` This locks the screen on lid close without suspending. Users can still hibernate manually (which does a full shutdown/restore and avoids the GPU state issue). ### Environment - **Omarchy:** v3.4.1 - **Hyprland:** 0.54.0 - **Aquamarine:** 0.10.0 - **Kernel:** 6.18.13-arch1-1 - **NVIDIA:** nvidia-open-dkms 590.48.01-4 - **GPU:** Intel Arc (Meteor Lake) + NVIDIA RTX 4080 Max-Q - **Laptop:** ASUS (ROG/Zephyrus style, dual GPU with HDMI on NVIDIA) ### Relevant Logs **Suspend entry:** ``` systemd-logind: The system will suspend now! systemd-sleep: User sessions remain unfrozen on explicit request kernel: PM: suspend entry (s2idle) ``` **Resume + crash:** ``` kernel: PM: suspend exit systemd-coredump: Process (waybar) of user 1000 dumped core. [SIGABRT] ``` **Hyprland crash report (when restarting after freeze):** ``` terminate called after throwing an instance of 'std::runtime_error' what(): CBackend::create() failed! aquamarine: Session is not active, waiting for 5s aquamarine: Session timeout reached aquamarine: Session could not be activated in time aquamarine: DRM Backend failed ``` ### Suggestion This seems like a systemic issue with `nvidia-utils` disabling session freezing. Possible approaches: 1. **Omarchy-level workaround:** Add a post-resume hook that restarts the compositor gracefully if it detects a frozen state 2. **Document the issue** for NVIDIA hybrid GPU users with a recommended logind override 3. **Upstream to NVIDIA/Hyprland:** The `FREEZE_USER_SESSIONS=false` workaround may have been necessary for older drivers but seems to cause more problems than it solves with current nvidia-open-dkms + Wayland compositors 4. **Investigate hibernate as alternative:** `systemctl hibernate` does a full power cycle and should avoid the GPU state issue entirely — could be the recommended sleep mode for NVIDIA laptops ### Related - systemd warning: https://github.com/systemd/systemd/issues/31292 - NVIDIA Wayland suspend issues are widely reported in the Hyprland community
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 02:43 UTC