#!/bin/bash
# =============================================================================
# Gigantium Kiosk Setup — OKDO Rock 4 / Rock Pi 4 (Armbian Ubuntu + Xfce)
# =============================================================================
# Hurtig installation — kør denne linje i terminalen på skærmen:
#
#   bash <(curl -fsSL https://kalender.gigantium.dk/kiosk/kiosk-setup.sh)
#
# Eller download og kør manuelt (IKKE root):
#   bash kiosk-setup.sh
# =============================================================================

set -e

GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

info()  { echo -e "${GREEN}✔${NC}  $1"; }
warn()  { echo -e "${YELLOW}⚠${NC}  $1"; }
error() { echo -e "${RED}✖${NC}  $1"; exit 1; }

echo ""
echo "╔══════════════════════════════════════════╗"
echo "║     Gigantium Kiosk Setup                ║"
echo "╚══════════════════════════════════════════╝"
echo ""

# ── 1. Skærm-ID ──────────────────────────────────────────────────────────────
echo "Tilgængelige skærm-IDs (se screens-admin.php for den fulde liste):"
echo "  foyer-N  foyer-E  foyer-S  foyer-V  mellemgang  hal1  hal2  ..."
echo ""
read -rp "  Indtast skærm-ID for DENNE skærm: " SCREEN_ID </dev/tty

if [[ ! "$SCREEN_ID" =~ ^[a-zA-Z0-9_-]+$ ]]; then
    error "Ugyldigt ID — brug kun bogstaver, tal, bindestreg og underscore"
fi

# ── 2. Server-URL ─────────────────────────────────────────────────────────────
DEFAULT_URL="https://kalender.gigantium.dk"
read -rp "  Server-URL [${DEFAULT_URL}]: " SERVER_URL </dev/tty
SERVER_URL="${SERVER_URL:-$DEFAULT_URL}"
SERVER_URL="${SERVER_URL%/}"   # fjern evt. trailing slash

KIOSK_URL="${SERVER_URL}/kiosk/kiosk.html?screen=${SCREEN_ID}"

echo ""
info "Skærm-ID : $SCREEN_ID"
info "URL      : $KIOSK_URL"
echo ""
read -rp "Er det korrekt? [j/N] " CONFIRM </dev/tty
[[ "$CONFIRM" =~ ^[jJyY]$ ]] || { warn "Afbrudt."; exit 0; }
echo ""

# ── 3. Installer pakker ───────────────────────────────────────────────────────
info "Opdaterer pakkeliste..."
sudo apt-get update -qq

info "Installerer chromium, unclutter, x11-xserver-utils..."
# Find det rigtige pakkenavn (Raspberry Pi OS bruger 'chromium', andre 'chromium-browser')
if apt-get install --dry-run chromium-browser &>/dev/null 2>&1; then
    CHROMIUM_PKG="chromium-browser"
else
    CHROMIUM_PKG="chromium"
fi
sudo apt-get install -y -qq "$CHROMIUM_PKG" unclutter x11-xserver-utils

# ── 4. Opret kiosk-start.sh ──────────────────────────────────────────────────
KIOSK_SCRIPT="$HOME/kiosk-start.sh"

cat > "$KIOSK_SCRIPT" << STARTSCRIPT
#!/bin/bash
# Auto-genereret af kiosk-setup.sh
# Redigér SCREEN_ID herunder for at skifte skærm-ID

SCREEN_ID="${SCREEN_ID}"
KIOSK_URL="${SERVER_URL}/kiosk/kiosk.html?screen=\${SCREEN_ID}"

# Vent til X er klar
sleep 3

# Slå screensaver og strømstyring fra
xset s off
xset s noblank
xset -dpms

# Skjul musepil
unclutter -idle 0.5 -root &

# Ret Chromium crash-flag (undgår "Gendan sider"-dialog)
PREFS="\$HOME/.config/chromium/Default/Preferences"
if [ -f "\$PREFS" ]; then
    sed -i 's/"exited_cleanly":false/"exited_cleanly":true/g'   "\$PREFS"
    sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/g'     "\$PREFS"
fi

