Owlry

AUR Rust License GTK4 Wayland

A lightweight, owl-themed application launcher for Wayland, built with GTK4 and Layer Shell.

Features

  • Modular plugin architecture — Install only what you need
  • Fuzzy search with tags — Fast matching across names, descriptions, and category tags
  • 13 native plugins — Calculator, clipboard, emoji, weather, media, and more
  • Widget providers — Weather, media controls, and pomodoro timer at the top of results
  • Filter prefixes — Scope searches with :app, :cmd, :tag:development, etc.
  • Frecency ranking — Frequently/recently used items rank higher
  • GTK4 theming — System theme by default, with 9 built-in themes
  • Wayland native — Uses Layer Shell for proper overlay behavior
  • Extensible — Create custom plugins in Lua or Rune

Installation

Arch Linux (AUR)

# Minimal core (applications + commands only)
yay -S owlry

# Add individual plugins
yay -S owlry-plugin-calculator owlry-plugin-weather

# Or install bundles:
yay -S owlry-meta-essentials  # calculator, system, ssh, scripts, bookmarks
yay -S owlry-meta-widgets     # weather, media, pomodoro
yay -S owlry-meta-tools       # clipboard, emoji, websearch, filesearch, systemd
yay -S owlry-meta-full        # everything

# For custom Lua/Rune plugins
yay -S owlry-lua   # Lua 5.4 runtime
yay -S owlry-rune  # Rune runtime

Available Packages

Package Description
owlry Core binary with applications and commands
owlry-plugin-calculator Math expressions (= 5+3)
owlry-plugin-system Shutdown, reboot, suspend, lock
owlry-plugin-ssh SSH hosts from ~/.ssh/config
owlry-plugin-clipboard History via cliphist
owlry-plugin-emoji 400+ searchable emoji
owlry-plugin-scripts User scripts
owlry-plugin-bookmarks Firefox, Chrome, Brave, Edge bookmarks
owlry-plugin-websearch Web search (? query)
owlry-plugin-filesearch File search (/ filename)
owlry-plugin-systemd User services with actions
owlry-plugin-weather Weather widget
owlry-plugin-media MPRIS media controls
owlry-plugin-pomodoro Pomodoro timer widget

Build from Source

Dependencies:

# Arch Linux
sudo pacman -S gtk4 gtk4-layer-shell

# Ubuntu/Debian
sudo apt install libgtk-4-dev libgtk4-layer-shell-dev

# Fedora
sudo dnf install gtk4-devel gtk4-layer-shell-devel

Build (requires Rust 1.90+):

git clone https://somegit.dev/Owlibou/owlry.git
cd owlry

# Build core only
cargo build --release -p owlry

# Build specific plugin
cargo build --release -p owlry-plugin-calculator

# Build everything
cargo build --release --workspace

Install plugins manually:

sudo mkdir -p /usr/lib/owlry/plugins
sudo cp target/release/libowlry_plugin_*.so /usr/lib/owlry/plugins/

Usage

owlry                      # Launch with defaults
owlry --mode app           # Applications only
owlry --providers app,cmd  # Specific providers
owlry --help               # Show all options

Keyboard Shortcuts

Key Action
Enter Launch selected item
Escape Close launcher / exit submenu
Up / Down Navigate results
Tab Cycle filter tabs
Shift+Tab Cycle filter tabs (reverse)
Ctrl+1..9 Toggle tab by position

Search Prefixes

Prefix Provider Example
:app Applications :app firefox
:cmd PATH commands :cmd git
:sys System actions :sys shutdown
:ssh SSH hosts :ssh server
:clip Clipboard :clip password
:bm Bookmarks :bm github
:emoji Emoji :emoji heart
:script Scripts :script backup
:file Files :file config
:calc Calculator :calc sqrt(16)
:web Web search :web rust docs
:uuctl systemd :uuctl docker
:tag:X Filter by tag :tag:development

Trigger Prefixes

Trigger Provider Example
= Calculator = 5+3
calc Calculator calc sqrt(16)
? Web search ? rust programming
web Web search web linux tips
/ File search / .bashrc
find File search find config

