#!/usr/bin/env bash
# SHiRE Mini ARMOR OS launcher.
# Manual launcher only. Does not configure autostart.

set -Eeuo pipefail

EXPECTED_HOST="Work"
REPO="/home/shire3d/ARMOR"
BOOT_VIDEO="$REPO/assets/shire_boot.mp4"

fail() {
  echo "FAIL: $1" >&2
  exit 1
}

[ "$(hostname)" = "$EXPECTED_HOST" ] ||
  fail "Expected host '$EXPECTED_HOST'; found '$(hostname)'."

cd "$REPO"

[ -x ./venv/bin/python ] ||
  fail "ARMOR virtual environment is unavailable."

export DISPLAY="${DISPLAY:-:0}"
export XAUTHORITY="${XAUTHORITY:-/home/ray/.Xauthority}"
export QT_QPA_PLATFORM=xcb
export ARMOR_DISPLAY_PROFILE=laptop
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_SCALE_FACTOR="${QT_SCALE_FACTOR:-1.0}"

[ -r "$XAUTHORITY" ] ||
  fail "Xauthority is unavailable: $XAUTHORITY"

xdpyinfo >/dev/null 2>&1 ||
  fail "Cannot access graphical display $DISPLAY."

echo "========================================"
echo " SHIRE MINI — ARMOR OS COMMAND CORE"
echo " Host:    $(hostname)"
echo " Display: $DISPLAY"
echo " Scale:   $QT_SCALE_FACTOR"
echo "========================================"

if [ -f "$BOOT_VIDEO" ]; then
  if command -v ffplay >/dev/null 2>&1; then
    ffplay -loglevel error -nostats -autoexit \
      -fs -noborder -an "$BOOT_VIDEO" \
      </dev/null >/dev/null 2>&1 || true
  elif command -v cvlc >/dev/null 2>&1; then
    cvlc --fullscreen --play-and-exit \
      --no-video-title-show --no-audio \
      "$BOOT_VIDEO" \
      </dev/null >/dev/null 2>&1 || true
  else
    echo "WARNING: No launch-video player is installed."
  fi
fi

./venv/bin/python main.py &
ARMOR_PID=$!

WINDOW=""

for _ in $(seq 1 60); do
  kill -0 "$ARMOR_PID" 2>/dev/null ||
    wait "$ARMOR_PID"

  WINDOW="$(
    wmctrl -lGpx 2>/dev/null |
    awk -v pid="$ARMOR_PID" '
      $3 == pid {
        area = $6 * $7
        if (area > largest) {
          largest = area
          window = $1
        }
      }
      END { print window }
    '
  )"

  [ -n "$WINDOW" ] && break
  sleep 0.25
done

if [ -n "$WINDOW" ]; then
  wmctrl -ir "$WINDOW" \
    -b remove,hidden,shaded || true

  wmctrl -ir "$WINDOW" \
    -b add,maximized_vert,maximized_horz,fullscreen || true

  wmctrl -ia "$WINDOW" || true
  echo "ARMOR fullscreen confirmed on window $WINDOW."
else
  echo "WARNING: ARMOR window was not detected by wmctrl."
fi

wait "$ARMOR_PID"
