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.
Background switcher times out with many wallpapers: image picker instantiates every slide
Reported by emkcloud · filed Sep 21, 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?
- 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. So far: in the audited area (menu) — decided by agents · verified; matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.
Original report
Summary
With a few hundred images in the theme's backgrounds folder, SUPER+CTRL+SPACE (or omarchy-theme-bg-switcher) no longer opens. The terminal reports:
omarchy-shell is not responding
Image selector failed to accept requestSmall folders (a handful of images) open instantly.
Environment
- Omarchy 4.0.4-1 (
omarchypackage) - Hyprland session,
omarchy-shellrunning (quickshell -n -p /usr/share/omarchy/shell)
Steps to reproduce
- Put ~500 images in
~/.config/omarchy/backgrounds/<theme>/(a wallpaper collection installed by a plugin does this). - Press
SUPER+CTRL+SPACE, or runomarchy-theme-bg-switcherfrom a terminal. - The image selector never appears; the two errors above are printed.
With OMARCHY_SHELL_IPC_TIMEOUT=15s omarchy-theme-bg-switcher the carousel does appear, after a few seconds.
Root cause (I think)
bin/omarchy-theme-bg-switchercallsomarchy-menu-imageswithout--lazy-thumbnails, whilebin/omarchy-theme-switcher:117passes it. So the background selector eagerly generates a thumbnail for every image and hands the full rows payload to the picker.bin/omarchy-menu-images:284invokesomarchy-shell image-selector open …, andbin/omarchy-shell:58enforces a hard 2s IPC timeout, so anything slower is reported as "omarchy-shell is not responding".- The picker creates one delegate per image with
Repeater { model: root.imageArray.length }(shell/plugins/image-picker/ImagePicker.qml:437); each delegate buildsShapemasks plus alayer/MultiEffect(:469-519). ARepeaterinstantiates all of them at once, which blocks the shell main thread for seconds; theopenIPC response is only delivered after that event-loop turn, so the caller times out at 2s. - Measurements on my machine: a directory with 3 files opens instantly; with ~500 files
opentakes >2s and fails, and it does complete when the timeout is raised. Passing synthetic (non-existent) rows is fast, which points at the delegate building/rendering rather than parsing the payload.
This seems distinct from #8262 (empty directory hangs the caller).
Suggested fixes
- Preferred: make the picker lazy/windowed (a horizontal
ListView/PathView, or a windowedRepeaterthat only builds the visible ±N slides) so delegate count does not scale with the number of images. - Cheap: pass
--lazy-thumbnailsinomarchy-theme-bg-switcher, matchingomarchy-theme-switcher, and/or raise/parameterize the IPC timeout for theopencall. - Worth keeping in mind: plugins legitimately install hundreds of wallpapers into
~/.config/omarchy/backgrounds/<theme>/, so the built-in switcher should scale.
Workaround
OMARCHY_SHELL_IPC_TIMEOUT=15s omarchy-theme-bg-switcher, or keep fewer images in the folder.
View raw text
### Summary
With a few hundred images in the theme's backgrounds folder, `SUPER+CTRL+SPACE` (or `omarchy-theme-bg-switcher`) no longer opens. The terminal reports:
```
omarchy-shell is not responding
Image selector failed to accept request
```
Small folders (a handful of images) open instantly.
### Environment
- Omarchy 4.0.4-1 (`omarchy` package)
- Hyprland session, `omarchy-shell` running (`quickshell -n -p /usr/share/omarchy/shell`)
### Steps to reproduce
1. Put ~500 images in `~/.config/omarchy/backgrounds/<theme>/` (a wallpaper collection installed by a plugin does this).
2. Press `SUPER+CTRL+SPACE`, or run `omarchy-theme-bg-switcher` from a terminal.
3. The image selector never appears; the two errors above are printed.
With `OMARCHY_SHELL_IPC_TIMEOUT=15s omarchy-theme-bg-switcher` the carousel does appear, after a few seconds.
### Root cause (I think)
- `bin/omarchy-theme-bg-switcher` calls `omarchy-menu-images` **without** `--lazy-thumbnails`, while `bin/omarchy-theme-switcher:117` passes it. So the background selector eagerly generates a thumbnail for every image and hands the full rows payload to the picker.
- `bin/omarchy-menu-images:284` invokes `omarchy-shell image-selector open …`, and `bin/omarchy-shell:58` enforces a hard **2s** IPC timeout, so anything slower is reported as "omarchy-shell is not responding".
- The picker creates one delegate per image with `Repeater { model: root.imageArray.length }` (`shell/plugins/image-picker/ImagePicker.qml:437`); each delegate builds `Shape` masks plus a `layer`/`MultiEffect` (`:469-519`). A `Repeater` instantiates **all** of them at once, which blocks the shell main thread for seconds; the `open` IPC response is only delivered after that event-loop turn, so the caller times out at 2s.
- Measurements on my machine: a directory with 3 files opens instantly; with ~500 files `open` takes >2s and fails, and it does complete when the timeout is raised. Passing synthetic (non-existent) rows is fast, which points at the delegate building/rendering rather than parsing the payload.
This seems distinct from #8262 (empty directory hangs the caller).
### Suggested fixes
- Preferred: make the picker lazy/windowed (a horizontal `ListView`/`PathView`, or a windowed `Repeater` that only builds the visible ±N slides) so delegate count does not scale with the number of images.
- Cheap: pass `--lazy-thumbnails` in `omarchy-theme-bg-switcher`, matching `omarchy-theme-switcher`, and/or raise/parameterize the IPC timeout for the `open` call.
- Worth keeping in mind: plugins legitimately install hundreds of wallpapers into `~/.config/omarchy/backgrounds/<theme>/`, so the built-in switcher should scale.
### Workaround
`OMARCHY_SHELL_IPC_TIMEOUT=15s omarchy-theme-bg-switcher`, or keep fewer images in the folder.
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
- Related PRpr/12819· 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.
- Decided by agents · verified: in the audited area (menu)
- Decided by agents · verified: matches no known issue
The outcome (valid, duplicate, not a bug, …) is not decided yet.