Configuration

Owlry follows the XDG Base Directory Specification:

Path Purpose
~/.config/owlry/config.toml Main configuration
~/.config/owlry/themes/*.css Custom themes
~/.config/owlry/style.css CSS overrides
~/.config/owlry/plugins/ User plugins (Lua/Rune)
~/.local/share/owlry/scripts/ User scripts
~/.local/share/owlry/frecency.json Usage history

System locations:

Path Purpose
/usr/lib/owlry/plugins/*.so Installed native plugins
/usr/lib/owlry/runtimes/*.so Lua/Rune script runtimes
/usr/share/doc/owlry/config.example.toml Example configuration

Quick Start

# Copy example config
mkdir -p ~/.config/owlry
cp /usr/share/doc/owlry/config.example.toml ~/.config/owlry/config.toml

Example Configuration

[general]
show_icons = true
max_results = 10
tabs = ["app", "cmd", "uuctl"]
# terminal_command = "kitty"    # Auto-detected
# launch_wrapper = "uwsm app --" # Auto-detected

[appearance]
width = 850
height = 650
font_size = 14
border_radius = 12
# theme = "owl"  # Or: catppuccin-mocha, nord, dracula, etc.

[plugins]
disabled = []  # Plugin IDs to disable, e.g., ["emoji", "pomodoro"]

[providers]
applications = true    # .desktop files
commands = true        # PATH executables
frecency = true        # Boost frequently used items
frecency_weight = 0.3  # 0.0-1.0

# Web search engine: google, duckduckgo, bing, startpage, brave, ecosia
search_engine = "duckduckgo"

See /usr/share/doc/owlry/config.example.toml for all options with documentation.

Plugin System

Owlry uses a modular plugin architecture. Plugins are loaded from:

  • /usr/lib/owlry/plugins/*.so — System plugins (AUR packages)
  • ~/.config/owlry/plugins/ — User plugins (requires owlry-lua or owlry-rune)

Disabling Plugins

Add plugin IDs to the disabled list in your config:

[plugins]
disabled = ["emoji", "pomodoro"]

Creating Custom Plugins

See docs/PLUGIN_DEVELOPMENT.md for:

  • Native plugin development (Rust)
  • Lua plugin development
  • Rune plugin development
  • Available APIs

Theming

Built-in Themes

Theme Description
owl Dark theme with amber accents
catppuccin-mocha Soothing pastel
nord Arctic blue palette
rose-pine Natural pine vibes
dracula Dark vampire theme
gruvbox-dark Retro groove
tokyo-night Tokyo city lights
solarized-dark Precision colors
one-dark Atom's One Dark
[appearance]
theme = "catppuccin-mocha"

Custom Theme

Create ~/.config/owlry/themes/mytheme.css:

:root {
    --owlry-bg: #1e1e2e;
    --owlry-bg-secondary: #313244;
    --owlry-border: #45475a;
    --owlry-text: #cdd6f4;
    --owlry-text-secondary: #a6adc8;
    --owlry-accent: #f38ba8;
    --owlry-accent-bright: #f5c2e7;
}

CSS Variables

Variable Description
--owlry-bg Main background
--owlry-bg-secondary Secondary surfaces
--owlry-border Border color
--owlry-text Primary text
--owlry-text-secondary Muted text
--owlry-accent Accent color
--owlry-accent-bright Bright accent

Architecture

owlry (core)
├── Applications provider (XDG .desktop files)
├── Commands provider (PATH executables)
├── Dmenu provider (pipe compatibility)
└── Plugin loader
    ├── /usr/lib/owlry/plugins/*.so  (native plugins)
    ├── /usr/lib/owlry/runtimes/     (Lua/Rune runtimes)
    └── ~/.config/owlry/plugins/     (user plugins)

For detailed architecture information, see CLAUDE.md.

License

GNU General Public License v3.0 — see LICENSE.

Acknowledgments

Description
No description provided
Readme GPL-3.0 563 KiB
Languages
Rust 90.2%
CSS 7.4%
Just 2.3%
Shell 0.1%