#!/usr/bin/env bash # install.sh - Script di installazione per Webpaper # Requisiti: bash, pip3, xrandr (solitamente preinstallato) # --- Colori --- RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # --- Variabili --- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SOLE_HTML="$SCRIPT_DIR/sistema_stellare/sole.html" ALPHA_HTML="$SCRIPT_DIR/sistema_stellare/alpha-centauri.html" AUTOSTART_DIR="$HOME/.config/autostart" log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } # --- 1. Rilevamento Distribuzione --- detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release echo "$ID" else echo "unknown" fi } DISTRO=$(detect_distro) # --- 2. Installazione Dipendenze (corretta per tutte le distro) --- install_deps() { log_info "Rilevata distribuzione: $DISTRO" local sudo_cmd="" if [ "$(id -u)" -ne 0 ]; then sudo_cmd="sudo" fi # Definizione dei pacchetti per ogni famiglia declare -A pkg_map pkg_map[ubuntu]="python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 xdotool wmctrl" pkg_map[debian]="python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 xdotool wmctrl" pkg_map[linuxmint]="python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 xdotool wmctrl" pkg_map[pop]="python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 xdotool wmctrl" pkg_map[arch]="python-gobject gtk3 webkit2gtk-4.1 xdotool wmctrl" pkg_map[manjaro]="python-gobject gtk3 webkit2gtk-4.1 xdotool wmctrl" pkg_map[endeavouros]="python-gobject gtk3 webkit2gtk-4.1 xdotool wmctrl" pkg_map[fedora]="python3-gobject gtk3 webkit2gtk4.1 xdotool wmctrl" pkg_map[rhel]="python3-gobject gtk3 webkit2gtk4.1 xdotool wmctrl" local packages=(${pkg_map[$DISTRO]}) if [ ${#packages[@]} -eq 0 ]; then log_warn "Distribuzione sconosciuta ($DISTRO). Installa manualmente:" log_warn "- python3-gi (PyGObject)" log_warn "- GTK3" log_warn "- WebKit2GTK 4.1" log_warn "- xdotool" return 0 fi # Verifica pacchetti installati local missing=() for pkg in "${packages[@]}"; do local installed=false case "$DISTRO" in arch|manjaro|endeavouros) if pacman -Q "$pkg" &>/dev/null; then installed=true; fi ;; fedora|rhel) if rpm -q "$pkg" &>/dev/null; then installed=true; fi ;; *) if dpkg -s "$pkg" &>/dev/null; then installed=true; fi ;; esac if [ "$installed" = false ]; then missing+=("$pkg") fi done if [ ${#missing[@]} -eq 0 ]; then log_info "Tutte le dipendenze di sistema sono installate." return 0 fi log_warn "Pacchetti mancanti: ${missing[*]}" log_info "Installazione in corso..." case "$DISTRO" in arch|manjaro|endeavouros) $sudo_cmd pacman -S --noconfirm "${missing[@]}" ;; fedora|rhel) $sudo_cmd dnf install -y "${missing[@]}" ;; *) $sudo_cmd apt-get update && $sudo_cmd apt-get install -y "${missing[@]}" ;; esac if [ $? -ne 0 ]; then log_error "Errore durante l'installazione delle dipendenze." exit 1 fi } # --- 3. Installazione Python --- install_python_pkg() { log_info "Installazione pacchetto Python..." if ! command -v pip3 &>/dev/null && ! command -v pip &>/dev/null; then log_error "pip non trovato. Installalo prima." exit 1 fi # Usa pip3 se disponibile, altrimenti pip local pip_cmd="pip3" if ! command -v pip3 &>/dev/null; then pip_cmd="pip" fi $pip_cmd install -e "$SCRIPT_DIR" --user if [ $? -ne 0 ]; then log_error "Errore installazione pacchetto Python." exit 1 fi log_info "Pacchetto Python installato." } # --- 4. Rilevamento Monitor --- detect_monitors() { local count count=$(xrandr --query 2>/dev/null | grep " connected" | wc -l) if [ "$count" -eq 0 ]; then log_warn "Impossibile rilevare monitor con xrandr. Imposto 1 monitor." echo 1 else echo "$count" fi } # --- 5. Configurazione Autostart (CORRETTA) --- setup_autostart() { read -p "Vuoi aggiungere Webpaper all'avvio automatico? (y/N): " answer if [[ ! "$answer" =~ ^[Yy]$ ]]; then log_info "Autostart saltato." return fi mkdir -p "$AUTOSTART_DIR" local monitor_count=$(detect_monitors) local exec_cmd="" if [ "$monitor_count" -ge 2 ]; then exec_cmd="python3 -m webpaper \"$SOLE_HTML\" \"$ALPHA_HTML\"" log_info "Rilevati $monitor_count monitor. Configurerò Webpaper per mostrare:" log_info " - Monitor 1: Sole.html" log_info " - Monitor 2: Alpha-Centauri.html" else exec_cmd="python3 -m webpaper \"$SOLE_HTML\"" log_info "Rilevato $monitor_count monitor. Configurerò Webpaper per mostrare:" log_info " - Monitor 1: Sole.html" fi # IMPORTANTE: qui correggiamo l'here-document e le virgolette cat > "$AUTOSTART_DIR/webpaper.desktop" <<-EOF [Desktop Entry] Type=Application Name=Webpaper Comment=Pagina web come sfondo del desktop Exec=sh -c "cd \"$SCRIPT_DIR\" && sleep 3 && exec $exec_cmd" Terminal=false X-GNOME-Autostart-enabled=true X-GNOME-Autostart-Delay=0 Hidden=false NoDisplay=false EOF log_info "File creato in: $AUTOSTART_DIR/webpaper.desktop" } # --- Esecuzione --- main() { echo "========================================" echo " Webpaper Installer" echo "========================================" install_deps install_python_pkg setup_autostart echo "========================================" log_info "Installazione completata!" echo "========================================" echo "Per avviare manualmente: webpaper" echo "Oppure: python3 -m webpaper" } main