From e2c1c7f96f819aeebc7e58dc9064ce737f5cee4e Mon Sep 17 00:00:00 2001 From: Phil Date: Tue, 13 Oct 2026 15:48:03 +0100 Subject: [PATCH] Added first version of the script --- kiosk-display-setup.sh | 144 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 kiosk-display-setup.sh diff --git a/kiosk-display-setup.sh b/kiosk-display-setup.sh new file mode 100644 index 0000000..8bfcd0d --- /dev/null +++ b/kiosk-display-setup.sh @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +set -euo pipefail + +die() { echo "ERROR: $*" >&2; exit 1; } +warn() { echo "WARNING: $*" >&2; } + +[[ "${EUID}" -ne 0 ]] || die "Run as your regular user, not sudo." + +command -v firefox >/dev/null 2>&1 || die "Firefox is not installed or not in PATH." +command -v systemctl >/dev/null 2>&1 || die "systemctl is not available." + +read -r -p "Enter the display location (e.g. Lobby): " LOCATION +LOCATION="$( + printf '%s' "$LOCATION" | + tr '[:lower:]' '[:upper:]' | + sed -E 's/[ _]+/-/g; s/[^A-Z0-9-]//g; s/-+/-/g; s/^-|-$//g' +)" +[[ -n "$LOCATION" ]] || die "Location can't be empty." + +HOSTNAME="DISPLAY-NVR-$LOCATION" +[[ ${#HOSTNAME} -le 63 ]] || die "Hostname too long: $HOSTNAME" + +read -r -p "Enter the NVR server URL (default: http://192.168.25.248): " URL_INPUT +URL="${URL_INPUT:-http://192.168.25.248}" +[[ "$URL" =~ ^https?:// ]] || die "URL must start with http:// or https://" + +read -r -p "Enter daily reboot time in HH:MM format (default: 06:00): " REBOOT_TIME +REBOOT_TIME="${REBOOT_TIME:-06:00}" +[[ "$REBOOT_TIME" =~ ^([01][0-9]|2[0-3]):[0-5][0-9]$ ]] || die "Invalid time format." + +APP_DIR="$HOME/.local/bin" +AUTOSTART_DIR="$HOME/.config/autostart" +XORG_CONF_DIR="/etc/X11/xorg.conf.d" +LAUNCHER="$APP_DIR/launch-nvr.sh" +DESKTOP_FILE="$AUTOSTART_DIR/launch-nvr.desktop" +CONFIG_FILE="$HOME/.config/nvr-display.conf" + +mkdir -p "$APP_DIR" "$AUTOSTART_DIR" "$HOME/.config" + +cat > "$CONFIG_FILE" < "$LAUNCHER" <&2 + fi +} +trap cleanup EXIT + +if command -v xset >/dev/null 2>&1 && [[ -n "\${DISPLAY:-}" ]]; then + xset s off || true + xset -dpms || true + xset s noblank || true +fi + +exec firefox --kiosk "\$URL" +EOF +chmod 700 "$LAUNCHER" + +cat > "$DESKTOP_FILE" </dev/null <<'EOF' +[Unit] +Description=Reboot NVR display computer + +[Service] +Type=oneshot +ExecStart=/usr/bin/systemctl reboot +EOF + +sudo tee /etc/systemd/system/nvr-daily-reboot.timer >/dev/null <