Proof Portal
Omarchy
ProbeLabsviewing a historical runA 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.
Changes & defects
The chronological log of the proof layer — semantic changes (intended units of work) interleaved with the defects found and fixed, newest first.
- 13 hours agoRequirementsupdated
7 requirements updated
When fingerprint authentication is available, the lock view shall show the fingerprint indicator next to the password field.SW-REQ-260912-41VVomarchy-apply-lock shall test fingerprint enrollment by invoking /usr/bin/fprintd-list for the target user.SW-REQ-260912-S154When /usr/bin/fprintd-list reports that the target user has no enrolled fingerprint, or is not executable, omarchy-apply-lock shall remove /etc/pam.d/omarchy-lock-fingerprint and the fprintd resume hook.SW-REQ-260912-Y0WTWhen the fast signature (directory path + mtime per image dir) matches, the script serves cached rows without rescanning image files.SW-REQ-260922-43HQScores tier exact label, whole-word app name, label prefix, label substring, name text, then description.SW-REQ-260922-SJ7PThe pipeline detects video paths by extension and sends each media file to a format-appropriate converter.SW-REQ-260929-THMB - 14 hours agoRequirementsadded
6 requirements added
The lock service shall report the reader unavailable after 3 probe answers in a row that are neither a listed print nor a definite none.SW-REQ-261004-296XThe emoji picker's search lists an emoji exactly when three things hold.SW-REQ-261004-JATYA failed probe is an answer from /usr/bin/fprintd-list that neither lists an enrolled fingerprint nor reports that the target user has none.SW-REQ-261004-SP65When the lock screen's enrollment probe finishes, the lock service shall classify the answer.SW-REQ-261004-V813The lock view's password field shall consume an auto-repeated key press without editing the text, except for Backspace and Delete.SW-REQ-261004-VVN2Before omarchy-apply-lock writes the PAM fingerprint stack, it shall install the fprintd resume hook (/usr/lib/systemd/system-sleep/fprintd-resume) and the fprintd stop-timeout drop-in, and reload systemd.SW-REQ-261004-YNBG - 2 days agoRequirementsadded
1 requirement added
- 2 days agoKnown issueLowOpenKI-MENU-REMOVE-THEME-NO-THEMESRemove > Theme shows on a stock install, where the remover has no theme to offer and the row only closes the menu
Remove > Theme runs omarchy-theme-remove with no terminal (default/omarchy/omarchy-menu.jsonc:295).
ProbeLabs1 requirement - 3 days agoRequirementsupdated
8 requirements updated
omarchy-hyprland-session-locked shall exit 0 when any monitor lists LOCK in solitaryBlockedBy.SW-REQ-260912-EH0KUnparseable input (after stripping), non-object JSON, and non-object entries yield an empty or skipped item set; no exception escapes the parser.SW-REQ-260922-3T3Fopen(payload) dispatches on mode: select/input open the dmenu flow, anything else opens the resolved route.SW-REQ-260922-50REA code:N binding shows the keysym resolved from the compiled keymap, or the built-in fallback table when xkbcli cannot resolve it; GRAVE displays as ~.SW-REQ-260922-9DMSThe parser strips full-line // comments and trailing commas before JSON parsing, so the authored JSONC parses to its declared entries.SW-REQ-260922-E4J2The select payload carries mode=select, prompt, options, selectionFile, and doneFile, plus integer width/maxHeight only when given.SW-REQ-260922-Q6ZS - 4 days agoKnown issueLowOpenKI-MENU-OPEN-QUADRATICOpening a select menu walks its rows quadratically (omacom/omarchy#10601)
Opening a long select menu does work that grows with the square of its length, because the menu measures the whole list again after each row is added.
ProbeLabs1 requirement - 4 days agoRequirementsupdated
26 requirements updated
A route matching no id and no alias resolves to the literal input.SW-REQ-260922-74BZWhen the done file exists but the selection file is empty (cancel), the script prints nothing and exits 1.SW-REQ-260922-9ABDThe listing matches the requested formats case-insensitively, prunes dotfiles and dot-directories, and sorts rows by modification time descending.SW-REQ-260922-HR29A file chooser exit status above 1 sends a critical 'Could not share' notification and exits 1; an empty pick exits 0 silently.SW-REQ-260922-JREHenable offers disabled plugins; disable offers enabled canDisable plugins; clone offers first-party plugins no installed clone points back at; remove offers non-first-party plugins.SW-REQ-260922-KRBHWhen the fast signature differs, the script rebuilds rows from a full per-file scan and rewrites the rows cache plus signatures.SW-REQ-260922-MH9B - 5 days agoKnown issues1545
60 known issues
LowImported bash functions bypass the trusted-PATH pin in apply-lock's root branchOpenKI-APPLY-LOCK-EXPORTED-FUNCTIONS-ROOTMediumFingerprint gate fail-open: substring grep treats not-enrolled or failed fprintd-list probes as enrolledFixedKI-APPLY-LOCK-FPRINT-GATE-FAIL-OPENLowUnmappable PKEXEC_UID degrades target_user to root, so the fingerprint probe asks about the wrong accountOpenKI-APPLY-LOCK-TARGET-USER-DEGRADES-ROOTLowFailed/empty readlink result stored as backgroundPath, wiping a good lock-screen wallpaperReviewedKI-LOCK-EMPTY-READLINK-WIPES-WALLPAPERMediumLock-service fingerprint probe fail-open: substring grep treats zero-enrollment fprintd-list output as configuredFixedKI-LOCK-FPRINT-PROBE-FAIL-OPENLowfingerprintPam.start() returning false disables fingerprint auth for the rest of the lock with no retryFixedKI-LOCK-FPRINT-START-FAIL-NO-RETRY - 6 days agoRequirementsadded
3 requirements added
The merged item tree is addressable by id.SW-REQ-260929-B8N9After the first filter keystroke or submenu move, the card top edge and the maximum rows height freeze at their current values.SW-REQ-260929-DXFJRow selection follows the pointer only after it genuinely moves past the gate threshold.SW-REQ-260929-T378 - last week
- last weekRequirementsupdated
1 requirement updated
- last weekRequirementsupdated
29 requirements updated
Users reach system actions, settings, and applications through the Omarchy menu.STK-REQ-260922-XTNRBinds Hyprland reports as dispatcher __lua are shown with resolved keys from the source-derived cache and remain dispatchable.SW-REQ-260922-0W96The rewrite touches only the plain $(reader) form, mapping it to the captured slot.SW-REQ-260922-2JZTWhen no row is selectable, the menu shows no cursor at all rather than parking one on a row Enter cannot run.SW-REQ-260922-3JG5finishRequest with no active request or no done file just closes the menu.SW-REQ-260922-3VTNThe menu discards a guard batch that exits nonzero or by signal, keeping the last complete result set in effect.SW-REQ-260922-4079 - last weekRequirementsadded
1 requirement added
- last weekKnown issueMediumOpenKI-MENU-JSONC-COMMA-IN-STRINGstripJsonc comma regex rewrites strings that carry a comma before } or ] (omacom/omarchy#13250)
A menu label or action whose text has a comma directly before } or ] is silently changed: the comma is removed.
ProbeLabs1 requirement - 2 weeks agoRequirementsupdated
8 requirements updated
omarchy-system-sleep-lock shall derive the wait budget from the logind InhibitDelayMaxUSec property.SW-REQ-260912-FAWVomarchy-update-lock run shall open the update lock file on a dedicated file descriptor.SW-REQ-260912-FVHSWhen the budget expires before the session reports secure, omarchy-system-sleep-lock shall print an unsecured-suspend diagnostic on stderr.SW-REQ-260912-H2YFWhen the user locks the session and the ttfx screensaver is running, omarchy-system-lock shall send SIGTERM to ttfx.SW-REQ-260912-MXQGWhen the stranded-lock probe exits 0, the service holds no lock, and password PAM exists, the lock service shall take the session lock once.SW-REQ-260912-WJYMThe system shall report the compositor session-lock state as an exit code.SYS-REQ-260912-FRG0 - 2 weeks agoRequirementsadded
59 requirements added
Users reach system actions, settings, and applications through the Omarchy menu.STK-REQ-260922-XTNRBinds Hyprland reports as dispatcher __lua are shown with resolved keys from the source-derived cache and remain dispatchable.SW-REQ-260922-0W96The rewrite touches only the plain $(reader) form, mapping it to the captured slot.SW-REQ-260922-2JZTWhen no row is selectable, the menu shows no cursor at all rather than parking one on a row Enter cannot run.SW-REQ-260922-3JG5Unparseable input (after stripping), non-object JSON, and non-object entries yield an empty or skipped item set; no exception escapes the parser.SW-REQ-260922-3T3FfinishRequest with no active request or no done file just closes the menu.SW-REQ-260922-3VTN - 3 weeks agoRequirementsadded
21 requirements added
The user shall lock the session on demand.STK-REQ-260912-XJ5Domarchy-update-lock held shall exit 0 only when OMARCHY_UPDATE_LOCK_FD names an open descriptor.SW-REQ-260912-0Y70When fingerprint authentication is available, the lock view shall show the fingerprint indicator next to the password field.SW-REQ-260912-41VVomarchy-hyprland-session-locked shall exit 0 when any monitor lists LOCK in solitaryBlockedBy.SW-REQ-260912-EH0KWhen omarchy-apply-lock runs with EUID 0, it shall replace the inherited PATH with /usr/share/omarchy/bin:/usr/local/bin:/usr/bin:/bin before it runs any optional command.SW-REQ-260912-EKJPomarchy-system-sleep-lock shall derive the wait budget from the logind InhibitDelayMaxUSec property.SW-REQ-260912-FAWV - last monthKnown issueMediumReviewedKI-260930-2FBEomarchy-system-lock exits 0 when lock engagement fails, leaving the dismissed Lock row silent
bin/omarchy-system-lock line 10 runs `omarchy-shell lock lock >/dev/null` and never checks the exit status.
1 requirement - last monthKnown issueMediumReviewedKI-MENU-SELECT-POLL-DEADLOCKomarchy-menu-select hangs forever when the summoned menu dies before writing done_file
The done_file poll in bin/omarchy-menu-select (lines 93-95) has no deadline and no peer-liveness probe.
7 requirements - UndatedKnown issues27
9 known issues
Mediumomarchy-apply-lock rewrites the lock PAM stacks in place; an interrupted run leaves a torn stack on the live pathReviewedKI-APPLY-LOCK-PAM-NONATOMIC-WRITELowomarchy-hyprland-session-locked has no deadline on hyprctl -j monitors; a stalled compositor IPC hangs the probeReviewedKI-LOCK-PROBE-HYPRCTL-NO-TIMEOUTLowMenu guard batch runs as one bash child with no deadline; a blocking guard freezes guard answers for the sessionReviewedKI-MENU-GUARD-BATCH-NO-DEADLINELowparseMenuJsonc reads a top-level JSON array as entries with ids 0, 1, … (omacom/omarchy#13492)OpenKI-MENU-JSONC-ARRAY-ROOTLowA whole-line comment in a CR-only menu file swallows the rest of the fileOpenKI-MENU-JSONC-CR-LINE-ENDINGSLowstripJsonc removes only whole-line // comments; an inline comment tail empties the whole file (omacom/omarchy#13493)OpenKI-MENU-JSONC-INLINE-COMMENT
End of timeline