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-1575GitHub issuePublicDecided· Out of scope

Hard hang entering s2idle on lid close (ASUS Zenbook UX8402ZE, Alder Lake + NVIDIA)

Reported by brightwalker25 · filed Aug 22, 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

Hard hang entering s2idle on lid close (ASUS Zenbook UX8402ZE, Alder Lake + NVIDIA)revision 1 · captured 2026-09-28 21:24 UTC via poll

What happened

Closing the lid with the session locked intermittently hard-hangs the machine while
it is entering suspend. The screen never comes back and a forced power-off is the
only way out. It happened after 5 of 7 consecutive boots before I worked around it.

The journal of the affected boot ends exactly at the point suspend begins, and never
reaches the kernel's PM: suspend entry line, which normally follows within a
millisecond:

16:22:13.402  omarchy-shell[1430]:  WARN quickshell.hyprland.ipc: Got removal for monitor "DP-1" which was not previously tracked.
16:22:14.788  systemd-logind[1085]: Lid closed.
16:22:14.789  systemd-logind[1085]: Suspending...
16:22:14.938  systemd-logind[1085]: Lid opened.
16:22:15.073  1password[1496]:      Lock state changed: Locked
16:22:15.087  systemd-sleep[56483]: User sessions remain unfrozen on explicit request
16:22:15.090  systemd-sleep[56483]: Performing sleep operation 'suspend'...
              <end of journal>

The following boot confirms it was not a clean shutdown:

systemd-fsck[914]:     Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
systemd-journald[680]: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.

What I expected

Suspend to complete, or fail and return, rather than wedging the machine.

Steps to reproduce

Not reliably reproducible on demand. Suspend succeeds most of the time — I have
clean 30-minute s2idle cycles in the same logs. The one failure I captured in full
has two things in flight at once:

  1. The lid switch closes and reopens 150 ms apart, after logind has already

committed to suspending. logind proceeds regardless.
2. A ScreenPad (DP-1) display removal 1.4 s earlier, so the display set was
recently reconfigured.

I cannot prove either is causal. I am reporting it because of the second point
below, which is the part that may be Omarchy's.

Possible Omarchy angle

omarchy-system-sleep-lock runs sync_clamshell inside the delay-inhibitor
window, which invokes omarchy-hyprland-monitor-clamshell and reconfigures
Hyprland's monitor state on every lid-close suspend. The script's own comment
acknowledges that lid transitions can stall Hyprland IPC. Doing display
reconfiguration in the pre-suspend window on a machine whose s2idle path is
already fragile may be worth a look, even if the underlying hang is a kernel or
firmware problem rather than an Omarchy one.

I would understand this being closed as out of scope.

Workaround

Forcing S3 instead of s2idle fixes it completely. The firmware advertises S3
(ACPI: PM: (supports S0 S3 S4 S5)):

# /etc/systemd/sleep.conf.d/10-deep-sleep.conf
[Sleep]
MemorySleepMode=deep

Many clean cycles since, with PM: suspend entry (deep) and matching
PM: suspend exit, and no unclean shutdowns.

System details

  • Omarchy 4.0.0-1, Hyprland 0.56.2, SDDM
  • Kernel 7.1.8-arch1-3
  • ASUS Zenbook UX8402ZE (Zenbook Pro 14 Duo), firmware UX8402ZE.307 (2023-03-20)
  • Intel Core i9-12900H, Alder Lake
  • Intel Iris Xe (i915) + NVIDIA RTX 3050 Ti Mobile, nvidia-open-dkms 610.57.04
  • Suspend mode before the workaround: /sys/power/mem_sleep = [s2idle] deep

A redacted omarchy-debug log is available on request.

View raw text

## What happened

Closing the lid with the session locked intermittently hard-hangs the machine while
it is entering suspend. The screen never comes back and a forced power-off is the
only way out. It happened after 5 of 7 consecutive boots before I worked around it.

The journal of the affected boot ends exactly at the point suspend begins, and never
reaches the kernel's `PM: suspend entry` line, which normally follows within a
millisecond:

```
16:22:13.402  omarchy-shell[1430]:  WARN quickshell.hyprland.ipc: Got removal for monitor "DP-1" which was not previously tracked.
16:22:14.788  systemd-logind[1085]: Lid closed.
16:22:14.789  systemd-logind[1085]: Suspending...
16:22:14.938  systemd-logind[1085]: Lid opened.
16:22:15.073  1password[1496]:      Lock state changed: Locked
16:22:15.087  systemd-sleep[56483]: User sessions remain unfrozen on explicit request
16:22:15.090  systemd-sleep[56483]: Performing sleep operation 'suspend'...
              <end of journal>
```

The following boot confirms it was not a clean shutdown:

```
systemd-fsck[914]:     Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
systemd-journald[680]: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.
```

## What I expected

Suspend to complete, or fail and return, rather than wedging the machine.

## Steps to reproduce

Not reliably reproducible on demand. Suspend succeeds most of the time — I have
clean 30-minute s2idle cycles in the same logs. The one failure I captured in full
has two things in flight at once:

1. The lid switch closes and reopens 150 ms apart, after logind has already
   committed to suspending. logind proceeds regardless.
2. A ScreenPad (`DP-1`) display removal 1.4 s earlier, so the display set was
   recently reconfigured.

I cannot prove either is causal. I am reporting it because of the second point
below, which is the part that may be Omarchy's.

## Possible Omarchy angle

`omarchy-system-sleep-lock` runs `sync_clamshell` inside the delay-inhibitor
window, which invokes `omarchy-hyprland-monitor-clamshell` and reconfigures
Hyprland's monitor state on every lid-close suspend. The script's own comment
acknowledges that lid transitions can stall Hyprland IPC. Doing display
reconfiguration in the pre-suspend window on a machine whose s2idle path is
already fragile may be worth a look, even if the underlying hang is a kernel or
firmware problem rather than an Omarchy one.

I would understand this being closed as out of scope.

## Workaround

Forcing S3 instead of s2idle fixes it completely. The firmware advertises S3
(`ACPI: PM: (supports S0 S3 S4 S5)`):

```
# /etc/systemd/sleep.conf.d/10-deep-sleep.conf
[Sleep]
MemorySleepMode=deep
```

Many clean cycles since, with `PM: suspend entry (deep)` and matching
`PM: suspend exit`, and no unclean shutdowns.

## System details

- Omarchy 4.0.0-1, Hyprland 0.56.2, SDDM
- Kernel 7.1.8-arch1-3
- ASUS Zenbook UX8402ZE (Zenbook Pro 14 Duo), firmware UX8402ZE.307 (2023-03-20)
- Intel Core i9-12900H, Alder Lake
- Intel Iris Xe (i915) + NVIDIA RTX 3050 Ti Mobile, nvidia-open-dkms 610.57.04
- Suspend mode before the workaround: `/sys/power/mem_sleep` = `[s2idle] deep`

A redacted `omarchy-debug` log is available on request.

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 10:11 UTC