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.
Theme switcher open + theme-set take seconds: preload runs foreground (1.1s), browser policy refresh serial (1.0-1.5s), selector prep 300ms+ warm
Reported by qubiqx · filed Sep 20, 2026Closed upstream on 2026-09-27 by commit fd961e5300c3 (closed by dhh). GitHub close reason: completed.
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?
- Not yet mapped to any requirement or component.
- 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?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
What happened
Pressing SUPER+SHIFT+CTRL+SPACE (Theme menu) takes the better part of a second to open, and picking a theme takes a few seconds before the switch feels complete.
Measured on Omarchy 4.0.4-1, 11th Gen i3-1115G4, Intel UHD, 22 stock themes, current theme: ristretto:
omarchy dev benchmark theme switcher --repeat=3:
- theme index cold 507ms / warm 88ms
- selector prep cold (lazy) 428ms / warm 315ms
- thumbnail cache cold 4479ms / warm 55ms
Individual timings (bash time):
- omarchy-theme-switcher --preload: 1.147s
- omarchy-theme-bg-cache: 0.235s (already backgrounded)
- omarchy-theme-set-browser: 1.028-1.554s (of which omarchy-theme-set-browser-policy: 0.16-0.44s)
- omarchy-theme-set-vscode: 0.25-0.44s
- omarchy-theme-set-templates: 0.017s
- hyprctl reload: 0.11-0.16s, restart-terminal 0.27s, restart-btop 0.27s, rest 0.02-0.14s
Why it is slow (code)
- Apply path pays preload serially.
omarchy-theme-set:346-347:
omarchy-theme-switcher --preload >/dev/null 2>&1
omarchy-theme-bg-cache >/dev/null 2>&1 & Preload (1.1s) is foreground; bg-cache is backgrounded. Every theme set blocks on preload for next-open benefit.
2. Browser refresh dominates hooks. omarchy-theme-set-browser does a privileged policy write + 5x serial refresh_running_browser (chromium --refresh-platform-policy --no-startup-window etc.), each spawning a full browser process. 1.0-1.5s total, and it is the max of the run_parallel group so it sets the floor for every switch.
3. Open path still 400ms warm before UI. Theme index (stat+find per theme) + selector row prep (find/stat/sort/base64 in omarchy-menu-images) even on fast-signature cache hit. Cold open is 5s+ due to vipsthumbnail --size 1536x864.
4. Minor: run_parallel() in omarchy-theme-set:33 uses bash -lc per hook (16x login-shell overhead).
Expected
- Open picker: <200ms warm.
- Apply: shell recolor instant (already is), full switch <1s.
Suggested fixes (cheap, in order)
- Background
theme-switcher --preloadlikebg-cache(add&), or drop it. Saves ~1.1s off every apply. - In
omarchy-theme-set-browser: skip when color.json unchanged; parallelize/background the 5xrefresh_running_browsercalls; only refresh the running browser family. Saves ~1s. bash -lc->bash -cinrun_parallel.- Longer term: pre-generate thumbnails at install/update time, or reduce thumbnail cost; avoid
find -samefile+ re-stat on fast-signature hit in selector prep.
Repro
omarchy dev benchmark theme switcher --repeat=3time omarchy-theme-switcher --preloadtime omarchy-theme-set-browser- Press SUPER+SHIFT+CTRL+SPACE, pick a theme, feel the lag.
Disclosure: this issue was investigated and filed by an AI coding agent (Muse Spark via OpenCode) on behalf of a human user who confirmed the lag and asked me to check for existing issues (none found mentioning theme-switch slowness) and file if valuable.
View raw text
## What happened Pressing SUPER+SHIFT+CTRL+SPACE (Theme menu) takes the better part of a second to open, and picking a theme takes a few seconds before the switch feels complete. Measured on Omarchy 4.0.4-1, 11th Gen i3-1115G4, Intel UHD, 22 stock themes, current theme: ristretto: `omarchy dev benchmark theme switcher --repeat=3`: - theme index cold 507ms / warm 88ms - selector prep cold (lazy) 428ms / warm 315ms - thumbnail cache cold 4479ms / warm 55ms Individual timings (bash `time`): - `omarchy-theme-switcher --preload`: 1.147s - `omarchy-theme-bg-cache`: 0.235s (already backgrounded) - `omarchy-theme-set-browser`: 1.028-1.554s (of which `omarchy-theme-set-browser-policy`: 0.16-0.44s) - `omarchy-theme-set-vscode`: 0.25-0.44s - `omarchy-theme-set-templates`: 0.017s - `hyprctl reload`: 0.11-0.16s, restart-terminal 0.27s, restart-btop 0.27s, rest 0.02-0.14s ## Why it is slow (code) 1. **Apply path pays preload serially.** `omarchy-theme-set:346-347`: ```bash omarchy-theme-switcher --preload >/dev/null 2>&1 omarchy-theme-bg-cache >/dev/null 2>&1 & ``` Preload (1.1s) is foreground; bg-cache is backgrounded. Every `theme set` blocks on preload for next-open benefit. 2. **Browser refresh dominates hooks.** `omarchy-theme-set-browser` does a privileged policy write + 5x serial `refresh_running_browser` (`chromium --refresh-platform-policy --no-startup-window` etc.), each spawning a full browser process. 1.0-1.5s total, and it is the max of the `run_parallel` group so it sets the floor for every switch. 3. **Open path still 400ms warm before UI.** Theme index (stat+find per theme) + selector row prep (find/stat/sort/base64 in `omarchy-menu-images`) even on fast-signature cache hit. Cold open is 5s+ due to `vipsthumbnail --size 1536x864`. 4. Minor: `run_parallel()` in `omarchy-theme-set:33` uses `bash -lc` per hook (16x login-shell overhead). ## Expected - Open picker: <200ms warm. - Apply: shell recolor instant (already is), full switch <1s. ## Suggested fixes (cheap, in order) 1. Background `theme-switcher --preload` like `bg-cache` (add `&`), or drop it. Saves ~1.1s off every apply. 2. In `omarchy-theme-set-browser`: skip when color.json unchanged; parallelize/background the 5x `refresh_running_browser` calls; only refresh the running browser family. Saves ~1s. 3. `bash -lc` -> `bash -c` in `run_parallel`. 4. Longer term: pre-generate thumbnails at install/update time, or reduce thumbnail cost; avoid `find -samefile` + re-stat on fast-signature hit in selector prep. ## Repro 1. `omarchy dev benchmark theme switcher --repeat=3` 2. `time omarchy-theme-switcher --preload` 3. `time omarchy-theme-set-browser` 4. Press SUPER+SHIFT+CTRL+SPACE, pick a theme, feel the lag. --- Disclosure: this issue was investigated and filed by an AI coding agent (Muse Spark via OpenCode) on behalf of a human user who confirmed the lag and asked me to check for existing issues (none found mentioning theme-switch slowness) and file if valuable.
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
- Related PRpr/12248· confirmed
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.
No decision has been recorded yet.