screentinker/scripts/raspberry-pi-setup.sh
ScreenTinker 1594a9d4a4 Initial open source release
ScreenTinker - open source digital signage management software.
MIT License, all features included, no license gates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 12:14:53 -05:00

107 lines
2.7 KiB
Bash

#!/bin/bash
# ScreenTinker - Raspberry Pi Setup Script
# Run: curl -sSL https://screentinker.com/scripts/pi-setup.sh | bash
#
# This sets up a Raspberry Pi as a digital signage player:
# 1. Installs Chromium if needed
# 2. Creates a systemd service for kiosk mode
# 3. Auto-starts on boot
SERVER_URL="${1:-https://screentinker.com}"
PLAYER_URL="$SERVER_URL/player"
echo "=================================="
echo " ScreenTinker Pi Player Setup"
echo "=================================="
echo "Server: $SERVER_URL"
echo ""
# Install chromium if not present
if ! command -v chromium-browser &> /dev/null && ! command -v chromium &> /dev/null; then
echo "Installing Chromium..."
sudo apt-get update && sudo apt-get install -y chromium-browser unclutter
fi
CHROMIUM=$(command -v chromium-browser || command -v chromium)
# Disable screen blanking
if [ -f /etc/lightdm/lightdm.conf ]; then
sudo sed -i 's/#xserver-command=X/xserver-command=X -s 0 -dpms/' /etc/lightdm/lightdm.conf
fi
# Create autostart directory
mkdir -p ~/.config/autostart
# Create kiosk script
cat > ~/remotedisplay-kiosk.sh << EOF
#!/bin/bash
# Wait for network
sleep 5
# Disable screen saver and power management
xset s off
xset -dpms
xset s noblank
# Hide cursor
unclutter -idle 0.1 -root &
# Launch Chromium in kiosk mode
$CHROMIUM \\
--noerrandprompts \\
--disable-infobars \\
--disable-session-crashed-bubble \\
--kiosk \\
--incognito \\
--autoplay-policy=no-user-gesture-required \\
--disable-features=TranslateUI \\
--check-for-update-interval=31536000 \\
--disable-component-update \\
"$PLAYER_URL"
EOF
chmod +x ~/remotedisplay-kiosk.sh
# Create systemd service
sudo tee /etc/systemd/system/remotedisplay.service > /dev/null << EOF
[Unit]
Description=ScreenTinker Kiosk Player
After=graphical.target
Wants=graphical.target
[Service]
Type=simple
User=$USER
Environment=DISPLAY=:0
ExecStart=/bin/bash $HOME/remotedisplay-kiosk.sh
Restart=always
RestartSec=10
[Install]
WantedBy=graphical.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable remotedisplay.service
# Create desktop autostart entry (fallback)
cat > ~/.config/autostart/remotedisplay.desktop << EOF
[Desktop Entry]
Type=Application
Name=ScreenTinker
Exec=$HOME/remotedisplay-kiosk.sh
X-GNOME-Autostart-enabled=true
EOF
echo ""
echo "=================================="
echo " Setup Complete!"
echo "=================================="
echo ""
echo "The player will auto-start on next boot."
echo "To start now: ~/remotedisplay-kiosk.sh"
echo "To stop: sudo systemctl stop remotedisplay"
echo "Player URL: $PLAYER_URL"
echo ""
echo "Press Escape in the player to reset/reconfigure."
echo "Press F for fullscreen toggle."