202 lines
5.9 KiB
Bash
Executable File
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 |