~/work/owlryLive

Owlry

Lightweight Wayland application launcher built in Rust with GTK4 and Layer Shell — UI, daemon, and every provider in one binary. 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.