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

ThinkPad X1 Carbon Gen 14: lid s2idle never wakes; hibernate reboots; lid-open leaves panel dark

Reported by heredia21 · filed Sep 4, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 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

ThinkPad X1 Carbon Gen 14: lid s2idle never wakes; hibernate reboots; lid-open leaves panel darkrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

Lenovo ThinkPad X1 Carbon Gen 14 (21V7CTO1WW), Intel Core Ultra 7 365 (Panther Lake), Intel Graphics, firmware N4OET49W (1.12), Omarchy 4.0.2-1, Hyprland 0.56.2, kernel 7.1.9-arch1-2. Sleep mode is s2idle only (/sys/power/mem_sleep is [s2idle]). Swap is a 30.8G btrfs swapfile (resume=/dev/mapper/root resume_offset=1915076) plus zram0 at priority 100.

What's wrong?

On this machine, stock lid-close sleep is not recoverable. Related reports (#10170, #9628, #9378, #9753) describe pieces of this, but not this model or the hibernate/zram reboot.

1. s2idle on lid close does not come back when the lid opens

  • Kernel: ACPI: button: The lid device is not compliant to SW_LID.
  • /proc/acpi/wakeup lists LID as S4 only. SLPB is S3. There is no S0/s2idle lid wake.
  • Closing the lid with no external display: logind logs Lid closed / Suspending... and PM: suspend entry (s2idle).
  • Opening the lid often produces no Lid opened / suspend exit. The machine stays dark until a long power hold (hard reboot).
  • When a resume does happen (one 6h sleep this morning), journald hit a watchdog on thaw (systemd-journald.service: Watchdog timeout) and the panel path is the same hole as #10170: lock screen blanks with omarchy-brightness-display off, and lid-open only runs omarchy-hyprland-monitor-clamshell, which never DPMS-enables eDP-1 when no external monitor is connected.

2. Hibernate is not a fallback — it reboots into a cold login

systemctl hibernate is allowed (CanHibernate=yes). After hibernate + lid open, the next boot is a full SDDM + user login, not a resume. Clear Stale Hibernate Storage Info skipped (HibernateLocation EFI var missing). zram0 is prio 100 vs the resume swapfile at prio 0, so hibernate can land on zram, which is gone after power-off.

3. Stock lid-open cannot light the panel even when the kernel did resume

Defaults:

o.bind("switch:on:Lid Switch", nil, "omarchy-system-lid-close", { locked = true })
o.bind("switch:off:Lid Switch", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })

omarchy-system-wake (dpms/backlight on, then clamshell) is never used on lid-open. Same as #10170 / #9628. Power key is ignored (10-ignore-power-button.conf), so a dark-but-alive resume looks like a hang.

Steps

  1. X1 Carbon Gen 14, no HDMI/USB-C display.
  2. Close the lid (stock Omarchy: lock + logind HandleLidSwitch=suspend).
  3. Open the lid.
  4. Observe: no wake, or wake with a black panel, or (if hibernate was used) a cold boot.

Expected

Lid close locks and sleeps. Lid open resumes, lights eDP-1, shows the lock screen in the same session.

Journal excerpts

kernel: ACPI: button: The lid device is not compliant to SW_LID.
kernel: PM: suspend entry (s2idle)
# often no matching suspend exit until a forced power cycle

# on a successful thaw:
systemd[1]: systemd-journald.service: Watchdog timeout (limit 3min)!
systemd[1]: systemd-journald.service: Failed with result 'watchdog'.
kernel: PM: suspend exit

/proc/acpi/wakeup (relevant rows):

SLPB	  S3	*enabled   platform:PNP0C0E:00
LID	  S4	*enabled   platform:PNP0C0D:00

