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.
Plymouth: the `omarchy` theme renders off-centre on HiDPI panels — plymouthd's automatic device scale halves the window size the script sees
Reported by isaac30503 · filed Sep 3, 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
Environment
- Omarchy 4.0.2-1 (packages, installed on CachyOS;
omarchy-settings4.0.2-1) - Lenovo Legion Go 2 (83N0, Ryzen Z2 Extreme, Radeon 890M), kernel 7.2.2-1-cachyos
- Plymouth 26.134.222-2.1, theme
omarchy, LUKS root (sd-encrypt), Limine - Internal panel eDP-1: 1920x1200, 190x120 mm → 257 DPI
- External DP-1: 1920x1080, 600x330 mm → 81 DPI
What happens
At the LUKS passphrase prompt the whole theme — logo, lock icon, entry box, progress bar —
is bunched into the upper-left corner instead of being centred. It is wrong on both
outputs at once: the logo is cropped off the left edge of the internal panel, and sits in
the top-left quadrant of the external monitor.
Why
plymouthd picks a device scale automatically from the panel's DPI, and that scale is a
single daemon-wide value — there is no per-output form. The 257 DPI internal panel puts it
at 2, and the external 27" monitor inherits it.
With scale 2 the script module reports 960x600 to the theme instead of 1920x1200, soomarchy.script computes:
logo X = Window.GetWidth() / 2 - 800 / 2 = 960/2 - 400 = 80 (should be 560)
logo Y = Window.GetHeight() / 2 - 188 / 2 = 600/2 - 94 = 206 (should be 506)Those are exactly the offsets observed on screen. Every other element derives from the
logo position, so the whole layout follows it into the corner.
Steps to reproduce
- Install Omarchy on a machine whose internal panel is above ~192 DPI (any 8"-class
1920x1200 handheld; a 13" 4K laptop should do too).
2. Encrypt the root filesystem so Plymouth shows the passphrase prompt.
3. Boot.
Workaround (verified)
# /etc/plymouth/plymouthd.conf
[Daemon]
DeviceScale=1
Theme=omarchythen sudo mkinitcpio -P. The initramfs rebuild is required — the passphrase prompt is
drawn by Plymouth from inside the image, so editing the on-disk file alone changes
nothing. After that the theme is correctly centred on both outputs.
Suggested fix
Make the theme scale-aware rather than assuming device pixels, or ship DeviceScale=1
with the theme.
Secondary observation
Independently of the above, omarchy.script centres with
logo.sprite.SetX(Window.GetWidth() / 2 - logo.image.GetWidth() / 2);while Plymouth's own reference theme (/usr/share/plymouth/themes/script/script.script)
uses
logo.sprite.SetX(Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);The missing Window.GetX() / Window.GetY() makes no difference on a single-head setup,
so it was not the cause here — with DeviceScale=1 the layout is correct on both outputs —
but it is a real divergence from upstream and may matter on other multi-monitor
arrangements. Affected lines: 8, 9, 111, 187, 196.
*Investigated and written with Claude Code (Claude Opus 5). Every command output, file
excerpt and measurement quoted above was taken from the affected machine.*
View raw text
### Environment - Omarchy 4.0.2-1 (packages, installed on CachyOS; `omarchy-settings` 4.0.2-1) - Lenovo Legion Go 2 (83N0, Ryzen Z2 Extreme, Radeon 890M), kernel 7.2.2-1-cachyos - Plymouth 26.134.222-2.1, theme `omarchy`, LUKS root (`sd-encrypt`), Limine - Internal panel eDP-1: 1920x1200, 190x120 mm → **257 DPI** - External DP-1: 1920x1080, 600x330 mm → 81 DPI ### What happens At the LUKS passphrase prompt the whole theme — logo, lock icon, entry box, progress bar — is bunched into the upper-left corner instead of being centred. It is wrong on **both** outputs at once: the logo is cropped off the left edge of the internal panel, and sits in the top-left quadrant of the external monitor. ### Why `plymouthd` picks a device scale automatically from the panel's DPI, and that scale is a single daemon-wide value — there is no per-output form. The 257 DPI internal panel puts it at 2, and the external 27" monitor inherits it. With scale 2 the script module reports 960x600 to the theme instead of 1920x1200, so `omarchy.script` computes: ``` logo X = Window.GetWidth() / 2 - 800 / 2 = 960/2 - 400 = 80 (should be 560) logo Y = Window.GetHeight() / 2 - 188 / 2 = 600/2 - 94 = 206 (should be 506) ``` Those are exactly the offsets observed on screen. Every other element derives from the logo position, so the whole layout follows it into the corner. ### Steps to reproduce 1. Install Omarchy on a machine whose internal panel is above ~192 DPI (any 8"-class 1920x1200 handheld; a 13" 4K laptop should do too). 2. Encrypt the root filesystem so Plymouth shows the passphrase prompt. 3. Boot. ### Workaround (verified) ```ini # /etc/plymouth/plymouthd.conf [Daemon] DeviceScale=1 Theme=omarchy ``` then `sudo mkinitcpio -P`. The initramfs rebuild is required — the passphrase prompt is drawn by Plymouth from inside the image, so editing the on-disk file alone changes nothing. After that the theme is correctly centred on both outputs. ### Suggested fix Make the theme scale-aware rather than assuming device pixels, or ship `DeviceScale=1` with the theme. ### Secondary observation Independently of the above, `omarchy.script` centres with ```lua logo.sprite.SetX(Window.GetWidth() / 2 - logo.image.GetWidth() / 2); ``` while Plymouth's own reference theme (`/usr/share/plymouth/themes/script/script.script`) uses ```lua logo.sprite.SetX(Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); ``` The missing `Window.GetX()` / `Window.GetY()` makes no difference on a single-head setup, so it was not the cause here — with `DeviceScale=1` the layout is correct on both outputs — but it is a real divergence from upstream and may matter on other multi-monitor arrangements. Affected lines: 8, 9, 111, 187, 196. --- *Investigated and written with Claude Code (Claude Opus 5). Every command output, file excerpt and measurement quoted above was taken from the affected machine.*
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 10:39 UTC