Files
owlry/data/config.example.toml
vikingowl 384dd016a0 feat: convert to workspace with native plugin architecture
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>
2025-12-30 03:01:37 +01:00

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