#!/usr/bin/env bash
set -euo pipefail

echo "[1/4] Install packages (xscreensaver + build deps)"
sudo apt-get update
sudo apt-get install -y \
  xscreensaver xscreensaver-gl-extra xscreensaver-data-extra \
  build-essential libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libx11-dev git

echo "[2/4] Build + install gluqlo from source"
workdir="/tmp/gluqlo-build-$$"
rm -rf "$workdir"
mkdir -p "$workdir"
cd "$workdir"
git clone https://github.com/alexanderk23/gluqlo.git
cd gluqlo
make
sudo make install

echo "[3/4] Register gluqlo in ~/.xscreensaver"
mkdir -p "$HOME"
if [[ ! -f "$HOME/.xscreensaver" ]]; then
  # create a default config by launching once (non-fatal if it doesn't)
  (xscreensaver-demo >/dev/null 2>&1 & disown) || true
  sleep 1
  pkill -f xscreensaver-demo >/dev/null 2>&1 || true
fi
# Ensure a programs: section exists and add gluqlo right after it
if ! grep -q '^programs:' "$HOME/.xscreensaver" 2>/dev/null; then
  cat >> "$HOME/.xscreensaver" <<'EOF'
mode:           random
selected:       -1
programs:
EOF
fi
if ! grep -q 'gluqlo -root' "$HOME/.xscreensaver"; then
  # Insert after the first 'programs:' line
  tmpfile="$(mktemp)"
  awk 'BEGIN{done=0} {print} /^programs:/{ if(!done){print "  gluqlo -root \\n\\"; done=1}}' "$HOME/.xscreensaver" > "$tmpfile"
  mv "$tmpfile" "$HOME/.xscreensaver"
fi

echo "[4/4] Start xscreensaver daemon (current session)"
# Stop any existing instance (ignore errors)
xscreensaver-command -exit >/dev/null 2>&1 || true
xscreensaver -nosplash >/dev/null 2>&1 & disown

echo "Done. Next: run 'xscreensaver-demo' and choose 'gluqlo'."
echo "Tip (XFCE autostart): Settings Manager -> Session and Startup -> Application Autostart -> add: xscreensaver -nosplash"
