primo commit
This commit is contained in:
Executable
+202
@@ -0,0 +1,202 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user