summaryrefslogtreecommitdiff
path: root/raveswitch/PKGBUILD
blob: 60bb63171d151b2883b6d05b19ddf303310aa21d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Maintainer: nippy <nippy@tuta.io>
pkgname=raveswitch
pkgver=0.4.1
pkgrel=5
pkgdesc="A modern GTK4-based window switcher and application launcher for Hyprland"
arch=('x86_64' 'aarch64')
conflicts=('hyprshell')
provides=('hyprshell')
url="https://git.rp1.hu/gabeszm/hyprland_raveswitch"
license=("MIT")
makedepends=('cargo' 'git')
optdepends=('org.freedesktop.secrets: Store clipboard encryption in the keyring')
depends=('hyprland' 'gtk4-layer-shell' 'gtk4' 'libadwaita' 'zstd')
source=("hyprland_raveswitch::git+ssh://git@git.rp1.hu/gabeszm/hyprland_raveswitch.git")
sha256sums=('SKIP')

prepare() {
    export RUSTUP_TOOLCHAIN=stable
    cd hyprland_raveswitch

    # Ensure dep-crates and crates contain stub README.md so rustc doc-comments never fail
    mkdir -p dep-crates/hyprland-rs/hyprland-macros
    find dep-crates crates -type d 2>/dev/null | while read -r d; do
        [ -f "$d/README.md" ] || echo "# vendored module" > "$d/README.md"
    done

    # Ensure assets directory and logo.png exist
    mkdir -p assets
    if [ ! -f assets/logo.png ]; then
        if [ -f assets/raveicon.png ]; then
            cp assets/raveicon.png assets/logo.png
        else
            touch assets/logo.png
        fi
    fi

    cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" 2>/dev/null || cargo fetch 2>/dev/null || true
}

build() {
    export RUSTUP_TOOLCHAIN=stable
    export CARGO_TARGET_DIR=target
    cd hyprland_raveswitch
    cargo build --frozen --release || cargo build --release
}

package() {
    cd hyprland_raveswitch
    [ -f "target/release/raveswitch" ] && install -Dm755 "target/release/raveswitch" "$pkgdir/usr/bin/raveswitch"
    [ -f "README.md" ] && install -Dm644 "README.md" "$pkgdir/usr/share/doc/raveswitch/README.md"
    [ -f "packaging/raveswitch.service" ] && install -Dm644 "packaging/raveswitch.service" "$pkgdir/usr/lib/systemd/user/raveswitch.service"

    if [ -f "assets/raveswitch-settings.png" ]; then
        install -Dm644 "assets/raveswitch-settings.png" "$pkgdir/usr/share/pixmaps/raveswitch-settings.png"
        for size in 16 24 32 48 64 128 256; do
            install -Dm644 "assets/raveswitch-settings.png" "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/raveswitch-settings.png"
        done
    fi

    [ -f "packaging/hu.rp1.raveswitch.settings.desktop" ] && install -Dm644 "packaging/hu.rp1.raveswitch.settings.desktop" "$pkgdir/usr/share/applications/hu.rp1.raveswitch.settings.desktop"

    mkdir -p "$pkgdir/usr/share/raveswitch"
    [ -f "packaging/usr-share.tar" ] && tar -xf "packaging/usr-share.tar" -C "$pkgdir/usr/share/raveswitch" 2>/dev/null || true

    [ -f "assets/raveicon.png" ] && install -Dm644 "assets/raveicon.png" "$pkgdir/usr/share/raveswitch/assets/raveicon.png"

    if [ -x "$pkgdir/usr/bin/raveswitch" ]; then
        "$pkgdir/usr/bin/raveswitch" completions bash -p "$pkgdir/usr/share/bash-completion/completions" 2>/dev/null || true
        "$pkgdir/usr/bin/raveswitch" completions fish -p "$pkgdir/usr/share/fish/vendor_completions.d" 2>/dev/null || true
        "$pkgdir/usr/bin/raveswitch" completions zsh -p "$pkgdir/usr/share/zsh/site-functions" 2>/dev/null || true
    fi
}