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-60GitHub issuePublicReceived

Apple Silicon lid close binds wrong command — machine never suspends

Reported by cd-slash · filed Sep 26, 2026Closed upstream on 2026-10-08 by its own reporter cd-slash, as a duplicate of #8418 (R-1415). GitHub close reason: duplicate.

Received and recorded verbatim. Nothing has been checked yet.

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?
Not yet mapped to any requirement or component.
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?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

Apple Silicon lid close binds wrong command — machine never suspendsrevision 1 · captured 2026-09-28 21:23 UTC via poll

On Apple Silicon Macs, closing the laptop lid does not lock the screen or suspend the machine.

Root cause: In default/hypr/bindings/utilities.lua, the Apple Silicon fork of the lid switch bindings maps switch:on:Apple SMC power/lid events to omarchy-hyprland-monitor-clamshell instead of omarchy-system-lid-close. The generic Lid Switch binding does this correctly — the Mac fork does not.

-- Correct (generic):
o.bind("switch:on:Lid Switch", nil, "omarchy-system-lid-close", { locked = true })

-- Bug (Apple Silicon):
o.bind("switch:on:Apple SMC power/lid events", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })
-- Should be: omarchy-system-lid-close

omarchy-hyprland-monitor-clamshell only handles display reconfiguration (clamshell mode). omarchy-system-lid-close locks the screen, then delegates to omarchy-hyprland-monitor-clamshell internally. Because the Mac fork skips it, the lock never fires and the suspend flow never begins.

Version: 4.0.2-2 (aarch64)

Workaround: Add to ~/.config/hypr/bindings.lua:

hl.unbind("switch:on:Apple SMC power/lid events")
o.bind("switch:on:Apple SMC power/lid events", nil, "omarchy-system-lid-close", { locked = true })
View raw text
On Apple Silicon Macs, closing the laptop lid does not lock the screen or suspend the machine.

**Root cause:** In `default/hypr/bindings/utilities.lua`, the Apple Silicon fork of the lid switch bindings maps `switch:on:Apple SMC power/lid events` to `omarchy-hyprland-monitor-clamshell` instead of `omarchy-system-lid-close`. The generic `Lid Switch` binding does this correctly — the Mac fork does not.

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

-- Bug (Apple Silicon):
o.bind("switch:on:Apple SMC power/lid events", nil, "omarchy-hyprland-monitor-clamshell", { locked = true })
-- Should be: omarchy-system-lid-close
```

`omarchy-hyprland-monitor-clamshell` only handles display reconfiguration (clamshell mode). `omarchy-system-lid-close` locks the screen, then delegates to `omarchy-hyprland-monitor-clamshell` internally. Because the Mac fork skips it, the lock never fires and the suspend flow never begins.

**Version:** 4.0.2-2 (aarch64)

**Workaround:** Add to `~/.config/hypr/bindings.lua`:
```lua
hl.unbind("switch:on:Apple SMC power/lid events")
o.bind("switch:on:Apple SMC power/lid events", nil, "omarchy-system-lid-close", { locked = true })
```

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.

No decision has been recorded yet.