#!/usr/bin/env bash # Vigilar Kiosk — Update/reconfigure script # Change the URL, rotation, or resolution without re-running full setup. set -euo pipefail KIOSK_USER="vigilar" KIOSK_HOME="/home/${KIOSK_USER}" CONFIG_FILE="${KIOSK_HOME}/kiosk_config.txt" # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- info() { printf '\n\033[1;34m>>> %s\033[0m\n' "$*"; } warn() { printf '\033[1;33mWARN: %s\033[0m\n' "$*"; } error() { printf '\033[1;31mERROR: %s\033[0m\n' "$*" >&2; exit 1; } need_root() { if [[ $EUID -ne 0 ]]; then error "This script must be run as root (use sudo)." fi } # --------------------------------------------------------------------------- # Load current config # --------------------------------------------------------------------------- need_root CURRENT_URL="" CURRENT_ROTATION="0" CURRENT_RESOLUTION="1920x1080" if [[ -f "${CONFIG_FILE}" ]]; then # shellcheck source=/dev/null source "${CONFIG_FILE}" CURRENT_URL="${VIGILAR_URL:-}" CURRENT_ROTATION="${ROTATION:-0}" CURRENT_RESOLUTION="${RESOLUTION:-1920x1080}" fi info "Vigilar Kiosk — Update Configuration" echo "" echo "Current settings:" echo " URL: ${CURRENT_URL:-}" echo " Rotation: ${CURRENT_ROTATION}" echo " Resolution: ${CURRENT_RESOLUTION}" echo "" # --------------------------------------------------------------------------- # Parse arguments or ask interactively # --------------------------------------------------------------------------- usage() { echo "Usage: $0 [--url URL] [--rotation 0|90|180|270] [--resolution WxH]" echo "" echo "Options:" echo " --url URL Vigilar server URL" echo " --rotation DEGREE Screen rotation (0, 90, 180, 270)" echo " --resolution WxH Screen resolution (e.g. 1920x1080)" echo " --restart Restart the kiosk service after update" echo " -h, --help Show this help" exit 0 } NEW_URL="" NEW_ROTATION="" NEW_RESOLUTION="" DO_RESTART=false while [[ $# -gt 0 ]]; do case "$1" in --url) NEW_URL="$2"; shift 2 ;; --rotation) NEW_ROTATION="$2"; shift 2 ;; --resolution) NEW_RESOLUTION="$2"; shift 2 ;; --restart) DO_RESTART=true; shift ;; -h|--help) usage ;; *) warn "Unknown option: $1"; shift ;; esac done # If no arguments given, ask interactively if [[ -z "${NEW_URL}" && -z "${NEW_ROTATION}" && -z "${NEW_RESOLUTION}" ]]; then read -r -p "Vigilar URL [${CURRENT_URL}]: " NEW_URL read -r -p "Rotation (0/90/180/270) [${CURRENT_ROTATION}]: " NEW_ROTATION read -r -p "Resolution [${CURRENT_RESOLUTION}]: " NEW_RESOLUTION fi # Fall back to current values VIGILAR_URL="${NEW_URL:-$CURRENT_URL}" ROTATION="${NEW_ROTATION:-$CURRENT_ROTATION}" RESOLUTION="${NEW_RESOLUTION:-$CURRENT_RESOLUTION}" # Validate rotation case "${ROTATION}" in 0|90|180|270) ;; *) error "Invalid rotation: ${ROTATION}. Must be 0, 90, 180, or 270." ;; esac # Validate resolution format if [[ ! "${RESOLUTION}" =~ ^[0-9]+x[0-9]+$ ]]; then error "Invalid resolution format: ${RESOLUTION}. Expected WxH (e.g. 1920x1080)." fi # --------------------------------------------------------------------------- # Write config # --------------------------------------------------------------------------- info "Writing ${CONFIG_FILE}" cat > "${CONFIG_FILE}" <