Files
ferrosonic/install.sh
Jamie Hewitt 4e8616dd97 Update install script and README to use precompiled release binary
Install script now downloads the latest GitHub release binary instead of
cloning and building from source. Build dependencies are no longer needed
for the quick install path.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 00:31:43 +00:00

75 lines
2.3 KiB
Bash
Executable File

#!/bin/sh
set -e
REPO="https://github.com/jaidaken/ferrosonic"
INSTALL_DIR="/usr/local/bin"
echo "Ferrosonic installer"
echo "===================="
# Detect architecture
ARCH=$(uname -m)
case "$ARCH" in
x86_64) ASSET="ferrosonic-linux-x86_64" ;;
*)
echo "No precompiled binary for $ARCH. Please build from source."
echo "See: $REPO#manual-build"
exit 1
;;
esac
# Detect package manager and install runtime dependencies
if command -v pacman >/dev/null 2>&1; then
echo "Detected Arch Linux"
sudo pacman -S --needed --noconfirm mpv pipewire wireplumber dbus
elif command -v dnf >/dev/null 2>&1; then
echo "Detected Fedora"
sudo dnf install -y mpv pipewire wireplumber dbus
elif command -v apt >/dev/null 2>&1; then
echo "Detected Debian/Ubuntu"
sudo apt update
sudo apt install -y mpv pipewire wireplumber libdbus-1-3
else
echo "Unknown package manager. Please install manually: mpv, pipewire, wireplumber, dbus"
echo "Then re-run this script."
exit 1
fi
# Optional cava install
echo ""
echo "Optional: cava is an audio visualizer that ferrosonic can display"
echo "alongside the now-playing bar. It is not required but adds a nice"
echo "visual element that changes color with your selected theme."
echo ""
printf "Install cava? [y/N] "
read -r answer </dev/tty
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
if command -v pacman >/dev/null 2>&1; then
sudo pacman -S --needed --noconfirm cava
elif command -v dnf >/dev/null 2>&1; then
sudo dnf install -y cava
elif command -v apt >/dev/null 2>&1; then
sudo apt install -y cava
else
echo "Could not install cava automatically. Install it manually from: https://github.com/karlstav/cava"
fi
echo "cava installed. Enable it in ferrosonic under Settings (F5)."
else
echo "Skipping cava. You can install it later and enable it in Settings (F5)."
fi
# Download latest release binary
echo "Downloading ferrosonic..."
LATEST=$(curl -sI "$REPO/releases/latest" | grep -i '^location:' | sed 's/.*tag\///' | tr -d '\r')
DOWNLOAD_URL="$REPO/releases/download/$LATEST/$ASSET"
TMPFILE=$(mktemp)
curl -sL "$DOWNLOAD_URL" -o "$TMPFILE"
chmod +x "$TMPFILE"
# Install
sudo mv "$TMPFILE" "$INSTALL_DIR/ferrosonic"
echo ""
echo "Ferrosonic $LATEST installed to $INSTALL_DIR/ferrosonic"
echo "Run 'ferrosonic' to start."