#!/bin/bash # shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" _check_required_env_vars "KIOSK_USER" "KIOSK_URL" # Squash Display Configure Script - Update kiosk settings echo "Squash Display Configuration Update" echo "====================================" echo "" echo "This will update the kiosk configuration with current settings:" echo " URL: ${KIOSK_URL}" echo " Display: ${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}@${DISPLAY_REFRESH}Hz" echo "" # Update kiosk.sh script if [ -f "/home/${KIOSK_USER}/kiosk.sh" ]; then echo "Updating kiosk script..." # Create updated script cat <<'EOF' | sudo tee /home/${KIOSK_USER}/kiosk.sh.new > /dev/null #!/bin/bash # Disable screen blanking and power management xset s noblank xset s off xset -dpms # Hide cursor after 1 second of inactivity unclutter -idle 1 & # Force display resolution xrandr --output HDMI-1 --mode DISPLAY_WIDTH_PLACEHOLDERxDISPLAY_HEIGHT_PLACEHOLDER --rate DISPLAY_REFRESH_PLACEHOLDER 2>/dev/null || \ xrandr --output HDMI-2 --mode DISPLAY_WIDTH_PLACEHOLDERxDISPLAY_HEIGHT_PLACEHOLDER --rate DISPLAY_REFRESH_PLACEHOLDER 2>/dev/null || \ xrandr --output default --mode DISPLAY_WIDTH_PLACEHOLDERxDISPLAY_HEIGHT_PLACEHOLDER --rate DISPLAY_REFRESH_PLACEHOLDER 2>/dev/null || true # Start Chromium in kiosk mode chromium-browser \ --window-size=DISPLAY_WIDTH_PLACEHOLDER,DISPLAY_HEIGHT_PLACEHOLDER \ --window-position=0,0 \ --noerrdialogs \ --disable-infobars \ --disable-features=TranslateUI \ --disable-extensions \ --disable-plugins \ --disable-web-security \ --disable-features=VizDisplayCompositor \ --start-fullscreen \ --kiosk \ --incognito \ --no-first-run \ --fast \ --fast-start \ --disable-default-apps \ --disable-translate \ --disable-background-timer-throttling \ --disable-renderer-backgrounding \ --disable-backgrounding-occluded-windows \ --disable-component-extensions-with-background-pages \ --autoplay-policy=no-user-gesture-required \ "KIOSK_URL_PLACEHOLDER" EOF # Replace placeholders with actual values sudo sed -i "s|DISPLAY_WIDTH_PLACEHOLDER|${DISPLAY_WIDTH}|g" /home/${KIOSK_USER}/kiosk.sh.new sudo sed -i "s|DISPLAY_HEIGHT_PLACEHOLDER|${DISPLAY_HEIGHT}|g" /home/${KIOSK_USER}/kiosk.sh.new sudo sed -i "s|DISPLAY_REFRESH_PLACEHOLDER|${DISPLAY_REFRESH}|g" /home/${KIOSK_USER}/kiosk.sh.new sudo sed -i "s|KIOSK_URL_PLACEHOLDER|${KIOSK_URL}|g" /home/${KIOSK_USER}/kiosk.sh.new # Replace old script sudo mv /home/${KIOSK_USER}/kiosk.sh.new /home/${KIOSK_USER}/kiosk.sh sudo chmod +x /home/${KIOSK_USER}/kiosk.sh sudo chown ${KIOSK_USER}:${KIOSK_USER} /home/${KIOSK_USER}/kiosk.sh echo "✓ Kiosk script updated" else echo "✗ Kiosk script not found at /home/${KIOSK_USER}/kiosk.sh" echo " Run installation first: ./install.sh" exit 1 fi # Update GPU memory if on Raspberry Pi if [ -f "/boot/firmware/config.txt" ] || [ -f "/boot/config.txt" ]; then echo "Updating GPU memory allocation..." CONFIG_FILE="/boot/firmware/config.txt" [ -f "/boot/config.txt" ] && CONFIG_FILE="/boot/config.txt" if ! grep -q "^gpu_mem=" ${CONFIG_FILE}; then echo "gpu_mem=${GPU_MEM}" | sudo tee -a ${CONFIG_FILE} > /dev/null else sudo sed -i "s/^gpu_mem=.*/gpu_mem=${GPU_MEM}/" ${CONFIG_FILE} fi echo "✓ GPU memory set to ${GPU_MEM}MB" fi # Restart kiosk if it's running if pgrep -f "chromium.*--kiosk" >/dev/null 2>&1; then echo "" echo "Restarting kiosk with new configuration..." # Kill existing Chromium process pkill -f "chromium.*--kiosk" # Give it a moment sleep 2 # If watchdog is enabled, it will restart automatically if [ "${ENABLE_WATCHDOG}" = "true" ]; then echo "Watchdog will restart the kiosk automatically..." else # Manual restart echo "Starting kiosk manually..." sudo -u ${KIOSK_USER} DISPLAY=:0 /home/${KIOSK_USER}/kiosk.sh & fi echo "✓ Kiosk restarted with new configuration" else echo "" echo "Kiosk is not currently running." echo "Configuration will be applied on next start." fi echo "" echo "Configuration update complete!" echo "" echo "Current settings:" echo " URL: ${KIOSK_URL}" echo " Display: ${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}@${DISPLAY_REFRESH}Hz" echo " GPU Memory: ${GPU_MEM}MB" echo "" echo "To apply all changes, you may need to reboot: sudo reboot"