Suggested direction

  • Use omarchy-system-wake on switch:off:Lid Switch (superset of clamshell reconcile; fixes the dark-panel case in #10170).
  • Do not treat hibernate as available while zram outranks the resume swapfile; document or force hibernate onto the swapfile.
  • For s2idle-only + SW_LID-broken lids: do not rely on logind suspend-on-lid with no working wake source. Lock + DPMS off (and a real wake on lid-open) is safer than a bag full of s2idle that never returns.

Happy to attach omarchy-debug output or retest a patch.

View raw text
### System details

Lenovo ThinkPad X1 Carbon Gen 14 (21V7CTO1WW), Intel Core Ultra 7 365 (Panther Lake), Intel Graphics, firmware N4OET49W (1.12), Omarchy 4.0.2-1, Hyprland 0.56.2, kernel 7.1.9-arch1-2. Sleep mode is **s2idle only** (`/sys/power/mem_sleep` is `[s2idle]`). Swap is a 30.8G btrfs swapfile (`resume=/dev/mapper/root resume_offset=1915076`) **plus** zram0 at priority 100.

### What's wrong?

On this machine, stock lid-close sleep is not recoverable. Related reports (#10170, #9628, #9378, #9753) describe pieces of this, but not this model or the hibernate/zram reboot.

**1. s2idle on lid close does not come back when the lid opens**

- Kernel: `ACPI: button: The lid device is not compliant to SW_LID.`
- `/proc/acpi/wakeup` lists `LID` as **S4** only. `SLPB` is S3. There is no S0/s2idle lid wake.
- Closing the lid with no external display: logind logs `Lid closed` / `Suspending...` and `PM: suspend entry (s2idle)`.
- Opening the lid often produces **no** `Lid opened` / `suspend exit`. The machine stays dark until a long power hold (hard reboot).
- When a resume *does* happen (one 6h sleep this morning), journald hit a watchdog on thaw (`systemd-journald.service: Watchdog timeout`) and the panel path is the same hole as #10170: lock screen blanks with `omarchy-brightness-display off`, and lid-open only runs `omarchy-hyprland-monitor-clamshell`, which never DPMS-enables eDP-1 when no external monitor is connected.

**2. Hibernate is not a fallback — it reboots into a cold login**

`systemctl hibernate` is allowed (`CanHibernate=yes`). After hibernate + lid open, the next boot is a **full SDDM + user login**, not a resume. `Clear Stale Hibernate Storage Info` skipped (`HibernateLocation` EFI var missing). zram0 is **prio 100** vs the resume swapfile at **prio 0**, so hibernate can land on zram, which is gone after power-off.

**3. Stock lid-open cannot light the panel even when the kernel did resume**

Defaults:

```lua
o.bind("switch:on:Lid Switch", nil, "omarchy-system-lid-close", { locked = true })
o.bind("switch:off:Lid Switch", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })
```

`omarchy-system-wake` (dpms/backlight on, then clamshell) is never used on lid-open. Same as #10170 / #9628. Power key is ignored (`10-ignore-power-button.conf`), so a dark-but-alive resume looks like a hang.

### Steps

1. X1 Carbon Gen 14, no HDMI/USB-C display.
2. Close the lid (stock Omarchy: lock + logind `HandleLidSwitch=suspend`).
3. Open the lid.
4. Observe: no wake, or wake with a black panel, or (if hibernate was used) a cold boot.

### Expected

Lid close locks and sleeps. Lid open resumes, lights eDP-1, shows the lock screen in the same session.

### Journal excerpts

```
kernel: ACPI: button: The lid device is not compliant to SW_LID.
kernel: PM: suspend entry (s2idle)
# often no matching suspend exit until a forced power cycle

# on a successful thaw:
systemd[1]: systemd-journald.service: Watchdog timeout (limit 3min)!
systemd[1]: systemd-journald.service: Failed with result 'watchdog'.
kernel: PM: suspend exit
```

`/proc/acpi/wakeup` (relevant rows):

```
SLPB	  S3	*enabled   platform:PNP0C0E:00
LID	  S4	*enabled   platform:PNP0C0D:00
```

### Suggested direction

- Use `omarchy-system-wake` on `switch:off:Lid Switch` (superset of clamshell reconcile; fixes the dark-panel case in #10170).
- Do not treat hibernate as available while zram outranks the resume swapfile; document or force hibernate onto the swapfile.
- For s2idle-only + SW_LID-broken lids: do not rely on logind suspend-on-lid with no working wake source. Lock + DPMS off (and a real wake on lid-open) is safer than a bag full of s2idle that never returns.

Happy to attach `omarchy-debug` output or retest a patch.

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/9211· 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.

  • Out of scopeDecided by agents · verified · 2026-10-09 09:15 UTC