#!/bin/sh
# X session entry point for the Togen signage kiosk (DVI-1201 / DVI-1191 P4b).
# Started by togen-signage-kiosk.service via `startx`. Disables screen
# blanking and launches Chromium in kiosk mode against the /display page --
# all dashboard logic (reassignment, edits, Present) is server/browser-side
# (plan D3), so this script never changes based on what's assigned.
set -e

CONF=/etc/togen-signage/agent.conf
TOKEN_FILE=/etc/togen-signage/agent.token
PROFILE_DIR=/etc/togen-signage/chromium-profile

if [ -f "$CONF" ]; then
  . "$CONF"
fi
if [ -z "${TOGEN_HOST:-}" ]; then
  echo "TOGEN_HOST not set in $CONF" >&2
  exit 1
fi
if [ ! -f "$TOKEN_FILE" ]; then
  echo "agent token missing at $TOKEN_FILE" >&2
  exit 1
fi
AGENT_TOKEN=$(cat "$TOKEN_FILE")
URL="$TOGEN_HOST/display?token=$AGENT_TOKEN"

xset s off
xset -dpms
xset s noblank

if command -v unclutter >/dev/null 2>&1; then
  unclutter -idle 0.5 -root &
fi

CHROME_BIN=$(command -v chromium 2>/dev/null || command -v chromium-browser 2>/dev/null || true)
if [ -z "$CHROME_BIN" ]; then
  echo "chromium/chromium-browser not found on PATH" >&2
  exit 1
fi

mkdir -p "$PROFILE_DIR"

# --no-sandbox is required because this session runs as root (see README
# "Security notes" -- root was chosen to match the agent_token's root-only
# storage and keep a single-purpose kiosk simple; harden with a dedicated
# non-root user + Xwrapper.config allowed_users=anybody if that's a concern).
exec "$CHROME_BIN" \
  --kiosk \
  --noerrdialogs \
  --disable-infobars \
  --incognito \
  --no-first-run \
  --no-sandbox \
  --disable-translate \
  --disable-session-crashed-bubble \
  --disable-pinch \
  --overscroll-history-navigation=0 \
  --autoplay-policy=no-user-gesture-required \
  --check-for-update-interval=31536000 \
  --user-data-dir="$PROFILE_DIR" \
  "$URL"
