~/work/owlryLive
Owlry
Lightweight Wayland application launcher built in Rust with GTK4 and Layer Shell. The UI, daemon, and every provider ship in one binary. It covers apps, calculator, converter, clipboard, web search and more, with fuzzy tag search, frecency ranking, and Lua-first config.
What it does
A fast, configurable application launcher for Wayland compositors. UI client, a warm-keeping daemon, and every provider compile into a single binary, so the launcher appears instantly. Built-in providers cover apps, PATH commands, a calculator, a unit/currency converter, and power actions; optional providers add clipboard history, emoji, SSH hosts, systemd units, web and filesystem search, each gated behind a cargo feature. Fuzzy search with tags and filter prefixes, frecency ranking, named config profiles, ten GTK4 themes, and dmenu-compatible pipe mode. Configuration is Lua-first. The 2.x rewrite collapsed fifteen AUR packages and a dynamic plugin system into one feature-gated binary.
Problem
Wayland users need a launcher that stays fast while searching applications, commands, calculations, and optional system providers.
The previous plugin packaging split the project across fifteen AUR packages.
Constraints
- Overlay behaviour has to be Wayland-native through GTK4 and Layer Shell.
- Optional providers must not require a dynamic plugin runtime or fragment installation again.
How it's built
- You summon the launcher; the UI client talks to a warm daemon.
- The daemon runs providers for apps, PATH commands, calculator, converter, clipboard, and web search.
- Results are ranked by fuzzy match and frecency.
- IPC and a dmenu-compatible CLI mode drive the same daemon from scripts.
Engineering decisions
Warm daemon behind a small UI client
Keep provider state ready so opening the launcher does not rebuild it.
Trade-off Adds an IPC boundary and a long-running process.
Compile providers into one feature-gated binary
One artifact replaces a dynamic plugin system and fifteen packages.
Trade-off Changing the provider set requires a rebuild.
Expose dmenu-compatible pipe mode
Scripts can reuse the same ranking and provider path as the graphical client.
Trade-off The CLI and UI contracts must evolve together.
Evidence
- Distribution
- 1 binary
- AUR packages
- 15 → 1
- GTK4 themes
- 10
UI, daemon, and providers
Consolidated by the 2.x rewrite
Built-in themes with Lua-first config
Related case study
The project page describes what exists. The case study follows the decisions, constraints, and trade-offs behind it.
Case studyHighlights
- Single-binary architecture UI client, a warm-keeping daemon, and every provider compile into one binary; cargo features gate providers at build time so source installs pick a subset while the AUR build ships everything.
- Wayland-native Built on GTK4 and Layer Shell for proper overlay behaviour, with fuzzy tag search, frecency ranking, filter prefixes, and a dmenu-compatible pipe mode.