foxygit / infodisplay Log in
commits tags

/kiosk/kiosk-launcher.sh · 2.1 KB

raw
#!/usr/bin/env bash
# kiosk-launcher.sh — läser kiosk.conf, genererar sway output-config och startar sway.

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONF="$SCRIPT_DIR/kiosk.conf"
SWAY_CONF="$SCRIPT_DIR/sway.conf"
OUTPUT_CONF="/tmp/kiosk-sway-outputs.conf"
HDMI_STATUS="/sys/class/drm/card0-HDMI-A-1/status"

# Vänta på HDMI-A-1 här — vi är nu inuti TTY-kontexten och kan skriva till tty1
while [ "$(cat "$HDMI_STATUS" 2>/dev/null)" != "connected" ]; do
  echo "  Anslut HDMI-kabeln (HDMI-A-1) — kiosken startar automatiskt..."
  sleep 3
done
echo "  HDMI-A-1 ansluten — startar..."

# Starta Flask om den inte redan svarar
if ! curl -sf --max-time 2 -o /dev/null http://127.0.0.1:5000/display 2>/dev/null; then
  bash "$SCRIPT_DIR/start.sh" &
fi

# Vänta tills kiosk-servern svarar
until curl -sf -o /dev/null http://127.0.0.1:5000/display 2>/dev/null; do sleep 1; done

# Vänta tills WiFi har en giltig IP (max 40 s) — annars visar idle-skärmen fel adress
for _i in $(seq 1 40); do
  _ip=$(ip route get 8.8.8.8 2>/dev/null \
    | awk '{for(i=1;i<=NF;i++) if($i=="src"){print $(i+1);exit}}')
  [ -n "$_ip" ] && [ "$_ip" != "127.0.0.1" ] && break
  sleep 1
done
unset _i _ip

# Standardvärden
KIOSK_DISPLAY_OUTPUT="HDMI-A-1"
KIOSK_DISPLAY_MODE="1920x1080@60Hz"
KIOSK_INTERNAL_DISPLAY="on"

if [ -f "$CONF" ]; then
  # shellcheck disable=SC1090
  . "$CONF"
fi

# Extrahera WxH och Hz (t.ex. "1280x720@60.000000" → WH="1280x720" HZ="60")
RAW_MODE="${KIOSK_DISPLAY_MODE:-1920x1080}"
WH="${RAW_MODE%%@*}"
HZ_RAW="${RAW_MODE##*@}"
HZ="${HZ_RAW%%.*}"
[ -z "$HZ" ] && HZ="60"

KIOSK_OUT="${KIOSK_DISPLAY_OUTPUT:-HDMI-A-1}"
KIOSK_W="${WH%%x*}"

# Generera output-config för sway
if [ "$KIOSK_INTERNAL_DISPLAY" = "on" ]; then
  cat > "$OUTPUT_CONF" <<EOF
output $KIOSK_OUT  mode ${WH}@${HZ}Hz pos 0 0 enable
output eDP-1       mode 1920x1080@60Hz pos ${KIOSK_W},0 enable

workspace 1 output $KIOSK_OUT
workspace 2 output eDP-1
EOF
else
  cat > "$OUTPUT_CONF" <<EOF
output $KIOSK_OUT  mode ${WH}@${HZ}Hz pos 0 0 enable
output eDP-1       disable

workspace 1 output $KIOSK_OUT
EOF
fi

exec /usr/bin/sway -c "$SWAY_CONF"