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.
Polkit dialog elides ~80% of a long command instead of wrapping it
Reported by forlovas · filed Sep 2, 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
System details
Intel i7-7700K, AMD Radeon RX 5700 (Navi 10), Omarchy 4.0.1, quickshell 0.3.1, DP-1 3840x2160 @ scale 1
What's wrong?
What happens
The polkit dialog's justification line — the one that tells you **what you are
about to authorise as root** — is a fixed-height, single-line Text withelide: Text.ElideMiddle. A long command is cut in the middle, and most of it
never reaches the screen.
Measured with a 514-character justification: **~102 characters rendered, ~80%
hidden.**
A ~100 character budget is not a corner case. A pkexec on a moderately nested
path reaches it — the call that prompted this was 103 characters and was already
being cut.
Expected
The justification should wrap onto a few lines rather than being elided.
Concretely: wrapMode set, elide dropped (or kept only as a last-resort cap
after N lines), and the containing Rectangle's height: Style.space(28)
following the text instead of being fixed.
Not by widening the box. The existing `Math.min(..., panel.width -
Style.gapsOut * 2)` already permits 3830px on this display, and a single line
that long at 11px would be unreadable — a wall of text spanning a 4K monitor is
not better than a truncated one. The readable answer is a bounded measure,
something in the range the card itself already occupies, with the text flowing
onto additional lines and the dialog growing downward.
Capping at a handful of lines and eliding only past that would keep pathological
input from turning the dialog into a page, while still showing the whole of any
realistic command.
Steps to reproduce
ARG=$(for i in $(seq -w 1 120); do printf "%s-" "$i"; done) # 480 chars
pkexec /usr/bin/true "$ARG"The numbered markers make the cut point directly readable:
Authorize running '/usr/bin/true 001-002-003-004-005-006- ... -112-113-114-115-116-117-118-119-120-'Where
shell/plugins/polkit/PolkitAgent.qml, current main (verified unchanged
against the packaged 4.0.1 copy — main differs only by two addedtextFormat: Text.PlainText lines):
Rectangle {
width: Math.min(justificationText.implicitWidth + Style.space(24),
panel.width - Style.gapsOut * 2)
height: Style.space(28)
...
Text {
id: justificationText
anchors.fill: parent // <- width comes from the Rectangle
...
elide: Text.ElideMiddle
}
}Why this is worth fixing rather than styling
The justification exists so the user can verify what is being authorised. UnderElideMiddle the middle of the command — where the actual subcommand,
destination path or flags usually live — is exactly what is removed, while the
recognisable start and end are kept. The middle is usually the most informative
part of the string, and showing it is the whole job of a prompt that asks you to
check what you are agreeing to.
View raw text
### System details
Intel i7-7700K, AMD Radeon RX 5700 (Navi 10), Omarchy 4.0.1, quickshell 0.3.1, DP-1 3840x2160 @ scale 1
### What's wrong?
## What happens
The polkit dialog's justification line — the one that tells you **what you are
about to authorise as root** — is a fixed-height, single-line `Text` with
`elide: Text.ElideMiddle`. A long command is cut in the middle, and most of it
never reaches the screen.
Measured with a 514-character justification: **~102 characters rendered, ~80%
hidden.**
A ~100 character budget is not a corner case. A `pkexec` on a moderately nested
path reaches it — the call that prompted this was 103 characters and was already
being cut.
## Expected
**The justification should wrap onto a few lines rather than being elided.**
Concretely: `wrapMode` set, `elide` dropped (or kept only as a last-resort cap
after N lines), and the containing `Rectangle`'s `height: Style.space(28)`
following the text instead of being fixed.
**Not by widening the box.** The existing `Math.min(..., panel.width -
Style.gapsOut * 2)` already permits 3830px on this display, and a single line
that long at 11px would be unreadable — a wall of text spanning a 4K monitor is
not better than a truncated one. The readable answer is a bounded measure,
something in the range the card itself already occupies, with the text flowing
onto additional lines and the dialog growing downward.
Capping at a handful of lines and eliding only past that would keep pathological
input from turning the dialog into a page, while still showing the whole of any
realistic command.
## Steps to reproduce
```bash
ARG=$(for i in $(seq -w 1 120); do printf "%s-" "$i"; done) # 480 chars
pkexec /usr/bin/true "$ARG"
```
The numbered markers make the cut point directly readable:
```
Authorize running '/usr/bin/true 001-002-003-004-005-006- ... -112-113-114-115-116-117-118-119-120-'
```
## Where
`shell/plugins/polkit/PolkitAgent.qml`, current `main` (verified unchanged
against the packaged 4.0.1 copy — `main` differs only by two added
`textFormat: Text.PlainText` lines):
```qml
Rectangle {
width: Math.min(justificationText.implicitWidth + Style.space(24),
panel.width - Style.gapsOut * 2)
height: Style.space(28)
...
Text {
id: justificationText
anchors.fill: parent // <- width comes from the Rectangle
...
elide: Text.ElideMiddle
}
}
```
## Why this is worth fixing rather than styling
The justification exists so the user can verify what is being authorised. Under
`ElideMiddle` the middle of the command — where the actual subcommand,
destination path or flags usually live — is exactly what is removed, while the
recognisable start and end are kept. The middle is usually the most informative
part of the string, and showing it is the whole job of a prompt that asks you to
check what you are agreeing to.
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:38 UTC