Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-2006GitHub issuePublicDecided· Out of scope

Suspend/resume causes compositor freeze on NVIDIA hybrid GPU laptops

Reported by KrisKind75 · filed Mar 3, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

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

Suspend/resume causes compositor freeze on NVIDIA hybrid GPU laptopsrevision 1 · captured 2026-09-28 21:29 UTC via poll

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:

# /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

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