Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-5108GitHub issuePublicReceived

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.

Received and recorded verbatim. Nothing has been checked yet.

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

Theme switcher open + theme-set take seconds: preload runs foreground (1.1s), browser policy refresh serial (1.0-1.5s), selector prep 300ms+ warmrevision 1 · captured 2026-10-04 12:10 UTC via poll

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:
   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.

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.