diff --git a/.SRCINFO b/.SRCINFO index affde0030183..8a62bc4541f0 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,21 +1,20 @@ -pkgbase = vicinae-bin +pkgbase = vicinae-appimage-bin pkgdesc = Raycast like FOSS app on Linux pkgver = 0.15.7 pkgrel = 1 url = https://github.com/vicinaehq/vicinae arch = x86_64 license = GPL3 - depends = nodejs - depends = qt6-base - depends = qt6-svg - depends = layer-shell-qt - depends = libqalculate - depends = qtkeychain-qt6 + makedepends = jq + makedepends = wget + depends = fuse provides = vicinae conflicts = vicinae - source = https://github.com/vicinaehq/vicinae/releases/download/v0.15.7/vicinae-linux-x86_64-v0.15.7.tar.gz - source = vicinae.hook - sha256sums = 481ee85d45f27f567c25cd15eb624aa60c9785acc0fb6641938fc36843d15a39 - sha256sums = 3e946bcb7f3c2faa3568218987012db336be92acff805a373b6c10bdeaa9e7a8 + options = !debug + options = !strip + source = github-release.json::https://api.github.com/repos/vicinaehq/vicinae/releases/latest + source = vicinae.sh + sha256sums = SKIP + sha256sums = a2dc7170ebfc13c0407b4e554eb372a77c6fae51770a8fb8d0f600485e11dd72 -pkgname = vicinae-bin +pkgname = vicinae-appimage-bin diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..016d49ad7940 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode/ +.upgrade.sh + diff --git a/.nvchecker.toml b/.nvchecker.toml deleted file mode 100644 index 5852e294b63a..000000000000 --- a/.nvchecker.toml +++ /dev/null @@ -1,5 +0,0 @@ -[vicinae-bin] -source = "github" -github = "vicinaehq/vicinae" -use_latest_release = true -prefix = "v" diff --git a/PKGBUILD b/PKGBUILD index f3b17fe3063e..5c57c43513c8 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,33 +1,57 @@ -# Maintainer: cilgin # Maintainer: Arjix +# Maintainer: cilgin -pkgname=vicinae-bin +pkgname=vicinae-appimage-bin pkgver=0.15.7 pkgrel=1 pkgdesc="Raycast like FOSS app on Linux" arch=('x86_64') url="https://github.com/vicinaehq/vicinae" +options=('!debug' '!strip') license=('GPL3') -depends=(nodejs qt6-base qt6-svg layer-shell-qt libqalculate qtkeychain-qt6) +depends=( fuse ) +makedepends=(jq wget) provides=("vicinae") conflicts=("vicinae") source=( - "${url}/releases/download/v$pkgver/${pkgname%-bin}-linux-$arch-v$pkgver.tar.gz" - "vicinae.hook" + "github-release.json::https://api.github.com/repos/vicinaehq/vicinae/releases/latest" + "vicinae.sh" ) -sha256sums=('481ee85d45f27f567c25cd15eb624aa60c9785acc0fb6641938fc36843d15a39' - '3e946bcb7f3c2faa3568218987012db336be92acff805a373b6c10bdeaa9e7a8') +sha256sums=('SKIP' + 'a2dc7170ebfc13c0407b4e554eb372a77c6fae51770a8fb8d0f600485e11dd72') + +pkgver() { + jq -r '.tag_name | ltrimstr("v")' github-release.json +} + +prepare() { + local asset download_url digest + asset=$(jq -r '.assets[] | select(.name | endswith(".AppImage"))' github-release.json) + + download_url=$(echo "$asset" | jq -r '.browser_download_url') + digest=$(echo "$asset" | jq -r '.digest | split(":")[1]') + + wget -q "$download_url" -O vicinae.Appimage + echo "${digest} vicinae.Appimage" | sha256sum -c || { + echo "[ERR]: The downloaded file is corrupt." + exit 1 + } + + chmod +x vicinae.Appimage + ./vicinae.Appimage --appimage-extract + +} package() { - install -dm755 "$pkgdir/usr" - cp -rp \ - "$srcdir/bin" \ - "$srcdir/share" \ - "$srcdir/lib" \ - "$pkgdir/usr" - - # Pacman hook - install -Dm644 "$srcdir/${pkgname%-bin}.hook" "$pkgdir/usr/share/libalpm/hooks/${pkgname%-bin}.hook" + install -dm755 "${pkgdir}/opt" + cp -a "${srcdir}/squashfs-root" "${pkgdir}/opt/vicinae" + + install -Dm755 "${srcdir}/vicinae.sh" "${pkgdir}/usr/bin/vicinae" + + install -Dm644 "${srcdir}/squashfs-root/vicinae.desktop" "${pkgdir}/usr/share/applications/vicinae.desktop" + install -Dm644 "${srcdir}/squashfs-root/vicinae.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/vicinae.png" + install -Dm644 "${srcdir}/squashfs-root/usr/lib/systemd/user/vicinae.service" "${pkgdir}/usr/lib/systemd/user/vicinae.service" + cp -a "${srcdir}/squashfs-root/usr/share/" "${pkgdir}/usr/share/" } diff --git a/vicinae.hook b/vicinae.hook deleted file mode 100644 index 11053d30b256..000000000000 --- a/vicinae.hook +++ /dev/null @@ -1,9 +0,0 @@ -[Trigger] -Operation = Upgrade -Type = Package -Target = vicinae-bin - -[Action] -Description = Restarting vicinae.service as a user unit if enabled/active... -When = PostTransaction -Exec = /usr/bin/bash -c '/usr/bin/loginctl list-users --no-legend | /usr/bin/awk "{print \$2}" | /usr/bin/xargs -I {} /usr/bin/runuser -u {} -- sh -c "/usr/bin/systemctl --user is-enabled vicinae.service && /usr/bin/systemctl --user restart vicinae.service"' || true diff --git a/vicinae.sh b/vicinae.sh new file mode 100755 index 000000000000..3d24af6ee606 --- /dev/null +++ b/vicinae.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +SQUASHFS_ROOT_DIR="/opt/vicinae" +APP_BINARY="$SQUASHFS_ROOT_DIR/usr/bin/vicinae" + +# Define library paths to search *inside* the extracted AppImage structure +LIB_DIRS=( + "$SQUASHFS_ROOT_DIR/usr/lib" + "$SQUASHFS_ROOT_DIR/usr/lib64" + "$SQUASHFS_ROOT_DIR/lib" + "$SQUASHFS_ROOT_DIR/lib64" +) + +# Build the new LD_LIBRARY_PATH +NEW_LD_PATH="" +for dir in "${LIB_DIRS[@]}"; do + if [ -d "$dir" ]; then + if [ -z "$NEW_LD_PATH" ]; then + NEW_LD_PATH="$dir" + else + NEW_LD_PATH="$NEW_LD_PATH:$dir" + fi + fi +done + +export LD_LIBRARY_PATH="$NEW_LD_PATH:$LD_LIBRARY_PATH" + +exec "$APP_BINARY" "$@" + +if [ $? -ne 0 ]; then + echo "Error: The application failed to execute or returned an error." + echo "Check if the APP_BINARY path in the script is correct and that the application binary is executable." +fi