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.
`omarchy display text size` breaks 1Password's fixed-size dialogs (root cause of #2016)
Reported by SilentKernel · filed Aug 27, 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
omarchy display text size (and the Display panel's Text size slider) sets GNOME's text-scaling-factor. Chromium/Electron apps multiply that factor into their device scale factor, which shrinks the usable layout area of any fixed-size window by the same factor. 1Password's SSH authorization prompt is such a window — ~402x371 logical px with min size = max size — so at text size 16 (factor 1.3636) about 26% of the dialog's content, including the authorize button, is pushed off-window.
This is the root cause behind #2016 ("1Password authorization window cut off"), which was closed without a fix and attributed to a 1Password regression. It also explains the confusing per-machine variance reported there (same monitor scale, different outcome): the trigger is the text scale, not the monitor scale.
Reproduce
omarchy display text size 16(any value above 12 works; bigger is worse)- Restart 1Password so it picks the factor up, enable its SSH agent
- Trigger any SSH signature, e.g. without touching the network:
ssh-add -L > /tmp/k.pub
SSH_AUTH_SOCK=~/.1password/agent.sock ssh-keygen -Y sign -f /tmp/k.pub -U -n test /etc/hostname- The authorization dialog appears with its checkbox/buttons clipped.
The dialog cannot be rescued compositor-side: it reports min size = max size, so size window rules and hl.dsp.window.resize(...) are silently ignored — which is why the window-rule attempts in #2016 only ever affected the main window.
Root cause, measured
Chromium computes its device scale on Wayland as monitor scale x text-scaling-factor. Verified with a scratch Chromium and CDP (Runtime.evaluate on window.devicePixelRatio via --remote-debugging-port), on a 2x monitor with text size 16 (factor 1.3636):
| Launch | devicePixelRatio |
|---|---|
| baseline | 2.71875 (= 2 x 1.36) |
GDK_DPI_SCALE=0.733 | 2.71875 — no effect on Chromium |
--force-device-scale-factor=2 | 4.0 — multiplies, worse |
GSETTINGS_BACKEND=memory | 2.0 — fixed |
The window frame stays at its fixed logical size while the app lays out at the inflated DPR, so the dialog's 402 logical px become 402 x 2 / 2.72 ≈ 295 CSS px of layout — content designed for 402 gets clipped. The same math applies to the main window (the 875x600 floating-window tag default becomes ~643 effective px — the "1Password window too small" complaints).
Fix
Launch 1Password with GSETTINGS_BACKEND=memory: in-process gsettings reads come back as defaults, so it renders at the plain monitor scale and every fixed-size dialog gets its full designed layout (the SSH prompt even sizes itself taller, 402x426 here, everything visible). Dark/light detection is portal-based and keeps working.
One gotcha makes placement non-obvious: 1Password rewrites `~/.config/autostart/1password.desktop` on startup, so the env cannot live in the autostart desktop file. Since Omarchy runs XDG autostart entries as app-<name>@autostart.service units, a systemd user drop-in survives:
# /etc/systemd/user/[email protected]/text-scaling.conf
[Service]
Environment=GSETTINGS_BACKEND=memoryPR incoming that applies this on every launch path (launcher, installer, desktop override, packaged autostart drop-in, migration). Bitwarden and other Electron apps with fixed-size dialogs have the same exposure; the trade-off (the app renders at standard size instead of following the text scale; in-app Ctrl+= compensates) is documented in the drop-in.
The proper fix belongs to 1Password (size fixed dialogs in CSS px, or make them resizable) — worth reporting upstream too, but Omarchy controls the trigger, so a guard here helps users today.
Environment
- Omarchy 4.0.1-1, Hyprland 0.56.2
- 1Password 8.12.32 (conceptually matches the 8.11.x reports in #2016)
- Monitor 3840x2160 @ scale 2;
text-scaling-factor1.3636 (set byomarchy display text size 16)
(No screenshot: Omarchy correctly tags 1Password no_screen_share, captures come out black.)
View raw text
## Summary
`omarchy display text size` (and the Display panel's Text size slider) sets GNOME's `text-scaling-factor`. Chromium/Electron apps **multiply that factor into their device scale factor**, which shrinks the usable layout area of any fixed-size window by the same factor. 1Password's SSH authorization prompt is such a window — ~402x371 logical px with min size = max size — so at text size 16 (factor 1.3636) about 26% of the dialog's content, including the authorize button, is pushed off-window.
This is the root cause behind #2016 ("1Password authorization window cut off"), which was closed without a fix and attributed to a 1Password regression. It also explains the confusing per-machine variance reported there (same monitor scale, different outcome): the trigger is the *text* scale, not the monitor scale.
## Reproduce
1. `omarchy display text size 16` (any value above 12 works; bigger is worse)
2. Restart 1Password so it picks the factor up, enable its SSH agent
3. Trigger any SSH signature, e.g. without touching the network:
```bash
ssh-add -L > /tmp/k.pub
SSH_AUTH_SOCK=~/.1password/agent.sock ssh-keygen -Y sign -f /tmp/k.pub -U -n test /etc/hostname
```
4. The authorization dialog appears with its checkbox/buttons clipped.
The dialog cannot be rescued compositor-side: it reports min size = max size, so `size` window rules and `hl.dsp.window.resize(...)` are silently ignored — which is why the window-rule attempts in #2016 only ever affected the main window.
## Root cause, measured
Chromium computes its device scale on Wayland as `monitor scale x text-scaling-factor`. Verified with a scratch Chromium and CDP (`Runtime.evaluate` on `window.devicePixelRatio` via `--remote-debugging-port`), on a 2x monitor with text size 16 (factor 1.3636):
| Launch | devicePixelRatio |
|---|---|
| baseline | **2.71875** (= 2 x 1.36) |
| `GDK_DPI_SCALE=0.733` | 2.71875 — no effect on Chromium |
| `--force-device-scale-factor=2` | 4.0 — multiplies, worse |
| `GSETTINGS_BACKEND=memory` | **2.0 — fixed** |
The window frame stays at its fixed logical size while the app lays out at the inflated DPR, so the dialog's 402 logical px become `402 x 2 / 2.72 ≈ 295` CSS px of layout — content designed for 402 gets clipped. The same math applies to the main window (the 875x600 `floating-window` tag default becomes ~643 effective px — the "1Password window too small" complaints).
## Fix
Launch 1Password with `GSETTINGS_BACKEND=memory`: in-process gsettings reads come back as defaults, so it renders at the plain monitor scale and every fixed-size dialog gets its full designed layout (the SSH prompt even sizes itself taller, 402x426 here, everything visible). Dark/light detection is portal-based and keeps working.
One gotcha makes placement non-obvious: **1Password rewrites `~/.config/autostart/1password.desktop` on startup**, so the env cannot live in the autostart desktop file. Since Omarchy runs XDG autostart entries as `app-<name>@autostart.service` units, a systemd user drop-in survives:
```ini
# /etc/systemd/user/[email protected]/text-scaling.conf
[Service]
Environment=GSETTINGS_BACKEND=memory
```
PR incoming that applies this on every launch path (launcher, installer, desktop override, packaged autostart drop-in, migration). Bitwarden and other Electron apps with fixed-size dialogs have the same exposure; the trade-off (the app renders at standard size instead of following the text scale; in-app Ctrl+= compensates) is documented in the drop-in.
The proper fix belongs to 1Password (size fixed dialogs in CSS px, or make them resizable) — worth reporting upstream too, but Omarchy controls the trigger, so a guard here helps users today.
## Environment
- Omarchy 4.0.1-1, Hyprland 0.56.2
- 1Password 8.12.32 (conceptually matches the 8.11.x reports in #2016)
- Monitor 3840x2160 @ scale 2; `text-scaling-factor` 1.3636 (set by `omarchy display text size 16`)
(No screenshot: Omarchy correctly tags 1Password `no_screen_share`, captures come out black.)
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:33 UTC