~/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.

Solo Engineer · Personal Project · 2025 - present

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.
Owlry · launcher flow

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

UI, daemon, and providers

AUR packages
15 → 1

Consolidated by the 2.x rewrite

GTK4 themes
10

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 study

Highlights

  • 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.