BREAKING: Restructure from monolithic binary to modular plugin ecosystem Architecture changes: - Convert to Cargo workspace with crates/ directory - Create owlry-plugin-api crate with ABI-stable interface (abi_stable) - Move core binary to crates/owlry/ - Extract providers to native plugin crates (13 plugins) - Add owlry-lua crate for Lua plugin runtime Plugin system: - Plugins loaded from /usr/lib/owlry/plugins/*.so - Widget providers refresh automatically (universal, not hardcoded) - Per-plugin config via [plugins.<name>] sections in config.toml - Backwards compatible with [providers] config format New features: - just install-local: build and install core + all plugins - Plugin config: weather and pomodoro read from [plugins.*] - HostAPI for plugins: notifications, logging Documentation: - Update README with new package structure - Add docs/PLUGINS.md with all plugin documentation - Add docs/PLUGIN_DEVELOPMENT.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
132 lines
6.5 KiB
TOML
132 lines
6.5 KiB
TOML
# Owlry Configuration
|
|
# Copy to: ~/.config/owlry/config.toml
|
|
#
|
|
# File Locations (XDG Base Directory compliant):
|
|
# ┌─────────────────────────────────────────────────────────────────────┐
|
|
# │ Config: ~/.config/owlry/config.toml Main configuration │
|
|
# │ Themes: ~/.config/owlry/themes/*.css Custom theme files │
|
|
# │ Style: ~/.config/owlry/style.css CSS overrides │
|
|
# │ Plugins: ~/.config/owlry/plugins/ User Lua/Rune plugins │
|
|
# │ Scripts: ~/.local/share/owlry/scripts/ Executable scripts │
|
|
# │ Data: ~/.local/share/owlry/frecency.json Usage history │
|
|
# └─────────────────────────────────────────────────────────────────────┘
|
|
#
|
|
# System Plugin Locations:
|
|
# ┌─────────────────────────────────────────────────────────────────────┐
|
|
# │ Native: /usr/lib/owlry/plugins/*.so Installed plugins │
|
|
# │ Runtimes: /usr/lib/owlry/runtimes/*.so Lua/Rune runtimes │
|
|
# └─────────────────────────────────────────────────────────────────────┘
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
# GENERAL
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
|
|
[general]
|
|
show_icons = true
|
|
max_results = 10
|
|
|
|
# Terminal emulator for SSH, scripts, etc.
|
|
# Auto-detection order: $TERMINAL → xdg-terminal-exec → DE-native → Wayland → X11 → xterm
|
|
# Uncomment to override:
|
|
# terminal_command = "kitty"
|
|
|
|
# Launch wrapper for app execution (auto-detected for uwsm/Hyprland)
|
|
# Examples: "uwsm app --", "hyprctl dispatch exec --", ""
|
|
# launch_wrapper = "uwsm app --"
|
|
|
|
# Header tabs - providers shown as toggle buttons (Ctrl+1, Ctrl+2, etc.)
|
|
# Values: app, cmd, uuctl, bookmark, calc, clip, dmenu, emoji, file, script, ssh, sys, web
|
|
tabs = ["app", "cmd", "uuctl"]
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
# APPEARANCE
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
|
|
[appearance]
|
|
width = 850
|
|
height = 650
|
|
font_size = 14
|
|
border_radius = 12
|
|
|
|
# Theme name - loads ~/.config/owlry/themes/{name}.css
|
|
# Built-in: owl, catppuccin-mocha, dracula, gruvbox-dark, nord,
|
|
# one-dark, rose-pine, solarized-dark, tokyo-night
|
|
# Or leave unset for GTK default
|
|
# theme = "owl"
|
|
|
|
# Color overrides (applied on top of theme)
|
|
# [appearance.colors]
|
|
# background = "#1a1b26"
|
|
# background_secondary = "#24283b"
|
|
# border = "#414868"
|
|
# text = "#c0caf5"
|
|
# text_secondary = "#565f89"
|
|
# accent = "#7aa2f7"
|
|
# accent_bright = "#89b4fa"
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
# PLUGINS
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
#
|
|
# All installed plugins are loaded by default. Use 'disabled' to blacklist.
|
|
# Plugin IDs: calculator, system, ssh, clipboard, emoji, scripts, bookmarks,
|
|
# websearch, filesearch, systemd, weather, media, pomodoro
|
|
|
|
[plugins]
|
|
# Plugins to disable (by ID)
|
|
disabled = []
|
|
|
|
# Examples:
|
|
# disabled = ["emoji", "pomodoro"] # Disable specific plugins
|
|
# disabled = ["weather", "media"] # Disable widget plugins
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
# CORE PROVIDERS
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
#
|
|
# These are built into the core binary, not plugins.
|
|
|
|
[providers]
|
|
# Core providers (always available)
|
|
applications = true # .desktop applications from XDG dirs
|
|
commands = true # Executables from $PATH
|
|
|
|
# Frecency - boost frequently/recently used items
|
|
# Data stored in: ~/.local/share/owlry/frecency.json
|
|
frecency = true
|
|
frecency_weight = 0.3 # 0.0 = disabled, 1.0 = strong boost
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
# PLUGIN SETTINGS
|
|
# ═══════════════════════════════════════════════════════════════════════
|
|
#
|
|
# Settings for specific plugins. Only applies if the plugin is installed.
|
|
|
|
# Web Search plugin
|
|
[providers.websearch]
|
|
search_engine = "duckduckgo"
|
|
# Options: google, duckduckgo, bing, startpage, searxng, brave, ecosia
|
|
# Custom URL: "https://search.example.com/?q={query}"
|
|
|
|
# File Search plugin
|
|
[providers.filesearch]
|
|
max_results = 50
|
|
# search_paths = ["/home", "/etc"] # Custom paths (default: $HOME)
|
|
|
|
# Weather widget plugin
|
|
[providers.weather]
|
|
enabled = true
|
|
provider = "wttr.in" # wttr.in (default), openweathermap, open-meteo
|
|
location = "" # City name, "lat,lon", or empty for auto-detect
|
|
# api_key = "" # Required for OpenWeatherMap
|
|
|
|
# Pomodoro timer plugin
|
|
[providers.pomodoro]
|
|
enabled = true
|
|
work_mins = 25 # Work session duration
|
|
break_mins = 5 # Break duration
|
|
|
|
# Media controls plugin
|
|
[providers.media]
|
|
enabled = true
|