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 menu permanently empty (DesktopEntries never populates in full omarchy-shell, though isolated Quickshell repro works)
Reported by getfunc999 · filed Sep 17, 2026 · open at source
This defect is tracked under R-203. This report describes the same defect, so it is folded under it in the inbox.
Earliest report of this defect: R-405 (filed Sep 17, 2026).
Decided by agents · verified· Oct 8, 2026
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?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
System details
Intel Core i5-7300U, Intel HD Graphics 620, Omarchy 4.0.4-1, Quickshell 0.3.1-1
What's wrong?
The Apps category in the Omarchy shell menu (omarchy-menu) is permanently empty ("Nothing here yet"), even though 100 .desktop files exist on disk (81 in /usr/share/applications, 19 in ~/.local/share/applications) and XDG_DATA_DIRS/XDG_DATA_HOME are correctly set in the live omarchy-shell process environment.
Root cause found: Quickshell's DesktopEntries.applications singleton populates asynchronously after startup (confirmed via a minimal standalone QML reproduction: DesktopEntries.applications.values.length is 0 immediately at Component.onCompleted, then grows incrementally — one valuesChanged signal per entry — reaching 66+ entries within a few seconds). In an isolated minimal Quickshell process this always completes correctly and the change signal fires reliably.
However, inside the full omarchy-shell process (with the normal full plugin set loaded), the Apps menu never populates — not on first open, not after omarchy-shell shell rescanPlugins, and not even after a full omarchy restart shell (fresh process, confirmed via new PID). This suggests something in the full shell's plugin/component graph prevents DesktopEntries.applications from ever completing its scan or prevents its valuesChanged signal from reaching AppLibrary.qml's listener (shell/services/AppLibrary.qml, Connections { target: DesktopEntries.applications; onValuesChanged: ... }), which is what should trigger Menu.qml's mergeAppRows() refresh (shell/plugins/menu/Menu.qml:912-916).
Steps to reproduce
- Open the Omarchy menu, navigate to Apps
- Observe: "Nothing here yet" (empty state), despite installed applications existing
- Try
omarchy-shell shell rescanPlugins— no change - Try
omarchy restart shell(full process restart, confirmed new PID) — still empty
Isolated reproduction (proves DesktopEntries itself is async, and that this specific system's full shell fails to ever get/reflect a populated list)
import QtQuick
import Quickshell
Item {
Component.onCompleted: console.log("START len=" + DesktopEntries.applications.values.length)
Timer {
interval: 3000
running: true
onTriggered: {
console.log("AFTER_3S len=" + DesktopEntries.applications.values.length)
Qt.quit()
}
}
}Run with: quickshell -n -p <dir containing shell.qml above>
Output:
START len=0
AFTER_3S len=66This is expected/correct behavior in isolation — but the equivalent async population + change-signal-driven refresh never visibly completes inside the actual omarchy-shell menu on this machine.
Diagnostic log
Generated via omarchy debug --no-sudo --print, available on request (not attached here to keep the report concise — happy to attach the full /tmp/omarchy-debug.log if useful).
View raw text
### System details
Intel Core i5-7300U, Intel HD Graphics 620, Omarchy 4.0.4-1, Quickshell 0.3.1-1
### What's wrong?
The **Apps** category in the Omarchy shell menu (`omarchy-menu`) is permanently empty ("Nothing here yet"), even though 100 `.desktop` files exist on disk (81 in `/usr/share/applications`, 19 in `~/.local/share/applications`) and `XDG_DATA_DIRS`/`XDG_DATA_HOME` are correctly set in the live `omarchy-shell` process environment.
**Root cause found:** Quickshell's `DesktopEntries.applications` singleton populates *asynchronously* after startup (confirmed via a minimal standalone QML reproduction: `DesktopEntries.applications.values.length` is `0` immediately at `Component.onCompleted`, then grows incrementally — one `valuesChanged` signal per entry — reaching 66+ entries within a few seconds). In an isolated minimal Quickshell process this always completes correctly and the change signal fires reliably.
However, inside the full `omarchy-shell` process (with the normal full plugin set loaded), the Apps menu never populates — not on first open, not after `omarchy-shell shell rescanPlugins`, and not even after a full `omarchy restart shell` (fresh process, confirmed via new PID). This suggests something in the full shell's plugin/component graph prevents `DesktopEntries.applications` from ever completing its scan or prevents its `valuesChanged` signal from reaching `AppLibrary.qml`'s listener (`shell/services/AppLibrary.qml`, `Connections { target: DesktopEntries.applications; onValuesChanged: ... }`), which is what should trigger `Menu.qml`'s `mergeAppRows()` refresh (`shell/plugins/menu/Menu.qml:912-916`).
### Steps to reproduce
1. Open the Omarchy menu, navigate to **Apps**
2. Observe: "Nothing here yet" (empty state), despite installed applications existing
3. Try `omarchy-shell shell rescanPlugins` — no change
4. Try `omarchy restart shell` (full process restart, confirmed new PID) — still empty
### Isolated reproduction (proves DesktopEntries itself is async, and that this specific system's full shell fails to ever get/reflect a populated list)
```qml
import QtQuick
import Quickshell
Item {
Component.onCompleted: console.log("START len=" + DesktopEntries.applications.values.length)
Timer {
interval: 3000
running: true
onTriggered: {
console.log("AFTER_3S len=" + DesktopEntries.applications.values.length)
Qt.quit()
}
}
}
```
Run with: `quickshell -n -p <dir containing shell.qml above>`
Output:
```
START len=0
AFTER_3S len=66
```
This is expected/correct behavior in isolation — but the equivalent async population + change-signal-driven refresh never visibly completes inside the actual `omarchy-shell` menu on this machine.
### Diagnostic log
Generated via `omarchy debug --no-sudo --print`, available on request (not attached here to keep the report concise — happy to attach the full `/tmp/omarchy-debug.log` if useful).
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/13469· confirmed
- Related PRpr/13642· confirmed
- Duplicate ofR-203Apps submenu empty ("Nothing here yet") after upgrade to 4.0.4; downgrade to 4.0.2 restores it· decided by agents · verified
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.