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

Display panel can't toggle monitors on Hyprland 0.56: `hyprctl keyword` silently no-ops (Lua config)

Reported by Baniel83 · filed Aug 15, 2026Closed upstream on 2026-10-04 by the bot omarchybot; the closing comment says it was fixed by PR #13725. GitHub close reason: completed.

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

Display panel can't toggle monitors on Hyprland 0.56: `hyprctl keyword` silently no-ops (Lua config)revision 1 · captured 2026-09-28 21:29 UTC via poll

Describe the bug

The Display panel (omarchy.monitor) cannot toggle displays on Hyprland 0.56 (quattro). Clicking a monitor row to disable or re-enable it does nothing.

Panel.qml line 303 runs:

actionProc.command = ["hyprctl", "keyword", "monitor", name + (enabled ? ",disable" : ",preferred,auto,auto")]

Since Hyprland 0.55 the compositor is configured with Lua and the legacy keyword parser is gone; the command fails with:

keyword can't work with non-legacy parsers. Use eval.

The panel's Process reads stdout only, so the stderr error is silent and the toggle just no-ops.

Expected behavior

Clicking a display row toggles that display off/on, and the panel row updates to reflect the new state.

Actual behavior

Nothing changes; the monitor stays in its previous state.

Steps to reproduce

  1. Open the Display panel (omarchy.monitor).
  2. Click a monitor row (e.g. HDMI-A-1) to disable it.
  3. Nothing happens.
  4. Reproduce directly: hyprctl keyword monitor HDMI-A-1,disable prints keyword can't work with non-legacy parsers. Use eval.

Suggested fix

Use hyprctl eval with the Lua monitor API (verified working on Hyprland 0.56.2):

actionProc.command = ["hyprctl", "eval", "hl.monitor({ output = \"" + name + "\", disabled = " + enabled + " })"]

JS booleans stringify to lowercase true/false, which is valid Lua; re-enabling with disabled = false brings the monitor back at its preferred mode/position, matching the intent of ,preferred,auto,auto.

Affected file: /usr/share/omarchy/shell/plugins/panels/monitor/Panel.qml line 303.

Environment

  • Omarchy: 4.0.0-1 (stable)
  • Kernel: 7.1.8-zen1-3-zen
  • Hyprland: 0.56.2 (branch v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
  • CPU: AMD Ryzen 7 9800X3D
  • GPU: GeForce RTX 4080 SUPER
  • Monitor: LG 38GN950 (DP-1, 3840x1600@144) + LG TV (HDMI-A-1, 3840x2160@60)
View raw text
### Describe the bug

The Display panel (`omarchy.monitor`) cannot toggle displays on Hyprland 0.56 (quattro). Clicking a monitor row to disable or re-enable it does nothing.

`Panel.qml` line 303 runs:

```js
actionProc.command = ["hyprctl", "keyword", "monitor", name + (enabled ? ",disable" : ",preferred,auto,auto")]
```

Since Hyprland 0.55 the compositor is configured with Lua and the legacy `keyword` parser is gone; the command fails with:

```
keyword can't work with non-legacy parsers. Use eval.
```

The panel's `Process` reads stdout only, so the stderr error is silent and the toggle just no-ops.

### Expected behavior

Clicking a display row toggles that display off/on, and the panel row updates to reflect the new state.

### Actual behavior

Nothing changes; the monitor stays in its previous state.

### Steps to reproduce

1. Open the Display panel (`omarchy.monitor`).
2. Click a monitor row (e.g. `HDMI-A-1`) to disable it.
3. Nothing happens.
4. Reproduce directly: `hyprctl keyword monitor HDMI-A-1,disable` prints `keyword can't work with non-legacy parsers. Use eval.`

### Suggested fix

Use `hyprctl eval` with the Lua monitor API (verified working on Hyprland 0.56.2):

```js
actionProc.command = ["hyprctl", "eval", "hl.monitor({ output = \"" + name + "\", disabled = " + enabled + " })"]
```

JS booleans stringify to lowercase `true`/`false`, which is valid Lua; re-enabling with `disabled = false` brings the monitor back at its preferred mode/position, matching the intent of `,preferred,auto,auto`.

Affected file: `/usr/share/omarchy/shell/plugins/panels/monitor/Panel.qml` line 303.

### Environment

- Omarchy: 4.0.0-1 (stable)
- Kernel: 7.1.8-zen1-3-zen
- Hyprland: 0.56.2 (branch v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
- CPU: AMD Ryzen 7 9800X3D
- GPU: GeForce RTX 4080 SUPER
- Monitor: LG 38GN950 (DP-1, 3840x1600@144) + LG TV (HDMI-A-1, 3840x2160@60)

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.