From 7256fd03531a07d851ce30a9648e44eaa84177b9 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Sat, 20 Jun 2026 03:24:11 -0600 Subject: [PATCH] Fix some stuff --- scripts/debian-13-setup.sh | 40 +++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/scripts/debian-13-setup.sh b/scripts/debian-13-setup.sh index 6532fc2..78960db 100755 --- a/scripts/debian-13-setup.sh +++ b/scripts/debian-13-setup.sh @@ -253,15 +253,22 @@ fi if [ "$NEED_PLAYER" = true ]; then log "Installing player packages..." apt-get install -y -qq \ - xserver-xorg x11-xserver-utils xinit \ + xserver-xorg xserver-xorg-legacy x11-xserver-utils xinit \ chromium unclutter xdotool \ >> "$LOG_FILE" 2>&1 || { warn "Failed to install chromium package, trying chromium-browser..." - apt-get install -y -qq xserver-xorg x11-xserver-utils xinit chromium-browser unclutter xdotool >> "$LOG_FILE" 2>&1 + apt-get install -y -qq xserver-xorg xserver-xorg-legacy x11-xserver-utils xinit chromium-browser unclutter xdotool >> "$LOG_FILE" 2>&1 } CHROMIUM_BIN=$(command -v chromium 2>/dev/null || command -v chromium-browser 2>/dev/null || echo "/usr/bin/chromium") + log "Allowing non-root X server startup..." + mkdir -p /etc/X11 + cat > /etc/X11/Xwrapper.config << 'XWRAPEOF' +allowed_users=anybody +needs_root_rights=yes +XWRAPEOF + log "Creating kiosk launcher..." cat > "$RUNTIME_HOME/screentinker-kiosk.sh" << KIOSKEOF #!/bin/bash @@ -269,13 +276,16 @@ KIOSK_URL="${KIOSK_URL}" sleep 2 +# Disable screen blanking and power management xset s off xset s noblank xset -dpms xset s 0 0 +# Hide cursor after 3 seconds of inactivity unclutter -idle 3 -root & +# Clean Chromium crash flags (prevents restore session dialogs) CDIR="\$HOME/.config/chromium/Default" mkdir -p "\$CDIR" if [ -f "\$CDIR/Preferences" ]; then @@ -283,11 +293,12 @@ if [ -f "\$CDIR/Preferences" ]; then sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' "\$CDIR/Preferences" 2>/dev/null || true fi +# Wait for local server if running all-in-one if echo "\$KIOSK_URL" | grep -q "localhost"; then echo "Waiting for ScreenTinker server..." - for i in \$(seq 1 30); do + for i in \$(seq 1 60); do if curl -sf "http://localhost:${SCREENTINKER_PORT}/api/health" >/dev/null 2>&1; then - echo "Server ready" + echo "Server ready after \${i}x2s" break fi sleep 2 @@ -355,16 +366,23 @@ XINITEOF Description=ScreenTinker Kiosk Display ${KIOSK_AFTER} ${KIOSK_REQ} +# Prevent conflicts with getty on tty1 +Conflicts=getty@tty1.service +After=getty@tty1.service [Service] Type=simple User=${RUNTIME_USER} Environment=DISPLAY=:0 Environment=XAUTHORITY=${RUNTIME_HOME}/.Xauthority +# Remove stale X lock files from previous crashes before starting +ExecStartPre=/bin/bash -c 'rm -f /tmp/.X0-lock /tmp/.X11-unix/X0' ExecStartPre=/bin/sleep 3 ExecStart=/usr/bin/startx ${RUNTIME_HOME}/.xinitrc -- :0 -nolisten tcp vt1 -Restart=always +Restart=on-failure RestartSec=10 +StartLimitBurst=5 +StartLimitIntervalSec=120 TTYPath=/dev/tty1 StandardInput=tty @@ -387,6 +405,10 @@ SERVICEEOF ExecStart= ExecStart=-/sbin/agetty --autologin ${RUNTIME_USER} --noclear %I \$TERM AUTOLOGINEOF + + # Disable getty on tty1 so it doesn't conflict with the kiosk service + systemctl disable getty@tty1.service 2>/dev/null || true + systemctl mask getty@tty1.service 2>/dev/null || true fi if [ "$NEED_SERVER" = true ]; then @@ -486,6 +508,14 @@ if grep -q "#RuntimeWatchdogSec=0" /etc/systemd/system.conf 2>/dev/null; then log "Hardware watchdog enabled (10s)" fi +# Disable console blanking so the screen stays on during boot +if [ -f /etc/default/grub ]; then + if ! grep -q "consoleblank=0" /etc/default/grub; then + sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 consoleblank=0"/' /etc/default/grub + update-grub >> "$LOG_FILE" 2>&1 && log "Console blanking disabled in GRUB" || warn "update-grub failed (non-fatal)" + fi +fi + echo "" echo -e "${GREEN}======================================${NC}" echo -e "${GREEN} ScreenTinker Setup Complete!${NC}"