Files
archy/scripts/setup-kiosk.sh
Dorian 1b05b5b8f1 Enhance UI components and improve user notifications
- Updated App.vue to include a toast notification system for new messages, enhancing user engagement.
- Modified SplashScreen.vue to streamline the intro text display with improved typing effects.
- Added Montserrat font styles in style.css for better typography across the application.
- Improved controller navigation in useControllerNav.ts to support enhanced focus management and sound feedback.
- Updated routing logic in index.ts to redirect authenticated users from the login page to the home page.
- Enhanced the Login.vue view with transition effects for a smoother user experience during login and setup processes.
2026-02-17 19:19:54 +00:00

78 lines
2.1 KiB
Bash

#!/bin/bash
#
# Setup Archipelago kiosk mode on the server
# Runs Chromium in kiosk mode so keyboard/touchpad control the web UI
# Only starts when logging in at the physical console (tty1)
#
# Run on server: sudo ./setup-kiosk.sh
#
set -e
KIOSK_USER="${1:-archipelago}"
ARCHIPELAGO_URL="${ARCHIPELAGO_URL:-http://localhost}"
echo "Setting up kiosk for user: $KIOSK_USER"
echo "URL: $ARCHIPELAGO_URL"
echo ""
# Create .xinitrc for kiosk
HOMEDIR=$(getent passwd "$KIOSK_USER" | cut -d: -f6)
XINITRC="$HOMEDIR/.xinitrc"
cat > "$XINITRC" << 'XINITRC_EOF'
#!/bin/bash
# Archipelago kiosk - Chromium fullscreen
exec chromium --kiosk \
--app=http://localhost \
--noerrdialogs \
--disable-infobars \
--disable-translate \
--no-first-run \
--check-for-update-interval=31536000 \
--disable-features=TranslateUI \
--disable-session-crashed-bubble
XINITRC_EOF
# Replace localhost with actual URL if different
if [ "$ARCHIPELAGO_URL" != "http://localhost" ]; then
sed -i "s|http://localhost|$ARCHIPELAGO_URL|g" "$XINITRC"
fi
chown "$KIOSK_USER:$KIOSK_USER" "$XINITRC"
chmod +x "$XINITRC"
# Add startx to .bash_profile only when on console (tty1)
BASHPROFILE="$HOMEDIR/.bash_profile"
if [ ! -f "$BASHPROFILE" ]; then
touch "$BASHPROFILE"
chown "$KIOSK_USER:$KIOSK_USER" "$BASHPROFILE"
fi
# Remove any existing kiosk block
if grep -q "ARCHIPELAGO_KIOSK" "$BASHPROFILE" 2>/dev/null; then
sed -i '/# ARCHIPELAGO_KIOSK/,/^# END ARCHIPELAGO_KIOSK/d' "$BASHPROFILE"
fi
# Add kiosk startup (only runs on physical console tty1)
cat >> "$BASHPROFILE" << 'BASHPROFILE_EOF'
# ARCHIPELAGO_KIOSK - Start X/kiosk when logging in at physical console
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
exec startx
fi
# END ARCHIPELAGO_KIOSK
BASHPROFILE_EOF
chown "$KIOSK_USER:$KIOSK_USER" "$BASHPROFILE"
echo "✅ Kiosk installed!"
echo ""
echo " When you log in at the physical console (monitor + keyboard):"
echo " - X will start automatically"
echo " - Chromium will open in kiosk mode"
echo " - Your keyboard/touchpad will control the Archipelago UI"
echo ""
echo " To use: Connect a display, plug in keyboard, reboot (or log in at tty1)"
echo ""