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.
Region share offset on monitors not at x=0: shipped share-picker config uses slurp's global %x/%y instead of output-relative %X/%Y
Reported by McNutty · filed Sep 18, 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
What happened
Region screen-sharing (Region tab in hyprland-preview-share-picker, invoked via xdph.conf's custom_picker_binary) shares the wrong area on any monitor that is not anchored at x=0. The shared rectangle is offset horizontally by the monitor's layout X position. On the internal display at 0,0 it is pixel-perfect; on a second monitor at 1920,0 everything is shifted ~1920px sideways. Vertical selections would offset the same way for a monitor with a non-zero Y.
Root cause
Omarchy ships config/hyprland-preview-share-picker/config.yaml with a region command that uses slurp's lowercase format specifiers:
region:
command: slurp -f '%o@%x,%y,%w,%h'slurp's %x/%y are global (layout) coordinates. The wlr-screencopy capture_output_region request — and the picker's own config docs — require coordinates relative to the selected output. So on any output not at the layout origin, the offset of that output leaks into the shared region.
slurp already provides the output-relative specifiers for exactly this: %X/%Y (coordinates relative to the output containing the top-left corner) and %W/%H (size cropped to that output). See man slurp, FORMAT.
The picker's own built-in default is already the correct capital form (`config.rs`, impl Default for RegionConfig):
command: String::from("slurp -f '%o@%X,%Y,%W,%H'")Omarchy's shipped config overrides that correct default with the lowercase form, which is the bug. This is independent of the picker version, so it persists regardless of the -git package pin discussed in #11221.
Fix
In config/hyprland-preview-share-picker/config.yaml, use the capital specifiers (match the picker's own default):
region:
command: slurp -f '%o@%X,%Y,%W,%H'Confirmed correct locally: with the lowercase form a selection near the left edge of the second monitor is reported as DP-2@1927,3,... (global); with %X,%Y it is reported as DP-2@7,3,... (output-relative), and the shared area then matches the selection exactly. No wrapper or extra dependency needed.
Related
- #11221 and #10057 concern the Outputs tab cards under the same origin-offset family, but are a different mechanism (picker rendering / package pin). This issue is specifically the region command in the shipped config, and is fixed purely in Omarchy's config regardless of picker version.
System
- Omarchy: 4.0.4-1
- Hyprland: 0.56.2-2
- xdg-desktop-portal-hyprland: 1.4.1-2
- hyprland-preview-share-picker: 0.2.1-1
- slurp: 1.5.0-2
- GPU: AMD Phoenix1 (amdgpu), ThinkPad T14s Gen 4 AMD
- Monitors: eDP-1 1920x1200 scale 1 @ 0,0 + DP-2 5120x1440 scale 1.25 @ 1920,0
Repro
- Have a second monitor positioned at a non-zero X (e.g.
1920,0). - Start a screen share in an app (Teams-for-linux, browser, OBS), choose the Region tab, select a rectangle on the second monitor.
- Observe the shared stream is offset horizontally by the monitor's X position; the same selection on the monitor at
0,0is correct.
View raw text
## What happened
Region screen-sharing (Region tab in `hyprland-preview-share-picker`, invoked via `xdph.conf`'s `custom_picker_binary`) shares the **wrong area** on any monitor that is not anchored at x=0. The shared rectangle is offset horizontally by the monitor's layout X position. On the internal display at `0,0` it is pixel-perfect; on a second monitor at `1920,0` everything is shifted ~1920px sideways. Vertical selections would offset the same way for a monitor with a non-zero Y.
## Root cause
Omarchy ships `config/hyprland-preview-share-picker/config.yaml` with a region command that uses slurp's **lowercase** format specifiers:
```yaml
region:
command: slurp -f '%o@%x,%y,%w,%h'
```
slurp's `%x`/`%y` are **global** (layout) coordinates. The wlr-screencopy `capture_output_region` request — and the picker's own config docs — require coordinates **relative to the selected output**. So on any output not at the layout origin, the offset of that output leaks into the shared region.
slurp already provides the output-relative specifiers for exactly this: `%X`/`%Y` (coordinates relative to the output containing the top-left corner) and `%W`/`%H` (size cropped to that output). See `man slurp`, FORMAT.
The picker's own built-in default is already the correct capital form ([`config.rs`](https://github.com/WhySoBad/hyprland-preview-share-picker/blob/master/src/config.rs), `impl Default for RegionConfig`):
```rust
command: String::from("slurp -f '%o@%X,%Y,%W,%H'")
```
Omarchy's shipped config overrides that correct default with the lowercase form, which is the bug. This is independent of the picker version, so it persists regardless of the `-git` package pin discussed in #11221.
## Fix
In `config/hyprland-preview-share-picker/config.yaml`, use the capital specifiers (match the picker's own default):
```yaml
region:
command: slurp -f '%o@%X,%Y,%W,%H'
```
Confirmed correct locally: with the lowercase form a selection near the left edge of the second monitor is reported as `DP-2@1927,3,...` (global); with `%X,%Y` it is reported as `DP-2@7,3,...` (output-relative), and the shared area then matches the selection exactly. No wrapper or extra dependency needed.
## Related
- #11221 and #10057 concern the **Outputs tab** cards under the same origin-offset family, but are a different mechanism (picker rendering / package pin). This issue is specifically the **region command** in the shipped config, and is fixed purely in Omarchy's config regardless of picker version.
## System
- Omarchy: 4.0.4-1
- Hyprland: 0.56.2-2
- xdg-desktop-portal-hyprland: 1.4.1-2
- hyprland-preview-share-picker: 0.2.1-1
- slurp: 1.5.0-2
- GPU: AMD Phoenix1 (amdgpu), ThinkPad T14s Gen 4 AMD
- Monitors: eDP-1 1920x1200 scale 1 @ 0,0 + DP-2 5120x1440 scale 1.25 @ 1920,0
## Repro
1. Have a second monitor positioned at a non-zero X (e.g. `1920,0`).
2. Start a screen share in an app (Teams-for-linux, browser, OBS), choose the Region tab, select a rectangle on the second monitor.
3. Observe the shared stream is offset horizontally by the monitor's X position; the same selection on the monitor at `0,0` is correct.
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 15:22 UTC