Install desktop entry and icon across AUR, Homebrew, and install.sh

Adds cliamp.desktop and Cliamp.png at repo root, then wires them into
all three packaging surfaces: the AUR PKGBUILD generator drops them
under /usr/share/applications and hicolor + pixmaps; the Homebrew
formula generator fetches them as resources and stages them on Linux;
install.sh installs them under XDG dirs (~/.local/share or
/usr/local/share) matching the binary location.
This commit is contained in:
Bjarne Øverli
2026-05-01 20:36:25 +02:00
parent a2613a45a6
commit 78b447b73d
5 changed files with 105 additions and 0 deletions
+4
View File
@@ -56,6 +56,10 @@ jobs:
package() { package() {
cd "${pkgname}-${pkgver}" cd "${pkgname}-${pkgver}"
install -Dm755 cliamp "${pkgdir}/usr/bin/cliamp" install -Dm755 cliamp "${pkgdir}/usr/bin/cliamp"
install -Dm644 cliamp.desktop "${pkgdir}/usr/share/applications/cliamp.desktop"
install -Dm644 Cliamp.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/cliamp.png"
install -Dm644 Cliamp.png "${pkgdir}/usr/share/pixmaps/cliamp.png"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
} }
HEREDOC HEREDOC
+29
View File
@@ -237,17 +237,26 @@ jobs:
name: checksums name: checksums
- name: Set env vars - name: Set env vars
env:
REPO: ${{ github.repository }}
run: | run: |
TAG="${GITHUB_REF#refs/tags/}" TAG="${GITHUB_REF#refs/tags/}"
VERSION="${TAG#v}" VERSION="${TAG#v}"
cat checksums.txt cat checksums.txt
curl -fsSL "https://raw.githubusercontent.com/${REPO}/${TAG}/Cliamp.png" -o Cliamp.png
curl -fsSL "https://raw.githubusercontent.com/${REPO}/${TAG}/cliamp.desktop" -o cliamp.desktop
SHA_ICON=$(sha256sum Cliamp.png | awk '{print $1}')
SHA_DESKTOP=$(sha256sum cliamp.desktop | awk '{print $1}')
echo "VERSION=${VERSION}" >> $GITHUB_ENV echo "VERSION=${VERSION}" >> $GITHUB_ENV
echo "TAG=${TAG}" >> $GITHUB_ENV echo "TAG=${TAG}" >> $GITHUB_ENV
echo "SHA_DARWIN_ARM64=$(grep 'darwin-arm64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV echo "SHA_DARWIN_ARM64=$(grep 'darwin-arm64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV
echo "SHA_DARWIN_AMD64=$(grep 'darwin-amd64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV echo "SHA_DARWIN_AMD64=$(grep 'darwin-amd64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV
echo "SHA_LINUX_ARM64=$(grep 'linux-arm64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV echo "SHA_LINUX_ARM64=$(grep 'linux-arm64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV
echo "SHA_LINUX_AMD64=$(grep 'linux-amd64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV echo "SHA_LINUX_AMD64=$(grep 'linux-amd64' checksums.txt | awk '{print $1}')" >> $GITHUB_ENV
echo "SHA_ICON=${SHA_ICON}" >> $GITHUB_ENV
echo "SHA_DESKTOP=${SHA_DESKTOP}" >> $GITHUB_ENV
- name: Generate and push formula - name: Generate and push formula
env: env:
@@ -297,6 +306,16 @@ jobs:
end end
end end
resource "icon" do
url "https://raw.githubusercontent.com/bjarneo/cliamp/${TAG}/Cliamp.png"
sha256 "${SHA_ICON}"
end
resource "desktop" do
url "https://raw.githubusercontent.com/bjarneo/cliamp/${TAG}/cliamp.desktop"
sha256 "${SHA_DESKTOP}"
end
def install def install
if build.head? if build.head?
# Build from source for HEAD # Build from source for HEAD
@@ -306,6 +325,16 @@ jobs:
binary = Dir["cliamp-*"].first binary = Dir["cliamp-*"].first
bin.install binary => "cliamp" bin.install binary => "cliamp"
end end
# Ship icon under pkgshare so it's always available; expose as
# XDG icon + desktop entry on Linux for app-launcher integration.
resource("icon").stage { pkgshare.install "Cliamp.png" => "cliamp.png" }
on_linux do
(share/"icons/hicolor/512x512/apps").install_symlink pkgshare/"cliamp.png"
(share/"pixmaps").install_symlink pkgshare/"cliamp.png"
resource("desktop").stage { (share/"applications").install "cliamp.desktop" }
end
end end
test do test do
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

+11
View File
@@ -0,0 +1,11 @@
[Desktop Entry]
Name=cliamp
GenericName=Music Player
Comment=A retro terminal music player inspired by Winamp 2.x
Exec=cliamp
Icon=cliamp
Terminal=true
Type=Application
Categories=Audio;Music;Player;AudioVideo;ConsoleOnly;
Keywords=music;audio;player;terminal;tui;winamp;radio;podcast;
StartupNotify=false
+61
View File
@@ -89,3 +89,64 @@ else
fi fi
echo "Installed cliamp to ${INSTALL_DIR}/cliamp" echo "Installed cliamp to ${INSTALL_DIR}/cliamp"
# Install desktop entry + icon (Linux only).
# Pick user-local share dir for ~/.local/bin installs, /usr/local/share otherwise.
if [ "$OS" = "linux" ]; then
case "$INSTALL_DIR" in
"$HOME"/*)
SHARE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}"
SUDO=""
;;
*)
SHARE_DIR="/usr/local/share"
SUDO="sudo"
[ -w "$SHARE_DIR" ] && SUDO=""
;;
esac
APP_DIR="${SHARE_DIR}/applications"
ICON_DIR="${SHARE_DIR}/icons/hicolor/512x512/apps"
ICON_TMP=$(mktemp)
DESKTOP_TMP=$(mktemp)
ICON_URL="https://raw.githubusercontent.com/${REPO}/HEAD/Cliamp.png"
GOT_ICON=false
if command -v curl > /dev/null; then
curl -fSL -o "$ICON_TMP" "$ICON_URL" 2>/dev/null && GOT_ICON=true
elif command -v wget > /dev/null; then
wget -qO "$ICON_TMP" "$ICON_URL" 2>/dev/null && GOT_ICON=true
fi
cat > "$DESKTOP_TMP" <<EOF
[Desktop Entry]
Name=cliamp
GenericName=Music Player
Comment=A retro terminal music player inspired by Winamp 2.x
Exec=${INSTALL_DIR}/cliamp
Icon=cliamp
Terminal=true
Type=Application
Categories=Audio;Music;Player;AudioVideo;ConsoleOnly;
Keywords=music;audio;player;terminal;tui;winamp;radio;podcast;
StartupNotify=false
EOF
$SUDO mkdir -p "$APP_DIR" "$ICON_DIR"
$SUDO install -m 0644 "$DESKTOP_TMP" "${APP_DIR}/cliamp.desktop"
if [ "$GOT_ICON" = true ]; then
$SUDO install -m 0644 "$ICON_TMP" "${ICON_DIR}/cliamp.png"
echo "Installed icon to ${ICON_DIR}/cliamp.png"
fi
rm -f "$ICON_TMP" "$DESKTOP_TMP"
echo "Installed desktop entry to ${APP_DIR}/cliamp.desktop"
if command -v update-desktop-database > /dev/null; then
$SUDO update-desktop-database "$APP_DIR" 2>/dev/null || true
fi
if command -v gtk-update-icon-cache > /dev/null; then
$SUDO gtk-update-icon-cache -q "${SHARE_DIR}/icons/hicolor" 2>/dev/null || true
fi
fi