Package Details: grayjay-bin 13-1

Git Clone URL: https://aur.archlinux.org/grayjay-bin.git (read-only, click to copy)
Package Base: grayjay-bin
Description: Grayjay Desktop - follow creators, not platforms (privacy- and freedom-respecting client for YouTube, Rumble, Twitch, Spotify etc)
Upstream URL: https://grayjay.app/desktop/
Licenses: Source First License 1.1
Conflicts: grayjay-git
Provides: grayjay
Submitter: nathanchere
Maintainer: nathanchere
Last Packager: nathanchere
Votes: 20
Popularity: 2.52
First Submitted: 2024-12-25 16:27 (UTC)
Last Updated: 2026-01-05 10:48 (UTC)

Pinned Comments

nathanchere commented on 2025-01-30 06:30 (UTC)

Sorry for the unreliable builds recently. I've spoken with Futo about the generic latestversion.zip downloads and have been advised about versioned links which they don't officially publish. Hopefully that should finally resolve the issue of this package breaking when a new release is published to the same download URL breaking checksums.

Latest Comments

1 2 3 4 Next › Last »

timrosu commented on 2025-12-09 20:39 (UTC)

Putting this here if anyone is interested:

I changed my pkgbuild to download zip archive directly from "latest branch" (link on their website). It's similar to how git- releases are meant to work, but without having to wait for it to compile. Zip gets extracted automatically by pacman with bsdtar and a pkgver() function finds version of this release and updates it. From there on everything works the same. Advantage of this approach is that when you want to update, you just come back into grayjay directory and run makepkg -si without editing PKGBUILD manually.

# Maintainer: Nathan Chere <git@nathanchere.com.au>
pkgname=grayjay-bin
pkgver=12
pkgrel=1
pkgdesc="Grayjay Desktop - follow creators, not platforms (privacy- and freedom-respecting client for YouTube, Rumble, Twitch, Spotify etc)"
arch=('x86_64')
url="https://grayjay.app/desktop/"
license=('Source First License 1.1')
depends=('gtk3' 'unzip' 'libnotify' 'nss' 'libxss' 'libxtst' 'xdg-utils' 'at-spi2-core' 'libsecret' 'libappindicator-gtk3' 'jq')
provides=('grayjay')
conflicts=('grayjay-git' 'grayjay')
options=(!strip)
_dl_filename="Grayjay.Desktop-linux-x64"
_filename="Grayjay.Desktop-linux-x64-v${pkgver}"
source=("${_dl_filename}.zip::https://updater.grayjay.app/Apps/Grayjay.Desktop/${_dl_filename}.zip")
sha256sums=('ba008a153255fff7adba5612c3d27b42509f7910043f4daf7f3c88c7f1c01a54')

pkgver() {
    VERSION="$(
        find -type f -name AppVersion.json \
            -exec jq -r '.Version' {} + |
            grep -v null |
            sort -n |
            tail -1
    )"
    printf "%s" $VERSION
}

