Compare commits

...

9 Commits

Author SHA1 Message Date
a920588df9 chore(aur): update owlry-lua 1.1.1, owlry-rune 1.1.1 2026-03-28 13:43:30 +01:00
c32b6c5456 chore(owlry-rune): bump version to 1.1.1 2026-03-28 13:43:06 +01:00
2a5f184230 chore(owlry-lua): bump version to 1.1.1 2026-03-28 13:43:04 +01:00
b2f068269a chore: remove unused builtin_type_ids method and test 2026-03-28 13:37:54 +01:00
e210a604f7 chore(aur): update owlry-core to 1.3.1 2026-03-28 13:30:28 +01:00
1adec7bf47 chore(owlry-core): bump version to 1.3.1 2026-03-28 13:30:23 +01:00
7f07a93dec fix(core): add :config and :conv to filter prefix tables
:config and :conv were not in the prefix lists, so typing them
showed 'Plugin' mode but didn't route to the config/converter
providers. Also added :settings, :converter aliases.
2026-03-28 13:30:10 +01:00
7351ba868e docs: revise README for current state
- Architecture diagram reflects owlryd binary name and built-in providers
- Add config editor, converter trigger (>) to prefix tables
- Add apex-neon to theme list (10 themes)
- Add --owlry-shadow CSS variable
- Fix build instructions (no deleted plugins)
- Add built-in provider toggles to example config
- Cross-reference :config throughout (Quick Start, Disabling Plugins, Theming)
2026-03-28 13:28:32 +01:00
44e1430ea5 chore(aur): update owlry-core to 1.3.0 2026-03-28 13:17:29 +01:00
13 changed files with 75 additions and 86 deletions

6
Cargo.lock generated
View File