# Find skærmopløsning til --window-size
RESOLUTION=\$(xrandr 2>/dev/null | grep ' connected' | grep -oP '\d+x\d+' | head -1)
RESOLUTION="\${RESOLUTION:-1920x1080}"
WIN_W=\$(echo "\$RESOLUTION" | cut -dx -f1)
WIN_H=\$(echo "\$RESOLUTION" | cut -dx -f2)

# Start Chromium i kiosk-mode — genstarter automatisk ved nedbrud
CHROMIUM_BIN=\$(command -v chromium-browser 2>/dev/null || command -v chromium 2>/dev/null || echo "chromium")
while true; do
    \$CHROMIUM_BIN \\
        --kiosk \\
        --start-fullscreen \\
        --window-position=0,0 \\
        --window-size=\${WIN_W},\${WIN_H} \\
        --noerrdialogs \\
        --disable-infobars \\
        --no-first-run \\
        --disable-translate \\
        --disable-default-apps \\
        --disable-background-networking \\
        --disable-sync \\
        --disable-session-crashed-bubble \\
        --check-for-update-interval=31536000 \\
        --disable-gpu \\
        --disable-dev-shm-usage \\
        --no-sandbox \\
        --user-data-dir=/tmp/kiosk-profile \\
        "\$KIOSK_URL"
    sleep 5
done
STARTSCRIPT

chmod +x "$KIOSK_SCRIPT"
info "Kiosk-start script oprettet: $KIOSK_SCRIPT"

# ── 5. Autostart (XFCE) ───────────────────────────────────────────────────────
AUTOSTART_DIR="$HOME/.config/autostart"
mkdir -p "$AUTOSTART_DIR"

cat > "$AUTOSTART_DIR/gigantium-kiosk.desktop" << DESKTOP
[Desktop Entry]
Type=Application
Name=Gigantium Kiosk
Exec=$KIOSK_SCRIPT
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
DESKTOP

info "Autostart entry oprettet"

# ── 6. Auto-login (LightDM) ──────────────────────────────────────────────────
CURRENT_USER=$(whoami)
LIGHTDM_CONF="/etc/lightdm/lightdm.conf"

if [ -f "$LIGHTDM_CONF" ]; then
    # Sæt autologin-user
    if grep -q "^#autologin-user=" "$LIGHTDM_CONF"; then
        sudo sed -i "s/^#autologin-user=.*/autologin-user=${CURRENT_USER}/" "$LIGHTDM_CONF"
    elif ! grep -q "^autologin-user=" "$LIGHTDM_CONF"; then
        sudo sed -i "/^\[Seat:\*\]/a autologin-user=${CURRENT_USER}" "$LIGHTDM_CONF"
    fi
    # Sæt autologin-user-timeout til 0
    if grep -q "^#autologin-user-timeout=" "$LIGHTDM_CONF"; then
        sudo sed -i "s/^#autologin-user-timeout=.*/autologin-user-timeout=0/" "$LIGHTDM_CONF"
    fi
    info "Auto-login aktiveret for bruger: $CURRENT_USER"
else
    warn "LightDM config ikke fundet — auto-login skal sættes manuelt"
fi

# ── 7. Slå skærmudskifter/screensaver fra permanent ─────────────────────────
# XFCE power manager
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac       -s 0 2>/dev/null || true
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-off    -s 0 2>/dev/null || true
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-sleep  -s 0 2>/dev/null || true
# XFCE screensaver
xfconf-query -c xfce4-screensaver   -p /saver/enabled                          -s false 2>/dev/null || true

info "Skærm slukker/screensaver deaktiveret"

# ── Færdig ────────────────────────────────────────────────────────────────────
echo ""
echo "╔══════════════════════════════════════════╗"
echo "║  Setup færdig!                           ║"
echo "╚══════════════════════════════════════════╝"
echo ""
echo "  Skærm-ID : $SCREEN_ID"
echo "  URL      : $KIOSK_URL"
echo ""
echo "  For at ændre skærm-ID senere:"
echo "  nano ~/kiosk-start.sh  →  ret SCREEN_ID=..."
echo ""
read -rp "  Genstart nu? [j/N] " REBOOT </dev/tty
[[ "$REBOOT" =~ ^[jJyY]$ ]] && sudo reboot