package() {
    cd "${_filename}"

    # Create necessary directories
    install -dm755 "${pkgdir}/usr/share/grayjay"
    install -dm755 "${pkgdir}/usr/bin"
    install -dm755 "${pkgdir}/usr/share/applications"
    install -dm755 "${pkgdir}/usr/share/icons/hicolor/512x512/apps"

    # Create launcher script that copies app to user directory on first run
    cat >"${pkgdir}/usr/bin/grayjay" <<'EOF'
#!/bin/sh
APP_DIR="$HOME/.local/share/grayjay"
USER_VERSION="$(jq '.Version' $APP_DIR/AppVersion.json)"
SYSTEM_VERSION="$(pacman -Qi grayjay-bin | grep Version | awk  '{print $3}' | cut -d'-' -f1)"

install_grayjay(){
    mkdir -p "$APP_DIR"
    cp -r /usr/share/grayjay/* "$APP_DIR/"
    chmod u+w -R "$APP_DIR"
}

# Check if app is already installed in user directory
if [ ! -d "$APP_DIR" ] && echo "First run - installing Grayjay to $APP_DIR" || \
    [ "$USER_VERSION" -ne "$SYSTEM_VERSION" ] && echo "Version mismatch - installing system Grayjay to $APP_DIR"
then
    install_grayjay
fi

exec sh -c "cd '$APP_DIR' && exec ./Grayjay \"\$@\"" -- "$@"
EOF
    chmod 755 "${pkgdir}/usr/bin/grayjay"

    # Copy application files to system directory (will be copied to user dir on first run)
    cp -r ./* "${pkgdir}/usr/share/grayjay/"

    # Create desktop entry
    cat >"${pkgdir}/usr/share/applications/grayjay.desktop" <<EOF
[Desktop Entry]
Name=Grayjay
Comment=Privacy-respecting client for YouTube, Rumble, Twitch, Spotify etc
Exec=/usr/bin/grayjay
Icon=grayjay
Terminal=false
Type=Application
Categories=Network;Video;AudioVideo;
EOF

    # Install icon
    install -Dm644 "grayjay.png" \
        "${pkgdir}/usr/share/icons/hicolor/512x512/apps/grayjay.png"
}

timrosu commented on 2025-12-09 20:32 (UTC)

@nathanchere I noticed you manually extract downloaded zip in prepare() with unzip. Make sure to add noextract=("${_filename}") into the PKGBUILD (below sha256sums) to prevent duplicate extracts. Pacman by default automatically extracts downloaded archives with bsdtar.

pat commented on 2025-10-29 15:24 (UTC) (edited on 2025-10-29 15:24 (UTC) by pat)

@nathanchere I don't think that the URL pattern is broken for 12-1, the download worked just fine for me.
what doesn't work is the checksum verification, since the latest patch seems to only change the version number and not the shasum.

Additionally please remember to regenerate the .SRCINFO file when changing the PLGBUILD

nathanchere commented on 2025-10-28 10:54 (UTC)

Url pattern appears to be broken for bin release v12. If you "need" latest, grayjay (as opposed to grayjay-bin) is already at version 12.

nathanchere commented on 2025-10-27 00:38 (UTC)

@centaro you are welcome to adopt the issue of DDoS attacks on Arch infrastructure. Solve that and you will get 'speedier with updates' :P

sugaryviking commented on 2025-10-19 08:52 (UTC)

@timrosu thank you, adding this check to /usr/bin/grayjay worked!

timrosu commented on 2025-10-17 17:09 (UTC)

I made some changes to launch script and it now compares versions instead of only checking directory's existence.

    # Create launcher script that copies app to user directory on first run
    cat > "${pkgdir}/usr/bin/grayjay" << 'EOF'
#!/bin/sh
APP_DIR="$HOME/.local/share/grayjay"
USER_VERSION="$(jq '.Version' $APP_DIR/AppVersion.json)"
SYSTEM_VERSION="$(pacman -Qi grayjay-bin | grep Version | awk  '{print $3}' | cut -d'-' -f1)"

# Check if app is already installed in user directory
if [ ! -d "$APP_DIR" ] && echo "First run - installing Grayjay to $APP_DIR" || \
    [ "$USER_VERSION" -ne "$SYSTEM_VERSION" ] && echo "Version mismatch - installing system Grayjay to $APP_DIR"
then
    mkdir -p "$APP_DIR"
    cp -r /usr/share/grayjay/* "$APP_DIR/"
    chmod u+w -R "$APP_DIR"
fi

exec sh -c "cd '$APP_DIR' && exec ./Grayjay \"\$@\"" -- "$@"
EOF

It would be better to implement it directly in post_install() in PKGBUILD, but this is fine for now.

timrosu commented on 2025-10-17 14:24 (UTC)

I can adopt the package. I use grayjay desktop on daily basis. Expect updates when youtube video playback stops working on my end. Currently playback on v11 (it still shows v8 in settings) works for me for the first 59 seconds of the videos.

sugaryviking commented on 2025-10-15 06:02 (UTC)

[vmuser@defaultvm ~]$ grayjay Failure processing application bundle. Bundle header version compatibility check failed. Header version: -2046820352.3872520 A fatal error occurred while processing application bundle

error persists in current build

centaro commented on 2025-10-12 08:44 (UTC) (edited on 2025-10-12 11:11 (UTC) by centaro)

Is there anyone who would adopt this package? I would do it myself and try to be speedier with updates, but I am still trying to understand PKGBUILDs, so I do not think I am the right person technically.

I have not given up yet, but if anyone has the know-how and time, then it would be appreciated.