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.
Apps submenu empty for cloned/third-party menu plugins (shell.appLibrary null) since 4.0.3
Reported by Doghouse-Mike · filed Sep 8, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #10661 (R-860). 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
After updating to Omarchy 4.0.3, the Apps submenu in the Omarchy menu (the launcher) is empty — "0 entries" / "Nothing here yet" — for any menu plugin that isn't the first-party omarchy.menu (e.g. a theme's cloned copy created via omarchy plugin clone omarchy.menu, which is how per-theme menu customization is documented/supported).
What was expected
The Apps submenu should list installed applications, same as it does for the stock (unmodified) menu.
Root cause (traced)
This looks like a regression from the 4.0.3 change that moved the Apps submenu from a bash .desktop enumeration to Quickshell's native DesktopEntries service (see the comment in shell/plugins/menu/Menu.qml: "... (DesktopEntries) instead of a bash enumeration, so they carry image icons, launch feedback, and uninstall support like the launcher").
In shell/shell.qml, createScopedPluginShell() builds each plugin's PluginShellApi with:
appLibrary: shell.manifestHasKind(manifest, "menu")
? shell.pluginAppLibraryFor(cacheKey, key) : null,For a cloned menu plugin (manifest kinds: ["menu","bar-widget"], confirmed via a live dump of the manifest object), manifestHasKind(manifest, "menu") correctly evaluates true, but shell.pluginAppLibraryFor(cacheKey, key) still returns null for the plugin — I confirmed this live by instrumenting a cloned Menu.qml with a periodic Timer that logged root.shell (non-null, correct PluginShellApi with an appLibrary property present in its key list) vs root.shell.appLibrary (null).
This is not a DesktopEntries/Quickshell problem: a standalone quickshell -p test.qml script run in the same session correctly reported DesktopEntries.applications.values.length as 108 after ~3s (it populates asynchronously). The bug is specifically in the shell.appLibrary → third-party "menu"-kind plugin hand-off in shell.qml; AppLibrary.qml and DesktopEntries both work fine on their own.
Net effect: Menu.qml's root.appLibrary (root.shell ? root.shell.appLibrary : null) resolves to null, so mergeAppRows() returns early and the Apps submenu never gets populated, for every third-party/cloned menu plugin.
Steps to reproduce
omarchy plugin clone omarchy.menu(this is the documented way to theme/customize the menu, and switches the bar to the clone).- Restart the shell (
omarchy restart shell). - Open the menu and navigate to Apps.
- Apps shows 0 entries, even though
/usr/share/applicationsand~/.local/share/applicationshave valid.desktopfiles and the stockomarchy.menu(before cloning) shows them fine.
Environment
omarchy 4.0.3-1quickshell 0.3.1-1(Quickshell 0.3.1)- Hyprland 0.56.2, Arch Linux
Screenshot
Attached: the cloned menu's Apps submenu showing "0 ENTRY" / "Nothing here yet" (theme is a custom clone, but the underlying bug reproduces with any cloned menu plugin — it's not theme-specific).
Workaround
In the affected clone's Menu.qml, I worked around it by falling back to a locally-built app library (reading DesktopEntries.applications.values directly plus gtk-launch) whenever root.shell.appLibrary is null, rather than relying on the host-supplied appLibrary. Happy to share the patch if useful, though the real fix belongs in shell.qml's plugin API wiring.
Aside
Separately, omarchy debug (listed in omarchy --help under both "Common commands" and the debug group) currently fails with Unknown Omarchy command: omarchy debug on this same install, even though /usr/bin/omarchy-debug exists and runs fine when invoked directly. Didn't want to conflate two bugs in one issue — let me know if a separate report is wanted for that.
View raw text
### What happened After updating to Omarchy 4.0.3, the Apps submenu in the Omarchy menu (the launcher) is empty — "0 entries" / "Nothing here yet" — for any menu plugin that isn't the first-party `omarchy.menu` (e.g. a theme's cloned copy created via `omarchy plugin clone omarchy.menu`, which is how per-theme menu customization is documented/supported). ### What was expected The Apps submenu should list installed applications, same as it does for the stock (unmodified) menu. ### Root cause (traced) This looks like a regression from the 4.0.3 change that moved the Apps submenu from a bash `.desktop` enumeration to Quickshell's native `DesktopEntries` service (see the comment in `shell/plugins/menu/Menu.qml`: "... (DesktopEntries) instead of a bash enumeration, so they carry image icons, launch feedback, and uninstall support like the launcher"). In `shell/shell.qml`, `createScopedPluginShell()` builds each plugin's `PluginShellApi` with: ```qml appLibrary: shell.manifestHasKind(manifest, "menu") ? shell.pluginAppLibraryFor(cacheKey, key) : null, ``` For a cloned menu plugin (manifest `kinds: ["menu","bar-widget"]`, confirmed via a live dump of the manifest object), `manifestHasKind(manifest, "menu")` correctly evaluates `true`, but `shell.pluginAppLibraryFor(cacheKey, key)` still returns `null` for the plugin — I confirmed this live by instrumenting a cloned `Menu.qml` with a periodic `Timer` that logged `root.shell` (non-null, correct `PluginShellApi` with an `appLibrary` property present in its key list) vs `root.shell.appLibrary` (`null`). This is *not* a `DesktopEntries`/Quickshell problem: a standalone `quickshell -p test.qml` script run in the same session correctly reported `DesktopEntries.applications.values.length` as 108 after ~3s (it populates asynchronously). The bug is specifically in the `shell.appLibrary` → third-party "menu"-kind plugin hand-off in `shell.qml`; `AppLibrary.qml` and `DesktopEntries` both work fine on their own. Net effect: `Menu.qml`'s `root.appLibrary` (`root.shell ? root.shell.appLibrary : null`) resolves to `null`, so `mergeAppRows()` returns early and the Apps submenu never gets populated, for every third-party/cloned menu plugin. ### Steps to reproduce 1. `omarchy plugin clone omarchy.menu` (this is the documented way to theme/customize the menu, and switches the bar to the clone). 2. Restart the shell (`omarchy restart shell`). 3. Open the menu and navigate to Apps. 4. Apps shows 0 entries, even though `/usr/share/applications` and `~/.local/share/applications` have valid `.desktop` files and the stock `omarchy.menu` (before cloning) shows them fine. ### Environment - `omarchy 4.0.3-1` - `quickshell 0.3.1-1` (Quickshell 0.3.1) - Hyprland 0.56.2, Arch Linux ### Screenshot Attached: the cloned menu's Apps submenu showing "0 ENTRY" / "Nothing here yet" (theme is a custom clone, but the underlying bug reproduces with any cloned menu plugin — it's not theme-specific). ### Workaround In the affected clone's `Menu.qml`, I worked around it by falling back to a locally-built app library (reading `DesktopEntries.applications.values` directly plus `gtk-launch`) whenever `root.shell.appLibrary` is null, rather than relying on the host-supplied `appLibrary`. Happy to share the patch if useful, though the real fix belongs in `shell.qml`'s plugin API wiring. ### Aside Separately, `omarchy debug` (listed in `omarchy --help` under both "Common commands" and the `debug` group) currently fails with `Unknown Omarchy command: omarchy debug` on this same install, even though `/usr/bin/omarchy-debug` exists and runs fine when invoked directly. Didn't want to conflate two bugs in one issue — let me know if a separate report is wanted for that.
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.
No decision has been recorded yet.