feat: add widget providers (weather, media, pomodoro)

- Weather widget with Open-Meteo/wttr.in/OpenWeatherMap API support
- 15-minute weather caching with geocoding for city names
- MPRIS media player widget with play/pause toggle via dbus-send
- Pomodoro timer widget with configurable work/break cycles
- Widgets display at top of results with emoji icons
- Improved terminal detection for Hyprland/Sway environments
- Updated gtk4 to 0.10, gtk4-layer-shell to 0.7

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-29 19:36:26 +01:00
parent 8670909480
commit 97c6f655ca
13 changed files with 3146 additions and 112 deletions

View File

@@ -18,8 +18,10 @@
show_icons = true
max_results = 10
# Terminal emulator (auto-detected if not set)
terminal_command = "kitty"
# 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 --", ""
@@ -34,8 +36,8 @@ tabs = ["app", "cmd", "uuctl"]
# ═══════════════════════════════════════════════════════════════════════
[appearance]
width = 700
height = 500
width = 850
height = 650
font_size = 14
border_radius = 12
@@ -113,3 +115,21 @@ emoji = true
# Scripts: :script - executables from ~/.local/share/owlry/scripts/
scripts = true
# ───────────────────────────────────────────────────────────────────────
# Widget Providers (shown at top of results)
# ───────────────────────────────────────────────────────────────────────
# MPRIS media player controls - shows now playing with play/pause/skip
media = true
# Weather widget - shows current conditions
weather = false
weather_provider = "wttr.in" # wttr.in (default), openweathermap, open-meteo
# weather_api_key = "" # Required for OpenWeatherMap
weather_location = "Berlin" # City name, "lat,lon", or leave empty for auto
# Pomodoro timer - work/break timer with controls
pomodoro = false
pomodoro_work_mins = 25 # Work session duration
pomodoro_break_mins = 5 # Break duration