@@ -2557,7 +2557,7 @@ dependencies = [
[[package]] [[package]]
name = "owlry-core" name = "owlry-core"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"chrono", "chrono",
"ctrlc", "ctrlc",
@@ -2584,7 +2584,7 @@ dependencies = [
[[package]] [[package]]
name = "owlry-lua" name = "owlry-lua"
version = "1.1.0" version = "1.1.1"
dependencies = [ dependencies = [
"abi_stable", "abi_stable",
"chrono", "chrono",
@@ -2610,7 +2610,7 @@ dependencies = [
[[package]] [[package]]
name = "owlry-rune" name = "owlry-rune"
version = "1.1.0" version = "1.1.1"
dependencies = [ dependencies = [
"chrono", "chrono",
"dirs", "dirs",

View File

@@ -11,17 +11,18 @@ A lightweight, owl-themed application launcher for Wayland, built with GTK4 and
## Features ## Features
- **Client/daemon architecture** — Instant window appearance, providers stay loaded in memory - **Client/daemon architecture** — Instant window appearance, providers stay loaded in memory
- **Modular plugin architecture** — Install only what you need - **Built-in providers** — Calculator, unit/currency converter, and system actions out of the box
- **Fuzzy search with tags** — Fast matching across names, descriptions, and category tags - **Built-in settings editor** — Configure everything from within the launcher (`:config`)
- **Built-in calculator, converter, and system actions** — Works out of the box - **11 optional plugins** — Clipboard, emoji, weather, media, bookmarks, and more
- **11 optional plugins** — Clipboard, emoji, weather, media, and more
- **Widget providers** — Weather, media controls, and pomodoro timer at the top of results - **Widget providers** — Weather, media controls, and pomodoro timer at the top of results
- **Fuzzy search with tags** — Fast matching across names, descriptions, and category tags
- **Config profiles** — Named mode presets for different workflows - **Config profiles** — Named mode presets for different workflows
- **Filter prefixes** — Scope searches with `:app`, `:cmd`, `:tag:development`, etc. - **Filter prefixes** — Scope searches with `:app`, `:cmd`, `:config`, `:tag:X`, etc.
- **Frecency ranking** — Frequently/recently used items rank higher - **Frecency ranking** — Frequently/recently used items rank higher
- **Toggle behavior** — Bind one key to open/close the launcher - **Toggle behavior** — Bind one key to open/close the launcher
- **GTK4 theming** — System theme by default, with 9 built-in themes - **GTK4 theming** — System theme by default, with 10 built-in themes
- **Wayland native** — Uses Layer Shell for proper overlay behavior - **Wayland native** — Uses Layer Shell for proper overlay behavior
- **dmenu compatible** — Pipe-based selection mode, no daemon required
- **Extensible** — Create custom plugins in Lua or Rune - **Extensible** — Create custom plugins in Lua or Rune
## Installation ## Installation
@@ -29,13 +30,13 @@ A lightweight, owl-themed application launcher for Wayland, built with GTK4 and
### Arch Linux (AUR) ### Arch Linux (AUR)
```bash ```bash
# Core (includes calculator, converter, system actions) # Core (includes calculator, converter, system actions, settings editor)
yay -S owlry yay -S owlry
# Add individual plugins as needed # Add individual plugins as needed
yay -S owlry-plugin-bookmarks owlry-plugin-weather owlry-plugin-clipboard yay -S owlry-plugin-bookmarks owlry-plugin-weather owlry-plugin-clipboard
# For custom Lua/Rune plugins # For custom Lua/Rune user plugins
yay -S owlry-lua # Lua 5.4 runtime yay -S owlry-lua # Lua 5.4 runtime
yay -S owlry-rune # Rune runtime yay -S owlry-rune # Rune runtime
``` ```
@@ -47,7 +48,7 @@ yay -S owlry-rune # Rune runtime
| Package | Description | | Package | Description |
|---------|-------------| |---------|-------------|
| `owlry` | GTK4 UI client | | `owlry` | GTK4 UI client |
| `owlry-core` | Headless daemon with built-in calculator, converter, and system providers | | `owlry-core` | Daemon (`owlryd`) with built-in calculator, converter, system, and settings providers |
| `owlry-lua` | Lua 5.4 script runtime for user plugins | | `owlry-lua` | Lua 5.4 script runtime for user plugins |
| `owlry-rune` | Rune script runtime for user plugins | | `owlry-rune` | Rune script runtime for user plugins |
@@ -67,7 +68,7 @@ yay -S owlry-rune # Rune runtime
| `owlry-plugin-weather` | Weather widget | | `owlry-plugin-weather` | Weather widget |
| `owlry-plugin-websearch` | Web search (`? query`) | | `owlry-plugin-websearch` | Web search (`? query`) |
> **Note:** Calculator, converter, and system actions are built into `owlry-core` and no longer require separate plugin packages. > **Note:** Calculator, converter, and system actions are built into `owlry-core` and do not require separate packages.
### Build from Source ### Build from Source
@@ -102,7 +103,7 @@ cargo build --release --workspace
```bash ```bash
git clone https://somegit.dev/Owlibou/owlry-plugins.git git clone https://somegit.dev/Owlibou/owlry-plugins.git
cd owlry-plugins cd owlry-plugins
cargo build --release -p owlry-plugin-calculator # or any plugin cargo build --release -p owlry-plugin-bookmarks # or any plugin
``` ```
**Install locally:** **Install locally:**
@@ -110,11 +111,11 @@ cargo build --release -p owlry-plugin-calculator # or any plugin
just install-local just install-local
``` ```
This installs the UI, daemon, runtimes, and systemd service files. This installs the UI (`owlry`), daemon (`owlryd`), runtimes, and systemd service files.
## Getting Started ## Getting Started
Owlry uses a client/daemon architecture. The daemon (`owlry-core`) loads providers and plugins into memory. The UI client (`owlry`) connects to the daemon over a Unix socket for instant results. Owlry uses a client/daemon architecture. The daemon (`owlryd`) loads providers and plugins into memory. The UI client (`owlry`) connects to the daemon over a Unix socket for instant results.
### Starting the Daemon ### Starting the Daemon
@@ -144,7 +145,7 @@ systemctl --user enable --now owlryd.service
systemctl --user enable owlryd.socket systemctl --user enable owlryd.socket
``` ```
The daemon starts automatically when the UI client first connects. No manual startup needed. The daemon starts automatically when the UI client first connects.
### Launching the UI ### Launching the UI
@@ -158,7 +159,7 @@ bind = SUPER, Space, exec, owlry
bindsym $mod+space exec owlry bindsym $mod+space exec owlry
``` ```
Running `owlry` a second time while it is already open sends a toggle command — the window closes. This means a single keybind acts as open/close. Running `owlry` a second time while it is already open sends a toggle command — the window closes. A single keybind acts as open/close.
If the daemon is not running when the UI launches, it will attempt to start it via systemd automatically. If the daemon is not running when the UI launches, it will attempt to start it via systemd automatically.
@@ -168,7 +169,7 @@ If the daemon is not running when the UI launches, it will attempt to start it v
owlry # Launch with all providers owlry # Launch with all providers
owlry -m app # Applications only owlry -m app # Applications only
owlry -m cmd # PATH commands only owlry -m cmd # PATH commands only
owlry -m calc # Calculator plugin only (if installed) owlry -m calc # Calculator only
owlry --profile dev # Use a named profile from config owlry --profile dev # Use a named profile from config
owlry --help # Show all options with examples owlry --help # Show all options with examples
``` ```
@@ -203,14 +204,16 @@ bind = SUPER, D, exec, owlry --profile dev
bind = SUPER, M, exec, owlry --profile media bind = SUPER, M, exec, owlry --profile media
``` ```
Profiles can also be managed from the launcher itself — see [Settings Editor](#settings-editor).
### dmenu Mode ### dmenu Mode
Owlry is dmenu-compatible. Pipe input for interactive selection — the selected item is printed to stdout (not executed), so you pipe the output to execute it. Owlry is dmenu-compatible. Pipe input for interactive selection — the selected item is printed to stdout (not executed), so you pipe the output to execute it.
dmenu mode is self-contained: it does not use the daemon and works without `owlry-core` running. dmenu mode is self-contained: it does not use the daemon and works without `owlryd` running.
```bash ```bash
# Screenshot menu (execute selected command) # Screenshot menu
printf '%s\n' \ printf '%s\n' \
"grimblast --notify copy screen" \ "grimblast --notify copy screen" \
"grimblast --notify copy area" \ "grimblast --notify copy area" \
@@ -229,9 +232,6 @@ find ~/projects -maxdepth 1 -type d | owlry -m dmenu | xargs code
# Package manager search # Package manager search
pacman -Ssq | owlry -m dmenu -p "install" | xargs sudo pacman -S pacman -Ssq | owlry -m dmenu -p "install" | xargs sudo pacman -S
# Open selected file
ls ~/Documents | owlry -m dmenu | xargs xdg-open
``` ```
The `-p` / `--prompt` flag sets a custom label for the search input. The `-p` / `--prompt` flag sets a custom label for the search input.
@@ -281,6 +281,7 @@ Changes are saved to `config.toml` immediately. Some settings (theme, frecency)
| `:calc` | Calculator | `:calc sqrt(16)` | | `:calc` | Calculator | `:calc sqrt(16)` |
| `:web` | Web search | `:web rust docs` | | `:web` | Web search | `:web rust docs` |
| `:uuctl` | systemd | `:uuctl docker` | | `:uuctl` | systemd | `:uuctl docker` |
| `:config` | Settings | `:config theme` |
| `:tag:X` | Filter by tag | `:tag:development` | | `:tag:X` | Filter by tag | `:tag:development` |
### Trigger Prefixes ### Trigger Prefixes
@@ -289,6 +290,7 @@ Changes are saved to `config.toml` immediately. Some settings (theme, frecency)
|---------|----------|---------| |---------|----------|---------|
| `=` | Calculator | `= 5+3` | | `=` | Calculator | `= 5+3` |
| `calc ` | Calculator | `calc sqrt(16)` | | `calc ` | Calculator | `calc sqrt(16)` |
| `>` | Converter | `> 20 km to mi` |
| `?` | Web search | `? rust programming` | | `?` | Web search | `? rust programming` |
| `web ` | Web search | `web linux tips` | | `web ` | Web search | `web linux tips` |
| `/` | File search | `/ .bashrc` | | `/` | File search | `/ .bashrc` |
@@ -308,6 +310,7 @@ Owlry follows the [XDG Base Directory Specification](https://specifications.free
| `~/.local/share/owlry/frecency.json` | Usage history | | `~/.local/share/owlry/frecency.json` | Usage history |
System locations: System locations:
| Path | Purpose | | Path | Purpose |
|------|---------| |------|---------|
| `/usr/lib/owlry/plugins/*.so` | Installed native plugins | | `/usr/lib/owlry/plugins/*.so` | Installed native plugins |
@@ -322,6 +325,8 @@ mkdir -p ~/.config/owlry
cp /usr/share/doc/owlry/config.example.toml ~/.config/owlry/config.toml cp /usr/share/doc/owlry/config.example.toml ~/.config/owlry/config.toml
``` ```
Or configure from within the launcher: type `:config` to interactively change settings.
### Example Configuration ### Example Configuration
```toml ```toml
@@ -345,6 +350,9 @@ disabled = [] # Plugin IDs to disable, e.g., ["emoji", "pomodoro"]
[providers] [providers]
applications = true # .desktop files applications = true # .desktop files
commands = true # PATH executables commands = true # PATH executables
calculator = true # Built-in math expressions
converter = true # Built-in unit/currency conversion
system = true # Built-in shutdown/reboot/lock actions
frecency = true # Boost frequently used items frecency = true # Boost frequently used items
frecency_weight = 0.3 # 0.0-1.0 frecency_weight = 0.3 # 0.0-1.0
@@ -363,7 +371,7 @@ See `/usr/share/doc/owlry/config.example.toml` for all options with documentatio
## Plugin System ## Plugin System
Owlry uses a modular plugin architecture. Plugins are loaded by the daemon (`owlry-core`) from: Owlry uses a modular plugin architecture. Plugins are loaded by the daemon from:
- `/usr/lib/owlry/plugins/*.so` — System plugins (AUR packages) - `/usr/lib/owlry/plugins/*.so` — System plugins (AUR packages)
- `~/.config/owlry/plugins/` — User plugins (requires `owlry-lua` or `owlry-rune`) - `~/.config/owlry/plugins/` — User plugins (requires `owlry-lua` or `owlry-rune`)
@@ -377,6 +385,8 @@ Add plugin IDs to the disabled list in your config:
disabled = ["emoji", "pomodoro"] disabled = ["emoji", "pomodoro"]
``` ```
Or toggle providers interactively: type `:config providers` in the launcher.
### Plugin Management CLI ### Plugin Management CLI
```bash ```bash
@@ -432,12 +442,15 @@ See [docs/PLUGIN_DEVELOPMENT.md](docs/PLUGIN_DEVELOPMENT.md) for:
| `tokyo-night` | Tokyo city lights | | `tokyo-night` | Tokyo city lights |
| `solarized-dark` | Precision colors | | `solarized-dark` | Precision colors |
| `one-dark` | Atom's One Dark | | `one-dark` | Atom's One Dark |
| `apex-neon` | Neon cyberpunk |
```toml ```toml
[appearance] [appearance]
theme = "catppuccin-mocha" theme = "catppuccin-mocha"
``` ```
Or select interactively: type `:config theme` in the launcher.
### Custom Theme ### Custom Theme
Create `~/.config/owlry/themes/mytheme.css`: Create `~/.config/owlry/themes/mytheme.css`:
@@ -465,18 +478,24 @@ Create `~/.config/owlry/themes/mytheme.css`:
| `--owlry-text-secondary` | Muted text | | `--owlry-text-secondary` | Muted text |
| `--owlry-accent` | Accent color | | `--owlry-accent` | Accent color |
| `--owlry-accent-bright` | Bright accent | | `--owlry-accent-bright` | Bright accent |
| `--owlry-shadow` | Window shadow (default: none) |
## Architecture ## Architecture
Owlry uses a client/daemon split: Owlry uses a client/daemon split:
``` ```
owlry-core (daemon) owlry (GTK4 UI client) owlryd (daemon) owlry (GTK4 UI client)
├── Loads config + plugins ├── Connects to daemon via Unix socket ├── Loads config + plugins ├── Connects to daemon via Unix socket
├── Applications provider ├── Renders results in GTK4 window ├── Built-in providers ├── Renders results in GTK4 window
├── Commands provider ├── Handles keyboard input │ ├── Applications (.desktop) ├── Handles keyboard input
├── Plugin loader ├── Toggle: second launch closes window │ ├── Commands (PATH) ├── Toggle: second launch closes window
│ ├── /usr/lib/owlry/plugins/*.so └── dmenu mode (self-contained, no daemon) │ ├── Calculator (math) └── dmenu mode (self-contained, no daemon)
│ ├── Converter (units/currency)
│ ├── System (power/session)
│ └── Config editor (settings)
├── Plugin loader
│ ├── /usr/lib/owlry/plugins/*.so
│ ├── /usr/lib/owlry/runtimes/ │ ├── /usr/lib/owlry/runtimes/
│ └── ~/.config/owlry/plugins/ │ └── ~/.config/owlry/plugins/
├── Frecency tracking ├── Frecency tracking

View File

@@ -1,13 +1,13 @@
pkgbase = owlry-core pkgbase = owlry-core
pkgdesc = Core daemon for the Owlry application launcher — manages plugins, providers, and search pkgdesc = Core daemon for the Owlry application launcher — manages plugins, providers, and search
pkgver = 1.2.1 pkgver = 1.3.1
pkgrel = 1 pkgrel = 1
url = https://somegit.dev/Owlibou/owlry url = https://somegit.dev/Owlibou/owlry
arch = x86_64 arch = x86_64
license = GPL-3.0-or-later license = GPL-3.0-or-later
makedepends = cargo makedepends = cargo
depends = gcc-libs depends = gcc-libs
source = owlry-core-1.2.1.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-core-v1.2.1.tar.gz source = owlry-core-1.3.1.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-core-v1.3.1.tar.gz
b2sums = 8967562bda33820b282350eaad17e8194699926b721eabe978fb0b70af2a75e399866c6bfa7abb449141701bad618df56079c7e81358708b1852b1070b0b7c05 b2sums = e37383fd650a3bf9a2c554eb37676037e3ae72bbc2e1aad7c316809094254173b6fcd5ac87907c2f38ce5506e9f26201ec62f82446bc789153c280373e31fc9e
pkgname = owlry-core pkgname = owlry-core

View File

@@ -1,6 +1,6 @@
# Maintainer: vikingowl <christian@nachtigall.dev> # Maintainer: vikingowl <christian@nachtigall.dev>
pkgname=owlry-core pkgname=owlry-core
pkgver=1.2.1 pkgver=1.3.1
pkgrel=1 pkgrel=1
pkgdesc='Core daemon for the Owlry application launcher — manages plugins, providers, and search' pkgdesc='Core daemon for the Owlry application launcher — manages plugins, providers, and search'
arch=('x86_64') arch=('x86_64')
@@ -9,7 +9,7 @@ license=('GPL-3.0-or-later')
depends=('gcc-libs') depends=('gcc-libs')
makedepends=('cargo') makedepends=('cargo')
source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-core-v$pkgver.tar.gz") source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-core-v$pkgver.tar.gz")
b2sums=('8967562bda33820b282350eaad17e8194699926b721eabe978fb0b70af2a75e399866c6bfa7abb449141701bad618df56079c7e81358708b1852b1070b0b7c05') b2sums=('e37383fd650a3bf9a2c554eb37676037e3ae72bbc2e1aad7c316809094254173b6fcd5ac87907c2f38ce5506e9f26201ec62f82446bc789153c280373e31fc9e')
prepare() { prepare() {
cd "owlry" cd "owlry"

View File

@@ -1,13 +1,13 @@
pkgbase = owlry-lua pkgbase = owlry-lua
pkgdesc = Lua scripting runtime for Owlry — enables user-created Lua plugins pkgdesc = Lua scripting runtime for Owlry — enables user-created Lua plugins
pkgver = 1.1.0 pkgver = 1.1.1
pkgrel = 1 pkgrel = 1
url = https://somegit.dev/Owlibou/owlry url = https://somegit.dev/Owlibou/owlry
arch = x86_64 arch = x86_64
license = GPL-3.0-or-later license = GPL-3.0-or-later
makedepends = cargo makedepends = cargo
depends = owlry-core depends = owlry-core
source = owlry-lua-1.1.0.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-lua-v1.1.0.tar.gz source = owlry-lua-1.1.1.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-lua-v1.1.1.tar.gz
b2sums = d4b200446a31301b1240fd8eede6e10764d7bbc551f2e5549bfdbdcc0fa4a717677c3c2c69778d2dfa336711ac5b74d4987e46082ea589fed961c9d2ff95af76 b2sums = a0e1fa032db8dda8e6bc24457f3c04948129d3f14c1d3e61b8e080340b24f560d43294beb133ad4b1c6eb7942d401108ea91c367b074eaeeefa284e9b2a9dbc8
pkgname = owlry-lua pkgname = owlry-lua

View File

@@ -1,6 +1,6 @@
# Maintainer: vikingowl <christian@nachtigall.dev> # Maintainer: vikingowl <christian@nachtigall.dev>
pkgname=owlry-lua pkgname=owlry-lua
pkgver=1.1.0 pkgver=1.1.1
pkgrel=1 pkgrel=1
pkgdesc="Lua scripting runtime for Owlry — enables user-created Lua plugins" pkgdesc="Lua scripting runtime for Owlry — enables user-created Lua plugins"
arch=('x86_64') arch=('x86_64')
@@ -9,7 +9,7 @@ license=('GPL-3.0-or-later')
depends=('owlry-core') depends=('owlry-core')
makedepends=('cargo') makedepends=('cargo')
source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-lua-v$pkgver.tar.gz") source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-lua-v$pkgver.tar.gz")
b2sums=('d4b200446a31301b1240fd8eede6e10764d7bbc551f2e5549bfdbdcc0fa4a717677c3c2c69778d2dfa336711ac5b74d4987e46082ea589fed961c9d2ff95af76') b2sums=('a0e1fa032db8dda8e6bc24457f3c04948129d3f14c1d3e61b8e080340b24f560d43294beb133ad4b1c6eb7942d401108ea91c367b074eaeeefa284e9b2a9dbc8')
_cratename=owlry-lua _cratename=owlry-lua

View File

@@ -1,13 +1,13 @@
pkgbase = owlry-rune pkgbase = owlry-rune
pkgdesc = Rune scripting runtime for Owlry — enables user-created Rune plugins pkgdesc = Rune scripting runtime for Owlry — enables user-created Rune plugins
pkgver = 1.1.0 pkgver = 1.1.1
pkgrel = 1 pkgrel = 1
url = https://somegit.dev/Owlibou/owlry url = https://somegit.dev/Owlibou/owlry
arch = x86_64 arch = x86_64
license = GPL-3.0-or-later license = GPL-3.0-or-later
makedepends = cargo makedepends = cargo
depends = owlry-core depends = owlry-core
source = owlry-rune-1.1.0.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-rune-v1.1.0.tar.gz source = owlry-rune-1.1.1.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-rune-v1.1.1.tar.gz
b2sums = d4b200446a31301b1240fd8eede6e10764d7bbc551f2e5549bfdbdcc0fa4a717677c3c2c69778d2dfa336711ac5b74d4987e46082ea589fed961c9d2ff95af76 b2sums = a0e1fa032db8dda8e6bc24457f3c04948129d3f14c1d3e61b8e080340b24f560d43294beb133ad4b1c6eb7942d401108ea91c367b074eaeeefa284e9b2a9dbc8
pkgname = owlry-rune pkgname = owlry-rune

View File

@@ -1,6 +1,6 @@
# Maintainer: vikingowl <christian@nachtigall.dev> # Maintainer: vikingowl <christian@nachtigall.dev>
pkgname=owlry-rune pkgname=owlry-rune
pkgver=1.1.0 pkgver=1.1.1
pkgrel=1 pkgrel=1
pkgdesc="Rune scripting runtime for Owlry — enables user-created Rune plugins" pkgdesc="Rune scripting runtime for Owlry — enables user-created Rune plugins"
arch=('x86_64') arch=('x86_64')
@@ -9,7 +9,7 @@ license=('GPL-3.0-or-later')
depends=('owlry-core') depends=('owlry-core')
makedepends=('cargo') makedepends=('cargo')
source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-rune-v$pkgver.tar.gz") source=("$pkgname-$pkgver.tar.gz::https://somegit.dev/Owlibou/owlry/archive/owlry-rune-v$pkgver.tar.gz")
b2sums=('d4b200446a31301b1240fd8eede6e10764d7bbc551f2e5549bfdbdcc0fa4a717677c3c2c69778d2dfa336711ac5b74d4987e46082ea589fed961c9d2ff95af76') b2sums=('a0e1fa032db8dda8e6bc24457f3c04948129d3f14c1d3e61b8e080340b24f560d43294beb133ad4b1c6eb7942d401108ea91c367b074eaeeefa284e9b2a9dbc8')
_cratename=owlry-rune _cratename=owlry-rune

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "owlry-core" name = "owlry-core"
version = "1.3.0" version = "1.3.1"
edition.workspace = true edition.workspace = true
rust-version.workspace = true rust-version.workspace = true
license.workspace = true license.workspace = true

View File

@@ -261,6 +261,10 @@ impl ProviderFilter {
(":systemd ", "uuctl"), (":systemd ", "uuctl"),
(":web ", "websearch"), (":web ", "websearch"),
(":search ", "websearch"), (":search ", "websearch"),
(":config ", "config"),
(":settings ", "config"),
(":conv ", "conv"),
(":converter ", "conv"),
]; ];
// Check core prefixes // Check core prefixes
@@ -327,6 +331,10 @@ impl ProviderFilter {
(":systemd", "uuctl"), (":systemd", "uuctl"),
(":web", "websearch"), (":web", "websearch"),
(":search", "websearch"), (":search", "websearch"),
(":config", "config"),
(":settings", "config"),
(":conv", "conv"),
(":converter", "conv"),
]; ];
for (prefix_str, provider) in partial_core { for (prefix_str, provider) in partial_core {

View File

@@ -202,25 +202,6 @@ impl ProviderManager {
manager manager
} }
/// Get type IDs of built-in providers (for conflict detection with native plugins)
fn builtin_type_ids(&self) -> std::collections::HashSet<String> {
let mut ids: std::collections::HashSet<String> = self
.builtin_dynamic
.iter()
.filter_map(|p| match p.provider_type() {
ProviderType::Plugin(id) => Some(id),
_ => None,
})
.collect();
// Also include built-in static providers that use Plugin type
for p in &self.providers {
if let ProviderType::Plugin(id) = p.provider_type() {
ids.insert(id);
}
}
ids
}
/// Create a self-contained ProviderManager from config. /// Create a self-contained ProviderManager from config.
/// ///
/// Loads native plugins, creates core providers (Application + Command), /// Loads native plugins, creates core providers (Application + Command),
@@ -1236,23 +1217,4 @@ mod tests {
assert_eq!(results[0].0.name, "Firefox"); assert_eq!(results[0].0.name, "Firefox");
} }
#[test]
fn test_builtin_type_ids_includes_dynamic_and_static() {
use super::calculator::CalculatorProvider;
use super::converter::ConverterProvider;
use super::system::SystemProvider;
let mut pm = ProviderManager::new(
vec![Box::new(SystemProvider::new())],
vec![],
);
pm.builtin_dynamic = vec![
Box::new(CalculatorProvider),
Box::new(ConverterProvider::new()),
];
let ids = pm.builtin_type_ids();
assert!(ids.contains("calc"));
assert!(ids.contains("conv"));
assert!(ids.contains("sys"));
}
} }

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "owlry-lua" name = "owlry-lua"
version = "1.1.0" version = "1.1.1"
edition.workspace = true edition.workspace = true
rust-version.workspace = true rust-version.workspace = true
license.workspace = true license.workspace = true

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "owlry-rune" name = "owlry-rune"
version = "1.1.0" version = "1.1.1"
edition = "2024" edition = "2024"
rust-version = "1.90" rust-version = "1.90"
description = "Rune scripting runtime for owlry plugins" description = "Rune scripting runtime for owlry plugins"