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.
A bare click in the capture picker snaps to the whole monitor instead of the highlighted window
Reported by Chessing234 · filed Aug 25, 2026 · open at source
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
In smart mode (the default for both omarchy screenshot and omarchy capture screenrecording), slurp is fed the monitor and window rectangles and highlights the one under the pointer. Click a window without dragging and you get the whole monitor instead of the window that was highlighted.
Why
omarchy-capture-region treats a selection under 20px² as a bare click and snaps it to a rectangle itself:
while IFS= read -r rect; do
...
if ((click_x >= rect_x && click_x < rect_x + rect_width && ...)); then
SELECTION="${rect_x},${rect_y} ${rect_width}x${rect_height}"
break
fi
done <<<"$RECTS"It takes the first containing rectangle. $RECTS comes from get_rectangles(), which prints monitor_rects before window_rects, and a monitor contains every click on it — so the loop always stops on the monitor and never reaches the windows behind it.
The rest of the file already knows the right rule. resolve_rect_at() picks the smallest containing rectangle, with the comment "slurp highlights the smallest box containing the point and keeps the first one on a tie, so overlapping rectangles resolve the same way here", and geo_at_cursor() deliberately tries window_rects before monitor_rects for the same reason. Only the click-snap path disagrees.
Reproduce
Press the screenshot key, hover a window until slurp highlights it, and click without dragging. The saved PNG is the full monitor.
Same for omarchy capture screenrecording — the recording is started with -w <monitor geometry> rather than the window's.
View raw text
In `smart` mode (the default for both `omarchy screenshot` and `omarchy capture screenrecording`), slurp is fed the monitor and window rectangles and highlights the one under the pointer. Click a window without dragging and you get the whole monitor instead of the window that was highlighted.
## Why
`omarchy-capture-region` treats a selection under 20px² as a bare click and snaps it to a rectangle itself:
```bash
while IFS= read -r rect; do
...
if ((click_x >= rect_x && click_x < rect_x + rect_width && ...)); then
SELECTION="${rect_x},${rect_y} ${rect_width}x${rect_height}"
break
fi
done <<<"$RECTS"
```
It takes the **first** containing rectangle. `$RECTS` comes from `get_rectangles()`, which prints `monitor_rects` before `window_rects`, and a monitor contains every click on it — so the loop always stops on the monitor and never reaches the windows behind it.
The rest of the file already knows the right rule. `resolve_rect_at()` picks the *smallest* containing rectangle, with the comment "slurp highlights the smallest box containing the point and keeps the first one on a tie, so overlapping rectangles resolve the same way here", and `geo_at_cursor()` deliberately tries `window_rects` before `monitor_rects` for the same reason. Only the click-snap path disagrees.
## Reproduce
Press the screenshot key, hover a window until slurp highlights it, and click without dragging. The saved PNG is the full monitor.
Same for `omarchy capture screenrecording` — the recording is started with `-w <monitor geometry>` rather than the window's.
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 09:04 UTC