Files
owlry/ROADMAP.md
vikingowl 026a232e0c docs: add ROADMAP.md with feature ideas
- High value/low effort: hot-reload, frecency pruning, :recent, clipboard images
- Medium effort: universal actions, plugin settings UI, result capture
- Bigger bets: window switcher, cross-device sync, natural language, plugin marketplace
- Technical debt: meval→evalexpr, API compat, per-plugin config

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 09:04:55 +01:00

3.2 KiB

Owlry Roadmap

Feature ideas and future development plans for Owlry.

High Value, Low Effort

Plugin hot-reload

Detect .so file changes in /usr/lib/owlry/plugins/ and reload without restarting the launcher. The loader infrastructure already exists.

Frecency pruning

Add max_entries and max_age_days config options. Prune old entries on startup to prevent frecency.json from growing unbounded.

:recent prefix

Show last N launched items. Data already exists in frecency.json — just needs a provider to surface it.

Clipboard images

cliphist supports images. Extend the clipboard plugin to show image thumbnails in results.


Medium Effort, High Value

Actions on any result

Generalize the submenu system beyond systemd. Every result type gets contextual actions:

Provider Actions
Applications Open, Open in terminal, Show .desktop location
Files Open, Open folder, Copy path, Delete
SSH Connect, Copy hostname, Edit config
Bookmarks Open, Copy URL, Open incognito
Clipboard Paste, Delete from history

This is the difference between a launcher and a command palette.

Plugin settings UI

A :settings provider that lists installed plugins and their configurable options. Edit values inline, writes to config.toml.

Result action capture

Calculator shows = 5+3 → 8. Allow pressing Tab or Ctrl+C to copy the result to clipboard instead of "launching" it. Useful for calculator, file paths, URLs.


Bigger Bets

Window switcher with live thumbnails

A windows plugin using Wayland screencopy to show live thumbnails of open windows. Hyprland and Sway expose window lists via IPC. Could replace Alt+Tab.

Cross-device bookmark sync

Firefox and Chrome sync bookmarks across devices. Parse sync metadata to show "recently added on other devices" or "bookmarks from phone".

Natural language commands

Parse simple natural language into system commands:

"shutdown in 30 minutes" → systemd-run --user --on-active=30m systemctl poweroff
"remind me in 1 hour"    → notify-send scheduled via at/systemd timer
"volume 50%"             → wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.5

Local pattern matching, no AI/cloud required.

Plugin marketplace

A curated registry of third-party Lua/Rune plugins with one-command install:

owlry plugin install github-notifications
owlry plugin install todoist
owlry plugin install spotify-controls

The script runtimes make this viable without recompiling.


Technical Debt

Replace meval with evalexpr

meval depends on nom v1.2.4 which will be rejected by future Rust versions. Migrate calculator plugin and Lua runtime to evalexpr v13+.

Plugin API backwards compatibility

When API_VERSION increments, provide a compatibility shim so v3 plugins work with v4 core. Prevents ecosystem fragmentation.

Per-plugin configuration

Current flat [providers] config doesn't scale. Design a [plugins.weather], [plugins.pomodoro] structure that plugins can declare and the core validates.


Priority

If we had to pick one: Actions on any result. It transforms every provider from "search and launch" to "search and do anything". The ROI is massive.