Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
[4.0.2-2 ARM/M2 + Hyprland 0.56.0] omarchy capture screenshot fails: jq string ("null") cannot be parsed as a number
Reported by avillagran · filed Sep 15, 2026Closed upstream on 2026-09-15 by its own reporter avillagran, as not planned. Closed by its own reporter — not by itself evidence of a fix.
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
NOTE: This is SPECIFIC to Omarchy 4.0.2-2 on Apple M2 (aarch64/ARM) + Hyprland 0.56.0. NOT 4.0.3 Intel. Please do not close as duplicate of Intel reports.
Affected versions (specific)
omarchy version: 4.0.2-2hyprctl version: Hyprland 0.56.0 built from branchfeat/touchpad-scroll-accelerationat commite4cd005730b6b7b1e7ab6701fe31abd411bbe005dirty, Tag:v0.56.0-191-ge4cd0057- Arch:
aarch64, Apple M2 Pro (Avalanche-M2-Pro / Blizzard-M2-Pro),Linux omarchy 7.1.13-1-1-ARCH-hdmi-recover, Arch Linux ARM - Current Intel is 4.0.3, Apple/M2 is still on older 4.0.2-2 — this bug is filed against 4.0.2-2 only.
What happened
omarchy capture screenshot (default smart mode) prints:
jq: error (at <stdin>:107): string ("null") cannot be parsed as a number
jq: error (at <stdin>:445): string ("null") cannot be parsed as a numberand no picker appears. Exit 0 but no screenshot.
What was expected
Smart-region picker with window/monitor hints, as documented.
Steps to reproduce
- On Omarchy 4.0.2-2 + Hyprland 0.56.0 ARM/M2
- Run
omarchy capture screenshotoromarchy screenshot - Observe the two jq errors.
hyprctl monitors -j | wc -l== 107,hyprctl clients -j | wc -l== 445 (matches error locations).
Root cause (verified locally)
/usr/share/omarchy/bin/omarchy-capture-region:40-53:
active_workspace() {
hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .activeWorkspace.id'
}
window_rects() {
hyprctl clients -j | jq -r --arg ws "$(active_workspace)" \
'[.[] | select(.workspace.id == ($ws | tonumber) and .hidden != true) | ...]'
}
monitor_rects() {
hyprctl monitors -j | jq -r --arg ws "$(active_workspace)" "... select(.activeWorkspace.id == (\$ws | tonumber)) ..."
}Hyprland 0.56.0 changed:
"activeWorkspace": {"address":"6","type":"numbered","name":"6"}
"workspace": {"address":"7","type":"numbered","name":"7"}No more .id. So .activeWorkspace.id -> null -> "null" | tonumber fails.
Verified:
$ hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .activeWorkspace.id'
null
$ hyprctl clients -j | jq -r --arg ws "null" '[.[] | select(.workspace.id == ($ws | tonumber))]'
jq: error (at <stdin>:445): string ("null") cannot be parsed as a numberWorkaround (verified)
These bypass get_rectangles() and work:
omarchy capture screenshot fullscreen save
omarchy capture screenshot regionfocused_monitor_geo (no workspace filter) works fine.
Suggested fix (backwards compatible)
Compare by .name with fallback to .id:
active_workspace() {
hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .activeWorkspace.name // .activeWorkspace.id'
}
# window_rects:
# select((.workspace.name // ((.workspace.id|tostring))) == $ws and .hidden != true)
# monitor_rects:
# select((.activeWorkspace.name // ((.activeWorkspace.id|tostring))) == $ws)Verified locally that string comparison by name returns correct rects on this machine.
System details
omarchy debugdoes NOT exist on 4.0.2-2 (Unknown Omarchy command: omarchy debug), so no debug log URL.omarchy commands --jsonshows 396 commands, none indebuggroup.- Monitors: eDP-1 3456x2234@120 scale 2 + HDMI-A-1 LG HDR QHD [email protected] scale 2
View raw text
**NOTE: This is SPECIFIC to Omarchy 4.0.2-2 on Apple M2 (aarch64/ARM) + Hyprland 0.56.0. NOT 4.0.3 Intel. Please do not close as duplicate of Intel reports.**
## Affected versions (specific)
- `omarchy version`: 4.0.2-2
- `hyprctl version`: Hyprland 0.56.0 built from branch `feat/touchpad-scroll-acceleration` at commit `e4cd005730b6b7b1e7ab6701fe31abd411bbe005` dirty, Tag: `v0.56.0-191-ge4cd0057`
- Arch: `aarch64`, Apple M2 Pro (Avalanche-M2-Pro / Blizzard-M2-Pro), `Linux omarchy 7.1.13-1-1-ARCH-hdmi-recover`, Arch Linux ARM
- Current Intel is 4.0.3, Apple/M2 is still on older 4.0.2-2 — this bug is filed against 4.0.2-2 only.
## What happened
`omarchy capture screenshot` (default `smart` mode) prints:
```
jq: error (at <stdin>:107): string ("null") cannot be parsed as a number
jq: error (at <stdin>:445): string ("null") cannot be parsed as a number
```
and no picker appears. Exit 0 but no screenshot.
## What was expected
Smart-region picker with window/monitor hints, as documented.
## Steps to reproduce
1. On Omarchy 4.0.2-2 + Hyprland 0.56.0 ARM/M2
2. Run `omarchy capture screenshot` or `omarchy screenshot`
3. Observe the two jq errors. `hyprctl monitors -j | wc -l` == 107, `hyprctl clients -j | wc -l` == 445 (matches error locations).
## Root cause (verified locally)
` /usr/share/omarchy/bin/omarchy-capture-region:40-53`:
```bash
active_workspace() {
hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .activeWorkspace.id'
}
window_rects() {
hyprctl clients -j | jq -r --arg ws "$(active_workspace)" \
'[.[] | select(.workspace.id == ($ws | tonumber) and .hidden != true) | ...]'
}
monitor_rects() {
hyprctl monitors -j | jq -r --arg ws "$(active_workspace)" "... select(.activeWorkspace.id == (\$ws | tonumber)) ..."
}
```
Hyprland 0.56.0 changed:
```json
"activeWorkspace": {"address":"6","type":"numbered","name":"6"}
"workspace": {"address":"7","type":"numbered","name":"7"}
```
No more `.id`. So `.activeWorkspace.id` -> `null` -> `"null" | tonumber` fails.
Verified:
```
$ hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .activeWorkspace.id'
null
$ hyprctl clients -j | jq -r --arg ws "null" '[.[] | select(.workspace.id == ($ws | tonumber))]'
jq: error (at <stdin>:445): string ("null") cannot be parsed as a number
```
## Workaround (verified)
These bypass `get_rectangles()` and work:
```bash
omarchy capture screenshot fullscreen save
omarchy capture screenshot region
```
`focused_monitor_geo` (no workspace filter) works fine.
## Suggested fix (backwards compatible)
Compare by `.name` with fallback to `.id`:
```bash
active_workspace() {
hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .activeWorkspace.name // .activeWorkspace.id'
}
# window_rects:
# select((.workspace.name // ((.workspace.id|tostring))) == $ws and .hidden != true)
# monitor_rects:
# select((.activeWorkspace.name // ((.activeWorkspace.id|tostring))) == $ws)
```
Verified locally that string comparison by `name` returns correct rects on this machine.
## System details
- `omarchy debug` does NOT exist on 4.0.2-2 (`Unknown Omarchy command: omarchy debug`), so no debug log URL. `omarchy commands --json` shows 396 commands, none in `debug` group.
- Monitors: eDP-1 3456x2234@120 scale 2 + HDMI-A-1 LG HDR QHD [email protected] scale 2
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.