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.
Dynamically generate clean monitor scale presets for screen resolution
Reported by grold · filed Oct 11, 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
Summary
Currently, the monitor panel plugin (shell/plugins/panels/monitor/Panel.qml) uses a static array of scale presets:
readonly property var scalePresets: ["1", "1.25", "1.6", "2", "3", "4"]Because Hyprland fractional scaling requires integer logical pixels (divisors of gcd(120 * W, 120 * H)) to prevent subpixel jitter and blur, static presets often:
1. Do not match the exact clean divisors of common display resolutions.
2. Offer values that are too high or impractical for 1080p/1440p displays (e.g. 3x and 4x on 1080p result in unworkable viewport heights) while missing useful clean fractional steps (e.g. 1.33x, 1.5x).
3. Do not adapt to 1440p, Ultrawide, or 4K/Retina displays.
Proposed Solution
Dynamically compute clean scale presets tailored to the active monitor mode (W, H):
- Mathematical validity: Find scale candidates s = k / 120 where integer k divides gcd(120 * W, 120 * H).
- Resolution-tiered limits: Cap the upper scale limit based on vertical display height (H <= 1080 -> 2.0x; H <= 1600 -> 2.5x; H > 1600 -> 4.0x).
- Uniform spacing: Pick up to 6 clean scale values anchored at 1.0x and the maximum clean scale, ensuring the monitor's current active scale is included and intermediate steps minimize spacing variance.
View raw text
### Summary Currently, the monitor panel plugin (`shell/plugins/panels/monitor/Panel.qml`) uses a static array of scale presets: ```qml readonly property var scalePresets: ["1", "1.25", "1.6", "2", "3", "4"] ``` Because Hyprland fractional scaling requires integer logical pixels (divisors of `gcd(120 * W, 120 * H)`) to prevent subpixel jitter and blur, static presets often: 1. Do not match the exact clean divisors of common display resolutions. 2. Offer values that are too high or impractical for 1080p/1440p displays (e.g. 3x and 4x on 1080p result in unworkable viewport heights) while missing useful clean fractional steps (e.g. 1.33x, 1.5x). 3. Do not adapt to 1440p, Ultrawide, or 4K/Retina displays. ### Proposed Solution Dynamically compute clean scale presets tailored to the active monitor mode `(W, H)`: - **Mathematical validity**: Find scale candidates `s = k / 120` where integer `k` divides `gcd(120 * W, 120 * H)`. - **Resolution-tiered limits**: Cap the upper scale limit based on vertical display height (`H <= 1080` -> 2.0x; `H <= 1600` -> 2.5x; `H > 1600` -> 4.0x). - **Uniform spacing**: Pick up to 6 clean scale values anchored at 1.0x and the maximum clean scale, ensuring the monitor's current active scale is included and intermediate steps minimize spacing variance.
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-11 07:18 UTC