efd8352dfb0ebc3002f0a99ee3513879d5b6d7ab
The launcher resolves each entry's icon through Quickshell.iconPath(), which bottoms out in Qt's QIconLoader / QIcon::fromTheme. That engine caches the theme's directory listing — and null results — for the life of the process, and only re-scans when the icon theme or search paths change. Nothing in Quickshell 0.3 exposes a way to invalidate it, and a QML reload doesn't reset it either (QIconLoader is a QtGui process global, not tied to the QML engine). So when a user installs a new app while the shell is running, its .desktop file is picked up live (DesktopEntries is file-watched and the name appears immediately), but its icon resolves to the cached miss and renders blank until the whole shell is restarted. That's a poor "I just installed this" experience. Fix it without a restart by keeping our own on-disk icon index as a fallback. When themed lookup returns empty, iconSource() consults a name->path map built by scanning the XDG icon dirs and /usr/share/ pixmaps (SVGs first, so scalable wins). The scan runs on startup and on a debounced DesktopEntries change — the same signal that already makes names appear — and swapping the iconIndex property re-evaluates every iconSource() binding, so freshly installed icons show up live. Icons Qt can already resolve are untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Omarchy
Omarchy is a beautiful, modern & opinionated Linux distribution by DHH.
Read more at omarchy.org.
Docs
- omarchy-shell — shell host, plugin manifest, IPC,
shell.json, custom bar modules
License
Omarchy is released under the MIT License.
Languages
Shell
57.3%
QML
31.2%
JavaScript
4.1%
Python
2.9%
Go Template
2.5%
Other
2%