Files
webpaper/install.sh
T
2026-08-29 00:34:41 +02:00

202 lines
5.9 KiB
Bash
Executable File

#!/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