Cliente remoto GTK4 para G Radio Player: se conecta al servidor TCP embebido en radio-player para controlar el reproductor y editar programación (pautaje, parrilla, botonera, buscador, reportes) desde otra máquina de la LAN.
88 lines
3.4 KiB
Bash
Executable File
88 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# ─── G Radio Client — instalador ─────────────────────────────────────────────
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
BIN_DIR="$HOME/.local/bin"
|
|
DESKTOP_DIR="$HOME/.local/share/applications"
|
|
ICON="gr-client"
|
|
|
|
# ── 1. Verificar que el binario fue compilado ─────────────────────────────────
|
|
if [ ! -f "target/release/gr-client" ]; then
|
|
echo "ERROR: target/release/gr-client no encontrado."
|
|
echo " Compila el proyecto antes de instalar:"
|
|
echo " cargo build --release"
|
|
exit 1
|
|
fi
|
|
|
|
# ── 2. Dependencias del sistema ───────────────────────────────────────────────
|
|
echo "==> Verificando dependencias..."
|
|
|
|
if command -v apt &>/dev/null; then
|
|
MISSING=()
|
|
for pkg in libgtk-4-1 libglib2.0-0 ffmpeg mlocate; do
|
|
if ! dpkg -l "$pkg" 2>/dev/null | grep -q "^ii"; then
|
|
MISSING+=("$pkg")
|
|
fi
|
|
done
|
|
if [ ${#MISSING[@]} -gt 0 ]; then
|
|
echo " Instalando: ${MISSING[*]}"
|
|
sudo apt install -y "${MISSING[@]}"
|
|
else
|
|
echo " Dependencias OK."
|
|
fi
|
|
elif command -v dnf &>/dev/null; then
|
|
sudo dnf install -y gtk4 glib2 ffmpeg mlocate 2>/dev/null || true
|
|
else
|
|
echo " AVISO: gestor de paquetes no reconocido."
|
|
echo " Instala manualmente: gtk4, ffmpeg, mlocate (o plocate)"
|
|
fi
|
|
|
|
# ── 3. Instalar binario ───────────────────────────────────────────────────────
|
|
echo "==> Instalando gr-client en $BIN_DIR..."
|
|
mkdir -p "$BIN_DIR"
|
|
cp target/release/gr-client "$BIN_DIR/gr-client"
|
|
chmod +x "$BIN_DIR/gr-client"
|
|
|
|
# ── 4. Crear directorios de configuración ────────────────────────────────────
|
|
echo "==> Preparando directorios de configuración..."
|
|
mkdir -p "$HOME/.gradio/data" # para la base de datos de locate (locatedb)
|
|
|
|
# ── 5. Entrada de menú de escritorio ─────────────────────────────────────────
|
|
echo "==> Registrando en el menú de aplicaciones..."
|
|
mkdir -p "$DESKTOP_DIR"
|
|
cat > "$DESKTOP_DIR/gr-client.desktop" << DESKTOP
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=G Radio Client
|
|
GenericName=Radio Remote Client
|
|
Comment=Cliente remoto para G Radio Player
|
|
Exec=$BIN_DIR/gr-client
|
|
Icon=$ICON
|
|
Categories=AudioVideo;Audio;
|
|
Terminal=false
|
|
StartupNotify=true
|
|
DESKTOP
|
|
update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
|
|
|
|
# ── 6. Advertir si ~/.local/bin no está en PATH ───────────────────────────────
|
|
if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
|
|
echo ""
|
|
echo " AVISO: $HOME/.local/bin no está en tu PATH."
|
|
echo " Agrega esta línea a tu ~/.bashrc o ~/.zshrc:"
|
|
echo ""
|
|
echo ' export PATH="$HOME/.local/bin:$PATH"'
|
|
echo ""
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ Instalación completa."
|
|
echo ""
|
|
echo " Ejecutar: gr-client"
|
|
echo " O desde menú: busca 'G Radio Client'"
|
|
echo ""
|
|
echo " Configuración: ~/.gradio/client_config.json"
|
|
echo " Índice locate: ~/.gradio/data/locatedb (generado con ⟳ Índice en el buscador)"
|
|
echo ""
|
|
echo " Para desinstalar: ./uninstall.sh"
|