diff --git a/aur/owlry-lua/.SRCINFO b/aur/owlry-lua/.SRCINFO new file mode 100644 index 0000000..9075633 --- /dev/null +++ b/aur/owlry-lua/.SRCINFO @@ -0,0 +1,13 @@ +pkgbase = owlry-lua + pkgdesc = Lua runtime for Owlry - enables loading user-created Lua plugins + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-lua diff --git a/aur/owlry-lua/PKGBUILD b/aur/owlry-lua/PKGBUILD new file mode 100644 index 0000000..cef14ca --- /dev/null +++ b/aur/owlry-lua/PKGBUILD @@ -0,0 +1,40 @@ +# Maintainer: vikingowl +pkgname=owlry-lua +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Lua runtime for Owlry - enables loading user-created Lua plugins" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-lua + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen --release +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/runtimes/liblua.so" +} diff --git a/aur/owlry-meta-essentials/.SRCINFO b/aur/owlry-meta-essentials/.SRCINFO new file mode 100644 index 0000000..95dba52 --- /dev/null +++ b/aur/owlry-meta-essentials/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = owlry-meta-essentials + pkgdesc = Essential plugins for Owlry (calculator, system, ssh, scripts, bookmarks) + pkgver = 1.0.0 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = any + license = GPL-3.0-or-later + depends = owlry + depends = owlry-plugin-bookmarks + depends = owlry-plugin-calculator + depends = owlry-plugin-scripts + depends = owlry-plugin-ssh + depends = owlry-plugin-system + conflicts = owlry-essentials + replaces = owlry-essentials + +pkgname = owlry-meta-essentials diff --git a/aur/owlry-meta-essentials/PKGBUILD b/aur/owlry-meta-essentials/PKGBUILD new file mode 100644 index 0000000..1b2c7f6 --- /dev/null +++ b/aur/owlry-meta-essentials/PKGBUILD @@ -0,0 +1,18 @@ +# Maintainer: vikingowl +pkgname=owlry-meta-essentials +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Essential plugins for Owlry (calculator, system, ssh, scripts, bookmarks)" +arch=('any') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=( + 'owlry' + 'owlry-plugin-bookmarks' + 'owlry-plugin-calculator' + 'owlry-plugin-scripts' + 'owlry-plugin-ssh' + 'owlry-plugin-system' +) +replaces=('owlry-essentials') +conflicts=('owlry-essentials') diff --git a/aur/owlry-meta-full/.SRCINFO b/aur/owlry-meta-full/.SRCINFO new file mode 100644 index 0000000..5880d6b --- /dev/null +++ b/aur/owlry-meta-full/.SRCINFO @@ -0,0 +1,27 @@ +pkgbase = owlry-meta-full + pkgdesc = Complete Owlry installation with all plugins + pkgver = 1.0.0 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = any + license = GPL-3.0-or-later + depends = owlry + depends = owlry-plugin-bookmarks + depends = owlry-plugin-calculator + depends = owlry-plugin-scripts + depends = owlry-plugin-ssh + depends = owlry-plugin-system + depends = owlry-plugin-clipboard + depends = owlry-plugin-emoji + depends = owlry-plugin-filesearch + depends = owlry-plugin-systemd + depends = owlry-plugin-websearch + depends = owlry-plugin-media + depends = owlry-plugin-pomodoro + depends = owlry-plugin-weather + optdepends = owlry-lua: Lua runtime for custom user plugins + optdepends = owlry-rune: Rune runtime for custom user plugins + conflicts = owlry-full + replaces = owlry-full + +pkgname = owlry-meta-full diff --git a/aur/owlry-meta-full/PKGBUILD b/aur/owlry-meta-full/PKGBUILD new file mode 100644 index 0000000..74383f5 --- /dev/null +++ b/aur/owlry-meta-full/PKGBUILD @@ -0,0 +1,33 @@ +# Maintainer: vikingowl +pkgname=owlry-meta-full +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Complete Owlry installation with all plugins" +arch=('any') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=( + 'owlry' + # Essential plugins + 'owlry-plugin-bookmarks' + 'owlry-plugin-calculator' + 'owlry-plugin-scripts' + 'owlry-plugin-ssh' + 'owlry-plugin-system' + # Tool plugins + 'owlry-plugin-clipboard' + 'owlry-plugin-emoji' + 'owlry-plugin-filesearch' + 'owlry-plugin-systemd' + 'owlry-plugin-websearch' + # Widget plugins + 'owlry-plugin-media' + 'owlry-plugin-pomodoro' + 'owlry-plugin-weather' +) +optdepends=( + 'owlry-lua: Lua runtime for custom user plugins' + 'owlry-rune: Rune runtime for custom user plugins' +) +replaces=('owlry-full') +conflicts=('owlry-full') diff --git a/aur/owlry-meta-tools/.SRCINFO b/aur/owlry-meta-tools/.SRCINFO new file mode 100644 index 0000000..d50e234 --- /dev/null +++ b/aur/owlry-meta-tools/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = owlry-meta-tools + pkgdesc = Tool plugins for Owlry (clipboard, emoji, websearch, filesearch, systemd) + pkgver = 1.0.0 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = any + license = GPL-3.0-or-later + depends = owlry + depends = owlry-plugin-clipboard + depends = owlry-plugin-emoji + depends = owlry-plugin-filesearch + depends = owlry-plugin-systemd + depends = owlry-plugin-websearch + conflicts = owlry-tools + replaces = owlry-tools + +pkgname = owlry-meta-tools diff --git a/aur/owlry-meta-tools/PKGBUILD b/aur/owlry-meta-tools/PKGBUILD new file mode 100644 index 0000000..37b1c6f --- /dev/null +++ b/aur/owlry-meta-tools/PKGBUILD @@ -0,0 +1,18 @@ +# Maintainer: vikingowl +pkgname=owlry-meta-tools +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Tool plugins for Owlry (clipboard, emoji, websearch, filesearch, systemd)" +arch=('any') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=( + 'owlry' + 'owlry-plugin-clipboard' + 'owlry-plugin-emoji' + 'owlry-plugin-filesearch' + 'owlry-plugin-systemd' + 'owlry-plugin-websearch' +) +replaces=('owlry-tools') +conflicts=('owlry-tools') diff --git a/aur/owlry-meta-widgets/.SRCINFO b/aur/owlry-meta-widgets/.SRCINFO new file mode 100644 index 0000000..4b0b07c --- /dev/null +++ b/aur/owlry-meta-widgets/.SRCINFO @@ -0,0 +1,15 @@ +pkgbase = owlry-meta-widgets + pkgdesc = Widget plugins for Owlry (weather, media, pomodoro) + pkgver = 1.0.0 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = any + license = GPL-3.0-or-later + depends = owlry + depends = owlry-plugin-media + depends = owlry-plugin-pomodoro + depends = owlry-plugin-weather + conflicts = owlry-widgets + replaces = owlry-widgets + +pkgname = owlry-meta-widgets diff --git a/aur/owlry-meta-widgets/PKGBUILD b/aur/owlry-meta-widgets/PKGBUILD new file mode 100644 index 0000000..52860cd --- /dev/null +++ b/aur/owlry-meta-widgets/PKGBUILD @@ -0,0 +1,16 @@ +# Maintainer: vikingowl +pkgname=owlry-meta-widgets +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Widget plugins for Owlry (weather, media, pomodoro)" +arch=('any') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=( + 'owlry' + 'owlry-plugin-media' + 'owlry-plugin-pomodoro' + 'owlry-plugin-weather' +) +replaces=('owlry-widgets') +conflicts=('owlry-widgets') diff --git a/aur/owlry-plugin-bookmarks/.SRCINFO b/aur/owlry-plugin-bookmarks/.SRCINFO new file mode 100644 index 0000000..3a57dd5 --- /dev/null +++ b/aur/owlry-plugin-bookmarks/.SRCINFO @@ -0,0 +1,17 @@ +pkgbase = owlry-plugin-bookmarks + pkgdesc = Browser bookmarks plugin for Owlry (Firefox, Chrome, Chromium) + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-bookmarks.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + optdepends = firefox: Firefox bookmarks support + optdepends = chromium: Chromium bookmarks support + optdepends = google-chrome: Chrome bookmarks support + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-bookmarks diff --git a/aur/owlry-plugin-bookmarks/PKGBUILD b/aur/owlry-plugin-bookmarks/PKGBUILD new file mode 100644 index 0000000..4d42447 --- /dev/null +++ b/aur/owlry-plugin-bookmarks/PKGBUILD @@ -0,0 +1,46 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-bookmarks +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Browser bookmarks plugin for Owlry (Firefox, Chrome, Chromium)" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-bookmarks.install +optdepends=( + 'firefox: Firefox bookmarks support' + 'chromium: Chromium bookmarks support' + 'google-chrome: Chrome bookmarks support' +) +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-bookmarks + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-bookmarks/owlry-plugin-bookmarks.install b/aur/owlry-plugin-bookmarks/owlry-plugin-bookmarks.install new file mode 100644 index 0000000..c368ef6 --- /dev/null +++ b/aur/owlry-plugin-bookmarks/owlry-plugin-bookmarks.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libbookmarks.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_bookmarks.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-calculator/.SRCINFO b/aur/owlry-plugin-calculator/.SRCINFO new file mode 100644 index 0000000..18b4a54 --- /dev/null +++ b/aur/owlry-plugin-calculator/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = owlry-plugin-calculator + pkgdesc = Calculator plugin for Owlry - evaluate math expressions + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-calculator.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-calculator diff --git a/aur/owlry-plugin-calculator/PKGBUILD b/aur/owlry-plugin-calculator/PKGBUILD new file mode 100644 index 0000000..3a942f4 --- /dev/null +++ b/aur/owlry-plugin-calculator/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-calculator +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Calculator plugin for Owlry - evaluate math expressions" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-calculator.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-calculator + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-calculator/owlry-plugin-calculator.install b/aur/owlry-plugin-calculator/owlry-plugin-calculator.install new file mode 100644 index 0000000..cd2bb4c --- /dev/null +++ b/aur/owlry-plugin-calculator/owlry-plugin-calculator.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libcalculator.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_calculator.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-clipboard/.SRCINFO b/aur/owlry-plugin-clipboard/.SRCINFO new file mode 100644 index 0000000..a168712 --- /dev/null +++ b/aur/owlry-plugin-clipboard/.SRCINFO @@ -0,0 +1,16 @@ +pkgbase = owlry-plugin-clipboard + pkgdesc = Clipboard history plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-clipboard.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = cliphist + depends = wl-clipboard + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-clipboard diff --git a/aur/owlry-plugin-clipboard/PKGBUILD b/aur/owlry-plugin-clipboard/PKGBUILD new file mode 100644 index 0000000..f1144e1 --- /dev/null +++ b/aur/owlry-plugin-clipboard/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-clipboard +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Clipboard history plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'cliphist' 'wl-clipboard') +makedepends=('cargo') +install=owlry-plugin-clipboard.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-clipboard + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-clipboard/owlry-plugin-clipboard.install b/aur/owlry-plugin-clipboard/owlry-plugin-clipboard.install new file mode 100644 index 0000000..28ad1c8 --- /dev/null +++ b/aur/owlry-plugin-clipboard/owlry-plugin-clipboard.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libclipboard.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_clipboard.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-emoji/.SRCINFO b/aur/owlry-plugin-emoji/.SRCINFO new file mode 100644 index 0000000..3c7dc5a --- /dev/null +++ b/aur/owlry-plugin-emoji/.SRCINFO @@ -0,0 +1,16 @@ +pkgbase = owlry-plugin-emoji + pkgdesc = Emoji picker plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-emoji.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = wl-clipboard + depends = noto-fonts-emoji + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-emoji diff --git a/aur/owlry-plugin-emoji/PKGBUILD b/aur/owlry-plugin-emoji/PKGBUILD new file mode 100644 index 0000000..852ec8b --- /dev/null +++ b/aur/owlry-plugin-emoji/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-emoji +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Emoji picker plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'wl-clipboard' 'noto-fonts-emoji') +makedepends=('cargo') +install=owlry-plugin-emoji.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-emoji + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-emoji/owlry-plugin-emoji.install b/aur/owlry-plugin-emoji/owlry-plugin-emoji.install new file mode 100644 index 0000000..3a0b8a0 --- /dev/null +++ b/aur/owlry-plugin-emoji/owlry-plugin-emoji.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libemoji.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_emoji.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-filesearch/.SRCINFO b/aur/owlry-plugin-filesearch/.SRCINFO new file mode 100644 index 0000000..4ef1293 --- /dev/null +++ b/aur/owlry-plugin-filesearch/.SRCINFO @@ -0,0 +1,16 @@ +pkgbase = owlry-plugin-filesearch + pkgdesc = File search plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-filesearch.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + optdepends = fd: fast file finding (recommended) + optdepends = mlocate: locate-based file search + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-filesearch diff --git a/aur/owlry-plugin-filesearch/PKGBUILD b/aur/owlry-plugin-filesearch/PKGBUILD new file mode 100644 index 0000000..ee09aef --- /dev/null +++ b/aur/owlry-plugin-filesearch/PKGBUILD @@ -0,0 +1,45 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-filesearch +pkgver=0.4.10 +pkgrel=1 +pkgdesc="File search plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-filesearch.install +optdepends=( + 'fd: fast file finding (recommended)' + 'mlocate: locate-based file search' +) +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-filesearch + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-filesearch/owlry-plugin-filesearch.install b/aur/owlry-plugin-filesearch/owlry-plugin-filesearch.install new file mode 100644 index 0000000..cefedb1 --- /dev/null +++ b/aur/owlry-plugin-filesearch/owlry-plugin-filesearch.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libfilesearch.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_filesearch.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-media/.SRCINFO b/aur/owlry-plugin-media/.SRCINFO new file mode 100644 index 0000000..a30c6b4 --- /dev/null +++ b/aur/owlry-plugin-media/.SRCINFO @@ -0,0 +1,15 @@ +pkgbase = owlry-plugin-media + pkgdesc = Media player controls plugin for Owlry (MPRIS) + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-media.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = playerctl + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-media diff --git a/aur/owlry-plugin-media/PKGBUILD b/aur/owlry-plugin-media/PKGBUILD new file mode 100644 index 0000000..06e8527 --- /dev/null +++ b/aur/owlry-plugin-media/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-media +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Media player controls plugin for Owlry (MPRIS)" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'playerctl') +makedepends=('cargo') +install=owlry-plugin-media.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-media + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-media/owlry-plugin-media.install b/aur/owlry-plugin-media/owlry-plugin-media.install new file mode 100644 index 0000000..662c5f0 --- /dev/null +++ b/aur/owlry-plugin-media/owlry-plugin-media.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libmedia.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_media.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-pomodoro/.SRCINFO b/aur/owlry-plugin-pomodoro/.SRCINFO new file mode 100644 index 0000000..ef9e930 --- /dev/null +++ b/aur/owlry-plugin-pomodoro/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = owlry-plugin-pomodoro + pkgdesc = Pomodoro timer widget plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-pomodoro.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-pomodoro diff --git a/aur/owlry-plugin-pomodoro/PKGBUILD b/aur/owlry-plugin-pomodoro/PKGBUILD new file mode 100644 index 0000000..ee2209e --- /dev/null +++ b/aur/owlry-plugin-pomodoro/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-pomodoro +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Pomodoro timer widget plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-pomodoro.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-pomodoro + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-pomodoro/owlry-plugin-pomodoro.install b/aur/owlry-plugin-pomodoro/owlry-plugin-pomodoro.install new file mode 100644 index 0000000..9170205 --- /dev/null +++ b/aur/owlry-plugin-pomodoro/owlry-plugin-pomodoro.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libpomodoro.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_pomodoro.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-scripts/.SRCINFO b/aur/owlry-plugin-scripts/.SRCINFO new file mode 100644 index 0000000..0a728d4 --- /dev/null +++ b/aur/owlry-plugin-scripts/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = owlry-plugin-scripts + pkgdesc = Custom scripts provider plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-scripts.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-scripts diff --git a/aur/owlry-plugin-scripts/PKGBUILD b/aur/owlry-plugin-scripts/PKGBUILD new file mode 100644 index 0000000..abd9cd4 --- /dev/null +++ b/aur/owlry-plugin-scripts/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-scripts +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Custom scripts provider plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-scripts.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-scripts + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-scripts/owlry-plugin-scripts.install b/aur/owlry-plugin-scripts/owlry-plugin-scripts.install new file mode 100644 index 0000000..db24748 --- /dev/null +++ b/aur/owlry-plugin-scripts/owlry-plugin-scripts.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libscripts.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_scripts.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-ssh/.SRCINFO b/aur/owlry-plugin-ssh/.SRCINFO new file mode 100644 index 0000000..18a9256 --- /dev/null +++ b/aur/owlry-plugin-ssh/.SRCINFO @@ -0,0 +1,15 @@ +pkgbase = owlry-plugin-ssh + pkgdesc = SSH host launcher plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-ssh.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = openssh + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-ssh diff --git a/aur/owlry-plugin-ssh/PKGBUILD b/aur/owlry-plugin-ssh/PKGBUILD new file mode 100644 index 0000000..efef994 --- /dev/null +++ b/aur/owlry-plugin-ssh/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-ssh +pkgver=0.4.10 +pkgrel=1 +pkgdesc="SSH host launcher plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'openssh') +makedepends=('cargo') +install=owlry-plugin-ssh.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-ssh + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-ssh/owlry-plugin-ssh.install b/aur/owlry-plugin-ssh/owlry-plugin-ssh.install new file mode 100644 index 0000000..f363a40 --- /dev/null +++ b/aur/owlry-plugin-ssh/owlry-plugin-ssh.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libssh.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_ssh.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-system/.SRCINFO b/aur/owlry-plugin-system/.SRCINFO new file mode 100644 index 0000000..a3ff150 --- /dev/null +++ b/aur/owlry-plugin-system/.SRCINFO @@ -0,0 +1,15 @@ +pkgbase = owlry-plugin-system + pkgdesc = System actions plugin for Owlry (shutdown, reboot, logout, etc.) + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-system.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = systemd + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-system diff --git a/aur/owlry-plugin-system/PKGBUILD b/aur/owlry-plugin-system/PKGBUILD new file mode 100644 index 0000000..ecc1cb7 --- /dev/null +++ b/aur/owlry-plugin-system/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-system +pkgver=0.4.10 +pkgrel=1 +pkgdesc="System actions plugin for Owlry (shutdown, reboot, logout, etc.)" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'systemd') +makedepends=('cargo') +install=owlry-plugin-system.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-system + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-system/owlry-plugin-system.install b/aur/owlry-plugin-system/owlry-plugin-system.install new file mode 100644 index 0000000..6bc37cb --- /dev/null +++ b/aur/owlry-plugin-system/owlry-plugin-system.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libsystem.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_system.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-systemd/.SRCINFO b/aur/owlry-plugin-systemd/.SRCINFO new file mode 100644 index 0000000..cd07864 --- /dev/null +++ b/aur/owlry-plugin-systemd/.SRCINFO @@ -0,0 +1,15 @@ +pkgbase = owlry-plugin-systemd + pkgdesc = Systemd service management plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-systemd.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + depends = systemd + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-systemd diff --git a/aur/owlry-plugin-systemd/PKGBUILD b/aur/owlry-plugin-systemd/PKGBUILD new file mode 100644 index 0000000..3f78c6b --- /dev/null +++ b/aur/owlry-plugin-systemd/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-systemd +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Systemd service management plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry' 'systemd') +makedepends=('cargo') +install=owlry-plugin-systemd.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-systemd + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-systemd/owlry-plugin-systemd.install b/aur/owlry-plugin-systemd/owlry-plugin-systemd.install new file mode 100644 index 0000000..5d0334f --- /dev/null +++ b/aur/owlry-plugin-systemd/owlry-plugin-systemd.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libsystemd.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_systemd.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-weather/.SRCINFO b/aur/owlry-plugin-weather/.SRCINFO new file mode 100644 index 0000000..074748c --- /dev/null +++ b/aur/owlry-plugin-weather/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = owlry-plugin-weather + pkgdesc = Weather widget plugin for Owlry + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-weather.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-weather diff --git a/aur/owlry-plugin-weather/PKGBUILD b/aur/owlry-plugin-weather/PKGBUILD new file mode 100644 index 0000000..ce79724 --- /dev/null +++ b/aur/owlry-plugin-weather/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-weather +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Weather widget plugin for Owlry" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-weather.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-weather + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-weather/owlry-plugin-weather.install b/aur/owlry-plugin-weather/owlry-plugin-weather.install new file mode 100644 index 0000000..bffce7c --- /dev/null +++ b/aur/owlry-plugin-weather/owlry-plugin-weather.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libweather.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_weather.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-plugin-websearch/.SRCINFO b/aur/owlry-plugin-websearch/.SRCINFO new file mode 100644 index 0000000..33b1c89 --- /dev/null +++ b/aur/owlry-plugin-websearch/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = owlry-plugin-websearch + pkgdesc = Web search plugin for Owlry (DuckDuckGo, Google, etc.) + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + install = owlry-plugin-websearch.install + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-plugin-websearch diff --git a/aur/owlry-plugin-websearch/PKGBUILD b/aur/owlry-plugin-websearch/PKGBUILD new file mode 100644 index 0000000..6cb675e --- /dev/null +++ b/aur/owlry-plugin-websearch/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: vikingowl +pkgname=owlry-plugin-websearch +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Web search plugin for Owlry (DuckDuckGo, Google, etc.)" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +install=owlry-plugin-websearch.install +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-plugin-websearch + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${_cratename//-/_}.so" +} diff --git a/aur/owlry-plugin-websearch/owlry-plugin-websearch.install b/aur/owlry-plugin-websearch/owlry-plugin-websearch.install new file mode 100644 index 0000000..e59d2ec --- /dev/null +++ b/aur/owlry-plugin-websearch/owlry-plugin-websearch.install @@ -0,0 +1,9 @@ +pre_install() { + # Remove old plugin files that may have different names + rm -f /usr/lib/owlry/plugins/libwebsearch.so + rm -f /usr/lib/owlry/plugins/libowlry_plugin_websearch.so +} + +pre_upgrade() { + pre_install +} diff --git a/aur/owlry-rune/.SRCINFO b/aur/owlry-rune/.SRCINFO new file mode 100644 index 0000000..860c5d2 --- /dev/null +++ b/aur/owlry-rune/.SRCINFO @@ -0,0 +1,13 @@ +pkgbase = owlry-rune + pkgdesc = Rune runtime for Owlry - enables loading user-created Rune plugins + pkgver = 0.4.10 + pkgrel = 1 + url = https://somegit.dev/Owlibou/owlry + arch = x86_64 + license = GPL-3.0-or-later + makedepends = cargo + depends = owlry + source = owlry-0.4.10.tar.gz::https://somegit.dev/Owlibou/owlry/archive/v0.4.10.tar.gz + b2sums = 2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d + +pkgname = owlry-rune diff --git a/aur/owlry-rune/PKGBUILD b/aur/owlry-rune/PKGBUILD new file mode 100644 index 0000000..e07f09d --- /dev/null +++ b/aur/owlry-rune/PKGBUILD @@ -0,0 +1,40 @@ +# Maintainer: vikingowl +pkgname=owlry-rune +pkgver=0.4.10 +pkgrel=1 +pkgdesc="Rune runtime for Owlry - enables loading user-created Rune plugins" +arch=('x86_64') +url="https://somegit.dev/Owlibou/owlry" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('cargo') +source=("owlry-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +b2sums=('2d3761ee892d7f283a65fa58ca6206735b1b3b6e7f764f839e8a2cbd2fee2ce446c4b992e664790439393e6cb2f21fb21abacdeaf8de9eca4514da86c608216d') + +_cratename=owlry-rune + +prepare() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +build() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo build -p $_cratename --frozen --release +} + +check() { + cd "owlry" + export RUSTUP_TOOLCHAIN=stable + export CARGO_TARGET_DIR=target + cargo test -p $_cratename --frozen --release +} + +package() { + cd "owlry" + install -Dm755 "target/release/lib${_cratename//-/_}.so" \ + "$pkgdir/usr/lib/owlry/runtimes/librune.so" +} diff --git a/docs/PLUGINS.md b/docs/PLUGINS.md new file mode 100644 index 0000000..40626c6 --- /dev/null +++ b/docs/PLUGINS.md @@ -0,0 +1,318 @@ +# Available Plugins + +Owlry's functionality is provided through a modular plugin system. This document describes all available plugins. + +## Plugin Categories + +### Static Providers + +Static providers load their items once at startup (and on manual refresh). They're best for data that doesn't change frequently. + +### Dynamic Providers + +Dynamic providers evaluate queries in real-time. Each keystroke triggers a new query, making them ideal for calculations, searches, and other interactive features. + +### Widget Providers + +Widget providers display persistent information at the top of results (weather, media controls, timers). + +--- + +## Core Plugins + +### owlry-plugin-calculator + +**Type:** Dynamic +**Prefix:** `:calc`, `=`, `calc ` +**Package:** `owlry-plugin-calculator` + +Evaluate mathematical expressions in real-time. + +**Examples:** +``` += 5 + 3 → 8 += sqrt(16) → 4 += sin(pi/2) → 1 += 2^10 → 1024 += (1 + 0.05)^12 → 1.7958... +``` + +**Supported operations:** +- Basic: `+`, `-`, `*`, `/`, `^` (power), `%` (modulo) +- Functions: `sin`, `cos`, `tan`, `asin`, `acos`, `atan` +- Functions: `sqrt`, `abs`, `floor`, `ceil`, `round` +- Functions: `ln`, `log`, `log10`, `exp` +- Constants: `pi`, `e` + +--- + +### owlry-plugin-system + +**Type:** Static +**Prefix:** `:sys` +**Package:** `owlry-plugin-system` + +System power and session management commands. + +**Actions:** +| Name | Description | Command | +|------|-------------|---------| +| Shutdown | Power off | `systemctl poweroff` | +| Reboot | Restart | `systemctl reboot` | +| Reboot into BIOS | UEFI setup | `systemctl reboot --firmware-setup` | +| Suspend | Sleep (RAM) | `systemctl suspend` | +| Hibernate | Sleep (disk) | `systemctl hibernate` | +| Lock Screen | Lock session | `loginctl lock-session` | +| Log Out | End session | `loginctl terminate-session self` | + +--- + +### owlry-plugin-ssh + +**Type:** Static +**Prefix:** `:ssh` +**Package:** `owlry-plugin-ssh` + +SSH hosts parsed from `~/.ssh/config`. + +**Features:** +- Parses `Host` entries from SSH config +- Ignores wildcards (`Host *`) +- Opens connections in your configured terminal + +--- + +### owlry-plugin-clipboard + +**Type:** Static +**Prefix:** `:clip` +**Package:** `owlry-plugin-clipboard` +**Dependencies:** `cliphist`, `wl-clipboard` + +Clipboard history integration with cliphist. + +**Features:** +- Shows last 50 clipboard entries +- Previews text content (truncated to 80 chars) +- Select to copy back to clipboard + +--- + +### owlry-plugin-emoji + +**Type:** Static +**Prefix:** `:emoji` +**Package:** `owlry-plugin-emoji` +**Dependencies:** `wl-clipboard` + +400+ searchable emoji with keywords. + +**Examples:** +``` +:emoji heart → ❤️ 💙 💚 💜 ... +:emoji smile → 😀 😃 😄 😁 ... +:emoji fire → 🔥 +``` + +--- + +### owlry-plugin-scripts + +**Type:** Static +**Prefix:** `:script` +**Package:** `owlry-plugin-scripts` + +User scripts from `~/.local/share/owlry/scripts/`. + +**Setup:** +```bash +mkdir -p ~/.local/share/owlry/scripts +cat > ~/.local/share/owlry/scripts/backup.sh << 'EOF' +#!/bin/bash +rsync -av ~/Documents /backup/ +notify-send "Backup complete" +EOF +chmod +x ~/.local/share/owlry/scripts/backup.sh +``` + +--- + +### owlry-plugin-bookmarks + +**Type:** Static +**Prefix:** `:bm` +**Package:** `owlry-plugin-bookmarks` + +Browser bookmarks from Firefox and Chromium-based browsers. + +**Supported browsers:** +- Firefox (reads places.sqlite) +- Google Chrome +- Brave +- Microsoft Edge +- Vivaldi +- Chromium + +--- + +### owlry-plugin-websearch + +**Type:** Dynamic +**Prefix:** `:web`, `?`, `web ` +**Package:** `owlry-plugin-websearch` + +Web search with configurable search engine. + +**Examples:** +``` +? rust programming → Search for "rust programming" +web linux tips → Search for "linux tips" +``` + +**Configuration:** +```toml +[providers] +search_engine = "duckduckgo" # or: google, bing, startpage +# custom_search_url = "https://search.example.com/?q={}" +``` + +--- + +### owlry-plugin-filesearch + +**Type:** Dynamic +**Prefix:** `:file`, `/`, `find ` +**Package:** `owlry-plugin-filesearch` +**Dependencies:** `fd` (recommended) or `mlocate` + +Real-time file search. + +**Examples:** +``` +/ .bashrc → Find files matching ".bashrc" +find config → Find files matching "config" +``` + +**Configuration:** +```toml +[providers] +file_search_max_results = 50 +# file_search_paths = ["/home", "/etc"] # Custom search paths +``` + +--- + +### owlry-plugin-systemd + +**Type:** Static (with submenu) +**Prefix:** `:uuctl` +**Package:** `owlry-plugin-systemd` +**Dependencies:** `systemd` + +User systemd services with action submenus. + +**Features:** +- Lists user services (`systemctl --user`) +- Shows service status (running/stopped/failed) +- Submenu actions: start, stop, restart, enable, disable, status + +**Usage:** +1. Search `:uuctl docker` +2. Select a service +3. Choose action from submenu + +--- + +## Widget Plugins + +### owlry-plugin-weather + +**Type:** Widget (Static) +**Package:** `owlry-plugin-weather` + +Current weather displayed at the top of results. + +**Supported APIs:** +- wttr.in (default, no API key required) +- OpenWeatherMap (requires API key) +- Open-Meteo (no API key required) + +**Note:** Weather configuration is currently embedded in the plugin. Future versions will support runtime configuration. + +**Features:** +- Temperature, condition, humidity, wind speed +- Weather icons from Weather Icons font +- 15-minute cache +- Click to open detailed forecast + +--- + +### owlry-plugin-media + +**Type:** Widget (Static) +**Package:** `owlry-plugin-media` + +MPRIS media player controls. + +**Features:** +- Shows currently playing track +- Artist, title, album art +- Play/pause, next, previous controls +- Works with Spotify, Firefox, VLC, etc. + +--- + +### owlry-plugin-pomodoro + +**Type:** Widget (Static) +**Package:** `owlry-plugin-pomodoro` + +Pomodoro timer with work/break cycles. + +**Features:** +- Configurable work session duration +- Configurable break duration +- Session counter +- Desktop notifications on phase completion +- Persistent state across sessions + +**Controls:** +- Start/Pause timer +- Skip to next phase +- Reset timer and sessions + +--- + +## Bundle Packages + +For convenience, plugins are available in bundle meta-packages: + +| Bundle | Plugins | +|--------|---------| +| `owlry-meta-essentials` | calculator, system, ssh, scripts, bookmarks | +| `owlry-meta-widgets` | weather, media, pomodoro | +| `owlry-meta-tools` | clipboard, emoji, websearch, filesearch, systemd | +| `owlry-meta-full` | All of the above | + +```bash +# Install everything +yay -S owlry-meta-full + +# Or pick a bundle +yay -S owlry-meta-essentials owlry-meta-widgets +``` + +--- + +## Runtime Packages + +For custom user plugins written in Lua or Rune: + +| Package | Description | +|---------|-------------| +| `owlry-lua` | Lua 5.4 runtime for user plugins | +| `owlry-rune` | Rune runtime for user plugins | + +User plugins are placed in `~/.config/owlry/plugins/`. + +See [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md) for creating custom plugins. diff --git a/docs/PLUGIN_DEVELOPMENT.md b/docs/PLUGIN_DEVELOPMENT.md new file mode 100644 index 0000000..604a827 --- /dev/null +++ b/docs/PLUGIN_DEVELOPMENT.md @@ -0,0 +1,571 @@ +# Plugin Development Guide + +This guide covers creating plugins for Owlry. There are three ways to extend Owlry: + +1. **Native plugins** (Rust) — Best performance, ABI-stable interface +2. **Lua plugins** — Easy scripting, requires `owlry-lua` runtime +3. **Rune plugins** — Safe scripting with Rust-like syntax, requires `owlry-rune` runtime + +--- + +## Quick Start + +### Native Plugin (Rust) + +```bash +# Create a new plugin crate +cargo new --lib owlry-plugin-myplugin +cd owlry-plugin-myplugin +``` + +Edit `Cargo.toml`: +```toml +[package] +name = "owlry-plugin-myplugin" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +owlry-plugin-api = { git = "https://somegit.dev/Owlibou/owlry" } +abi_stable = "0.11" +``` + +Edit `src/lib.rs`: +```rust +use abi_stable::std_types::{ROption, RStr, RString, RVec}; +use owlry_plugin_api::{ + owlry_plugin, PluginInfo, PluginItem, ProviderHandle, ProviderInfo, + ProviderKind, ProviderPosition, API_VERSION, +}; + +extern "C" fn plugin_info() -> PluginInfo { + PluginInfo { + id: RString::from("myplugin"), + name: RString::from("My Plugin"), + version: RString::from(env!("CARGO_PKG_VERSION")), + description: RString::from("A custom plugin"), + api_version: API_VERSION, + } +} + +extern "C" fn plugin_providers() -> RVec { + vec![ProviderInfo { + id: RString::from("myplugin"), + name: RString::from("My Plugin"), + prefix: ROption::RSome(RString::from(":my")), + icon: RString::from("application-x-executable"), + provider_type: ProviderKind::Static, + type_id: RString::from("myplugin"), + position: ProviderPosition::Normal, + priority: 0, // Use frecency-based ordering + }].into() +} + +extern "C" fn provider_init(_provider_id: RStr<'_>) -> ProviderHandle { + ProviderHandle::null() +} + +extern "C" fn provider_refresh(_handle: ProviderHandle) -> RVec { + vec![ + PluginItem::new("item-1", "Hello World", "echo 'Hello!'") + .with_description("A greeting") + .with_icon("face-smile"), + ].into() +} + +extern "C" fn provider_query(_handle: ProviderHandle, _query: RStr<'_>) -> RVec { + RVec::new() +} + +extern "C" fn provider_drop(_handle: ProviderHandle) {} + +owlry_plugin! { + info: plugin_info, + providers: plugin_providers, + init: provider_init, + refresh: provider_refresh, + query: provider_query, + drop: provider_drop, +} +``` + +Build and install: +```bash +cargo build --release +sudo cp target/release/libowlry_plugin_myplugin.so /usr/lib/owlry/plugins/ +``` + +### Lua Plugin + +```bash +# Requires owlry-lua runtime +yay -S owlry-lua + +# Create plugin directory +mkdir -p ~/.config/owlry/plugins/my-lua-plugin +``` + +Create `~/.config/owlry/plugins/my-lua-plugin/plugin.toml`: +```toml +[plugin] +id = "my-lua-plugin" +name = "My Lua Plugin" +version = "0.1.0" +description = "A custom Lua plugin" +entry_point = "init.lua" + +[[providers]] +id = "myluaprovider" +name = "My Lua Provider" +prefix = ":mylua" +icon = "application-x-executable" +type = "static" +type_id = "mylua" +``` + +Create `~/.config/owlry/plugins/my-lua-plugin/init.lua`: +```lua +local owlry = require("owlry") + +-- Called once at startup for static providers +function refresh() + return { + owlry.item("item-1", "Hello from Lua", "echo 'Hello Lua!'") + :description("A Lua greeting") + :icon("face-smile"), + } +end + +-- Called per-keystroke for dynamic providers +function query(q) + return {} +end +``` + +--- + +## Native Plugin API + +### Plugin VTable + +Every native plugin must export a function that returns a vtable: + +```rust +#[repr(C)] +pub struct PluginVTable { + pub info: extern "C" fn() -> PluginInfo, + pub providers: extern "C" fn() -> RVec, + pub provider_init: extern "C" fn(provider_id: RStr<'_>) -> ProviderHandle, + pub provider_refresh: extern "C" fn(handle: ProviderHandle) -> RVec, + pub provider_query: extern "C" fn(handle: ProviderHandle, query: RStr<'_>) -> RVec, + pub provider_drop: extern "C" fn(handle: ProviderHandle), +} +``` + +Use the `owlry_plugin!` macro to generate the export: + +```rust +owlry_plugin! { + info: my_info_fn, + providers: my_providers_fn, + init: my_init_fn, + refresh: my_refresh_fn, + query: my_query_fn, + drop: my_drop_fn, +} +``` + +### PluginInfo + +```rust +pub struct PluginInfo { + pub id: RString, // Unique ID (e.g., "calculator") + pub name: RString, // Display name + pub version: RString, // Semantic version + pub description: RString, // Short description + pub api_version: u32, // Must match API_VERSION +} +``` + +### ProviderInfo + +```rust +pub struct ProviderInfo { + pub id: RString, // Provider ID within plugin + pub name: RString, // Display name + pub prefix: ROption, // Activation prefix (e.g., ":calc") + pub icon: RString, // Default icon name + pub provider_type: ProviderKind, // Static or Dynamic + pub type_id: RString, // Short ID for badges + pub position: ProviderPosition, // Normal or Widget + pub priority: i32, // Result ordering (higher = first) +} + +pub enum ProviderKind { + Static, // Items loaded at startup via refresh() + Dynamic, // Items computed per-query via query() +} + +pub enum ProviderPosition { + Normal, // Standard results (sorted by score/frecency) + Widget, // Displayed at top when query is empty +} +``` + +### PluginItem + +```rust +pub struct PluginItem { + pub id: RString, // Unique item ID + pub name: RString, // Display name + pub description: ROption, // Optional description + pub icon: ROption, // Optional icon + pub command: RString, // Command to execute + pub terminal: bool, // Run in terminal? + pub keywords: RVec, // Search keywords + pub score_boost: i32, // Frecency boost +} + +// Builder pattern +let item = PluginItem::new("id", "Name", "command") + .with_description("Description") + .with_icon("icon-name") + .with_terminal(true) + .with_keywords(vec!["tag1".to_string(), "tag2".to_string()]) + .with_score_boost(100); +``` + +### ProviderHandle + +For stateful providers, use `ProviderHandle` to store state: + +```rust +struct MyState { + items: Vec, + cache: HashMap, +} + +extern "C" fn provider_init(_: RStr<'_>) -> ProviderHandle { + let state = Box::new(MyState { + items: Vec::new(), + cache: HashMap::new(), + }); + ProviderHandle::from_box(state) +} + +extern "C" fn provider_refresh(handle: ProviderHandle) -> RVec { + if handle.ptr.is_null() { + return RVec::new(); + } + + let state = unsafe { &mut *(handle.ptr as *mut MyState) }; + state.items = load_items(); + state.items.clone().into() +} + +extern "C" fn provider_drop(handle: ProviderHandle) { + if !handle.ptr.is_null() { + unsafe { handle.drop_as::(); } + } +} +``` + +### Host API + +Plugins can use host-provided functions: + +```rust +use owlry_plugin_api::{notify, notify_with_icon, log_info, log_warn, log_error}; + +// Send notifications +notify("Title", "Body text"); +notify_with_icon("Title", "Body", "dialog-information"); + +// Logging +log_info("Plugin loaded successfully"); +log_warn("Cache miss, fetching data"); +log_error("Failed to connect to API"); +``` + +### Submenu Support + +Plugins can provide submenus for detailed actions: + +```rust +// Return an item that opens a submenu +PluginItem::new( + "service-docker", + "Docker", + "SUBMENU:systemd:docker.service", // Special command format +) + +// Handle submenu query (query starts with "?SUBMENU:") +extern "C" fn provider_query(handle: ProviderHandle, query: RStr<'_>) -> RVec { + let q = query.as_str(); + + if let Some(data) = q.strip_prefix("?SUBMENU:") { + // Return submenu actions + return vec![ + PluginItem::new("start", "Start", format!("systemctl start {}", data)), + PluginItem::new("stop", "Stop", format!("systemctl stop {}", data)), + ].into(); + } + + RVec::new() +} +``` + +--- + +## Lua Plugin API + +### Plugin Manifest (plugin.toml) + +```toml +[plugin] +id = "my-plugin" +name = "My Plugin" +version = "1.0.0" +description = "Plugin description" +entry_point = "init.lua" +owlry_version = ">=0.4.0" # Optional version constraint + +[permissions] +fs = ["read"] # File system access +http = true # HTTP requests +process = true # Spawn processes + +[[providers]] +id = "provider1" +name = "Provider Name" +prefix = ":prefix" +icon = "icon-name" +type = "static" # or "dynamic" +type_id = "shortid" +``` + +### Lua API + +```lua +local owlry = require("owlry") + +-- Create items +local item = owlry.item(id, name, command) + :description("Description") + :icon("icon-name") + :terminal(false) + :keywords({"tag1", "tag2"}) + +-- Notifications +owlry.notify("Title", "Body") +owlry.notify_icon("Title", "Body", "icon-name") + +-- Logging +owlry.log.info("Message") +owlry.log.warn("Warning") +owlry.log.error("Error") + +-- File operations (requires fs permission) +local content = owlry.fs.read("/path/to/file") +local files = owlry.fs.list("/path/to/dir") +local exists = owlry.fs.exists("/path") + +-- HTTP requests (requires http permission) +local response = owlry.http.get("https://api.example.com/data") +local json = owlry.json.decode(response) + +-- Process execution (requires process permission) +local output = owlry.process.run("ls", {"-la"}) + +-- Cache (persistent across sessions) +owlry.cache.set("key", value, ttl_seconds) +local value = owlry.cache.get("key") +``` + +### Provider Functions + +```lua +-- Static provider: called once at startup +function refresh() + return { + owlry.item("id1", "Item 1", "command1"), + owlry.item("id2", "Item 2", "command2"), + } +end + +-- Dynamic provider: called on each keystroke +function query(q) + if q == "" then + return {} + end + + return { + owlry.item("result", "Result for: " .. q, "echo " .. q), + } +end +``` + +--- + +## Rune Plugin API + +Rune plugins use a Rust-like syntax with memory safety. + +### Plugin Manifest + +```toml +[plugin] +id = "my-rune-plugin" +name = "My Rune Plugin" +version = "1.0.0" +entry_point = "main.rn" + +[[providers]] +id = "runeprovider" +name = "Rune Provider" +type = "static" +``` + +### Rune API + +```rune +use owlry::{Item, log, notify}; + +pub fn refresh() { + let items = []; + + items.push(Item::new("id", "Name", "command") + .description("Description") + .icon("icon-name")); + + items +} + +pub fn query(q) { + if q.is_empty() { + return []; + } + + log::info(`Query: {q}`); + + [Item::new("result", `Result: {q}`, `echo {q}`)] +} +``` + +--- + +## Best Practices + +### Performance + +1. **Static providers**: Do expensive work in `refresh()`, not `items()` +2. **Dynamic providers**: Keep `query()` fast (<50ms) +3. **Cache data**: Use persistent cache for API responses +4. **Lazy loading**: Don't load all items if only a few are needed + +### Error Handling + +```rust +// Native: Return empty vec on error, log the issue +extern "C" fn provider_refresh(handle: ProviderHandle) -> RVec { + match load_data() { + Ok(items) => items.into(), + Err(e) => { + log_error(&format!("Failed to load: {}", e)); + RVec::new() + } + } +} +``` + +```lua +-- Lua: Wrap in pcall for safety +function refresh() + local ok, result = pcall(function() + return load_items() + end) + + if not ok then + owlry.log.error("Failed: " .. result) + return {} + end + + return result +end +``` + +### Icons + +Use freedesktop icon names for consistency: +- `application-x-executable` — Generic executable +- `folder` — Directories +- `text-x-generic` — Text files +- `face-smile` — Emoji/reactions +- `system-shutdown` — Power actions +- `network-server` — SSH/network +- `edit-paste` — Clipboard + +### Testing + +```bash +# Build and test native plugin +cargo build --release -p owlry-plugin-myplugin +cargo test -p owlry-plugin-myplugin + +# Install for testing +sudo cp target/release/libowlry_plugin_myplugin.so /usr/lib/owlry/plugins/ + +# Test with verbose logging +RUST_LOG=debug owlry +``` + +--- + +## Publishing to AUR + +### PKGBUILD Template + +```bash +# Maintainer: Your Name +pkgname=owlry-plugin-myplugin +pkgver=0.1.0 +pkgrel=1 +pkgdesc="My custom Owlry plugin" +arch=('x86_64') +url="https://github.com/you/owlry-plugin-myplugin" +license=('GPL-3.0-or-later') +depends=('owlry') +makedepends=('rust' 'cargo') +source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") +sha256sums=('...') + +build() { + cd "$pkgname-$pkgver" + cargo build --release +} + +package() { + cd "$pkgname-$pkgver" + install -Dm755 "target/release/lib${pkgname//-/_}.so" \ + "$pkgdir/usr/lib/owlry/plugins/lib${pkgname//-/_}.so" +} +``` + +--- + +## Example Plugins + +The owlry repository includes 13 native plugins as reference implementations: + +| Plugin | Type | Highlights | +|--------|------|------------| +| `owlry-plugin-calculator` | Dynamic | Math parsing, expression evaluation | +| `owlry-plugin-weather` | Static/Widget | HTTP API, JSON parsing, caching | +| `owlry-plugin-systemd` | Static | Submenu actions, service management | +| `owlry-plugin-pomodoro` | Static/Widget | State persistence, notifications | +| `owlry-plugin-clipboard` | Static | External process integration | + +Browse the source at `crates/owlry-plugin-*/` for implementation details.