obscreen/system/install-autorun-rpi.sh
2024-07-21 19:42:27 +02:00

100 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
OWNER=${1:-$USER}
WORKING_DIR=${2:-$HOME}
echo "# ==============================="
echo "# Installing Obscreen Player"
echo "# Using user: $OWNER"
echo "# Working Directory: $WORKING_DIR"
echo "# ==============================="
# ============================================================
# User Interaction
# ============================================================
default_studio_url="http://localhost:5000"
obscreen_studio_url=$default_studio_url
disable_interaction=false
for arg in "$@"
do
if [ "$arg" == "--disable-interaction" ]; then
disable_interaction=true
break
fi
done
if [ "$disable_interaction" = false ]; then
if [ -t 0 ]; then
echo ""
read -p "Enter Obscreen studio instance URL [default value: ${default_studio_url}]: " user_url
obscreen_studio_url=${user_url:-$default_studio_url}
read -p "Do you confirm ${obscreen_studio_url} is a valid Obscreen studio instance? [Y/n]: " confirm
if [[ $confirm == "Y" || $confirm == "y" ]]; then
echo ""
echo "Using Obscreen studio instance URL: $obscreen_studio_url"
else
echo "Confirmation not received. Please run the script again and enter a valid URL."
exit 1
fi
else
echo "Interactive input required, but not available. Please run the script in an interactive terminal."
exit 1
fi
else
# If --disable-interaction is passed, use the default URL without prompting
echo ""
echo "Using Obscreen studio instance URL: $default_studio_url"
fi
# ============================================================
# Installation
# ============================================================
echo ""
echo "# Waiting 3 seconds before installation..."
sleep 3
# Update and install necessary packages
apt update
apt install -y xinit xserver-xorg chromium-browser unclutter pulseaudio exfat-fuse ntfs-3g
# Add user to tty, video and plugdev groups
usermod -aG tty,video,plugdev $OWNER
# Configure Xwrapper
touch /etc/X11/Xwrapper.config
grep -qxF "allowed_users=anybody" /etc/X11/Xwrapper.config || echo "allowed_users=anybody" | tee -a /etc/X11/Xwrapper.config
grep -qxF "needs_root_rights=yes" /etc/X11/Xwrapper.config || echo "needs_root_rights=yes" | tee -a /etc/X11/Xwrapper.config
# Create the systemd service to start Chromium in kiosk mode
curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/obscreen-player.service | sed "s#/home/pi#$WORKING_DIR#g" | sed "s#=pi#=$OWNER#g" | tee /etc/systemd/system/obscreen-player.service
# Configure external storage automount
curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/external-storage/10-obscreen-media-automount.rules | sed "s#/home/pi#$WORKING_DIR#g" | tee /etc/udev/rules.d/10-obscreen-media-automount.rules
udevadm control --reload-rules
systemctl restart udev
udevadm trigger
# Reload systemd, enable and start the service
systemctl daemon-reload
systemctl enable obscreen-player.service
systemctl set-default graphical.target
# ============================================================
# Autorun script
# ============================================================
mkdir -p "$WORKING_DIR/obscreen/var/run"
curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/autostart-browser-x11.sh | sed "s#/home/pi#$WORKING_DIR#g" | sed "s#=pi#=$OWNER#g" | sed "s#http://localhost:5000#$obscreen_studio_url#g" | tee "$WORKING_DIR/obscreen/var/run/play"
chmod +x "$WORKING_DIR/obscreen/var/run/play"
# ============================================================
# Start
# ============================================================
# Finally, restart player service
systemctl restart obscreen-player.service