🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
216 lines
5.1 KiB
Markdown
216 lines
5.1 KiB
Markdown
# Owlry
|
|
|
|
[](https://www.rust-lang.org/)
|
|
[](LICENSE)
|
|
[](https://gtk.org/)
|
|
[](https://wayland.freedesktop.org/)
|
|
|
|
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`, `:uuctl` prefixes
|
|
- **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
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
git clone https://somegit.dev/Owlibou/owlry.git
|
|
cd owlry
|
|
cargo build --release
|
|
```
|
|
|
|
The binary will be at `target/release/owlry`.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# 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`
|
|
|
|
```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:
|
|
|
|
```toml
|
|
[appearance]
|
|
theme = "owl"
|
|
```
|
|
|
|
### Custom Theme
|
|
|
|
Create a custom theme file at `~/.config/owlry/themes/mytheme.css`:
|
|
|
|
```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:
|
|
|
|
```toml
|
|
[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](LICENSE) for details.
|
|
|
|
## Acknowledgments
|
|
|
|
- [GTK4](https://gtk.org/) - UI toolkit
|
|
- [gtk4-layer-shell](https://github.com/wmww/gtk4-layer-shell) - Wayland Layer Shell bindings
|
|
- [fuzzy-matcher](https://crates.io/crates/fuzzy-matcher) - Fuzzy search algorithm
|