Add #[allow(dead_code)] to unused but potentially useful methods: - config: save() - filter: apps_only(), active_prefix() - providers: name(), search(), is_dmenu_mode(), available_providers() - dmenu: is_enabled() - uuctl: ServiceState struct - result_row: ResultRow struct Prefix unused variables with underscore in main_window.rs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Owlry
A lightweight, owl-themed application launcher for Wayland, built with GTK4 and Layer Shell.
Features
- Provider-based architecture - Search applications, PATH commands, and systemd user services
- Fuzzy search - Fast, typo-tolerant matching across all providers
- Filter tabs & prefixes - Scope searches with UI tabs or
:app,:cmd,:uuctlprefixes - Systemd integration - Manage user services with submenu actions (start/stop/restart/status/journal)
- GTK4 theming - Respects system theme by default, with optional custom themes
- CSS variables - Full customization via config or custom stylesheets
- Wayland native - Uses Layer Shell for proper overlay behavior
Installation
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 from source
Requires Rust 1.90 or later.
git clone https://somegit.dev/Owlibou/owlry.git
cd owlry
cargo build --release
The binary will be at target/release/owlry.
Usage
# Launch with default settings (GTK theme, all providers)
owlry
# Launch with only applications
owlry --mode app
# Launch with specific providers
owlry --providers app,cmd
# Show help
owlry --help
Keyboard Shortcuts
| Key | Action |
|---|---|
Enter |
Launch selected item |
Escape |
Close launcher / exit submenu |
↑ / ↓ |
Navigate results |
Tab |
Cycle filter modes |
Shift+Tab |
Cycle filter modes (reverse) |
Ctrl+1 |
Toggle Applications filter |
Ctrl+2 |
Toggle Commands filter |
Ctrl+3 |
Toggle systemd filter |
Search Prefixes
| Prefix | Scope |
|---|---|
:app |
Applications only |
:cmd |
PATH commands only |
:uuctl |
systemd user services only |
Example: :cmd git searches only PATH commands for "git"
Configuration
Configuration file: ~/.config/owlry/config.toml
[general]
show_icons = true
max_results = 10
# terminal_command = "kitty" # Auto-detected if not set
[appearance]
width = 600
height = 400
font_size = 14
border_radius = 12
# theme = "owl" # Optional: "owl" or custom theme name
# [appearance.colors]
# Override individual colors (optional)
# accent = "#e0af68"
# background = "#1a1b26"
[providers]
applications = true
commands = true
uuctl = true
Default Values
| Setting | Default |
|---|---|
show_icons |
true |
max_results |
10 |
terminal_command |
Auto-detected ($TERMINAL → xdg-terminal-exec → kitty/alacritty/etc) |
width |
600 |
height |
400 |
font_size |
14 |
border_radius |
12 |
theme |
None (GTK default) |
Theming
GTK Theme (Default)
By default, Owlry inherits colors from your system GTK4 theme (Adwaita, Breeze, etc.).
Owl Theme
Enable the built-in owl-inspired dark theme:
[appearance]
theme = "owl"
Custom Theme
Create a custom theme file at ~/.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;
}
Then reference it in config:
[appearance]
theme = "mytheme"
CSS Variables Reference
| 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/highlight color |
--owlry-accent-bright |
Bright accent |
--owlry-font-size |
Base font size |
--owlry-border-radius |
Border radius |
--owlry-badge-app |
Application badge color |
--owlry-badge-cmd |
Command badge color |
--owlry-badge-dmenu |
Dmenu badge color |
--owlry-badge-uuctl |
systemd badge color |
Custom Stylesheet
For full control, create ~/.config/owlry/style.css with any GTK4 CSS.
Providers
Applications
Searches .desktop files from standard XDG directories.
Commands
Searches executable files in $PATH.
systemd User Services
Lists and controls user-level systemd services. Select a service to access actions:
- Start / Stop / Restart / Reload
- Kill (force stop)
- Status (opens in terminal)
- Journal (live logs in terminal)
- Enable / Disable (autostart)
License
This project is licensed under the GNU General Public License v3.0 or later - see LICENSE for details.
Acknowledgments
- GTK4 - UI toolkit
- gtk4-layer-shell - Wayland Layer Shell bindings
- fuzzy-matcher - Fuzzy search algorithm