#!/bin/bash # --- SYSTEMPRÜFUNG --- if [ "$EUID" -ne 0 ]; then echo "Bitte starte das Script als root (mit sudo)!" exit 1 fi REAL_USER=${SUDO_USER:-$USER} if [ "$REAL_USER" = "root" ]; then echo "Fehler: Bitte führe dieses Script mit 'sudo' aus einem normalen Benutzerkonto aus." exit 1 fi USER_HOME="/home/$REAL_USER" KIOSK_DIR="$USER_HOME/kiosk" SMB_PASSWORD="Eugen.23" # <--- HIER DEIN PASSWORT EINTRAGEN echo "=============================================" echo "Starte Kiosk- und Samba-Setup für User: $REAL_USER" echo "=============================================" # --- 1. ABHÄNGIGKEITEN INSTALLIEREN --- echo "[1/5] Installiere X11-Basis, Openbox, LightDM, Samba, Chromium und Tools..." apt update apt install -y xserver-xorg openbox lightdm psmisc samba x11-xserver-utils unclutter git curl gpg chromium # --- BRAVE BROWSER REPOSITORY & INSTALLATION --- echo "Füge Brave-Repository hinzu und installiere Brave..." curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" | tee /etc/apt/sources.list.d/brave-browser-release.list apt update apt install -y brave-browser # --- 2. VERZEICHNISSE & RECHTE EINRICHTEN --- echo "[2/5] Erstelle Kiosk-Verzeichnis und setze Berechtigungen..." mkdir -p "$KIOSK_DIR" chmod 755 "$USER_HOME" chmod 755 "$KIOSK_DIR" # --- 3. SAMBA (MIT PASSWORT) KONFIGURIEREN --- echo "[3/5] Konfiguriere Samba-Freigabe mit Passwortschutz..." sed -i '/\[Kiosk\]/,+10d' /etc/samba/smb.conf # Sichere, passwortgeschützte Freigabe anhängen cat <> /etc/samba/smb.conf [Kiosk] comment = Kiosk Playlist Freigabe path = $KIOSK_DIR browseable = yes read only = no valid users = $REAL_USER force user = $REAL_USER create mask = 0644 directory mask = 0755 EOF echo "Setze Samba-Passwort automatisch für User: $REAL_USER..." echo -e "$SMB_PASSWORD\n$SMB_PASSWORD" | smbpasswd -a "$REAL_USER" systemctl restart smbd nmbd # --- 4. BEISPIEL PLAYLIST.CSV ERSTELLEN --- if [ ! -f "$KIOSK_DIR/playlist.csv" ]; then echo "[4/5] Erstelle Beispiel-Playlist (playlist.csv)..." cat < "$KIOSK_DIR/playlist.csv" Dauer;Von;Bis;Zoom;URL 20;06:00;22:00;100;https://heise.de 30;00:00;23:59;125;https://google.com EOF fi # --- 5. ROTATIONS-SCRIPT ERSTELLEN --- echo "[5/5] Erstelle Rotations-Script (rotate.sh)..." cat <<'EOF' > "$KIOSK_DIR/rotate.sh" #!/bin/bash export DISPLAY=:0 SCRIPT_DIR=$(dirname "$(readlink -f "$0")") CSV_FILE="$SCRIPT_DIR/playlist.csv" time_to_minutes() { local hh=$(echo "$1" | cut -d: -f1) local mm=$(echo "$1" | cut -d: -f2) echo $(( 10#$hh * 60 + 10#$mm )) } while true; do if [ ! -f "$CSV_FILE" ]; then sleep 10 continue fi NOW_STR=$(date +"%H:%M") NOW=$(time_to_minutes "$NOW_STR") tail -n +2 "$CSV_FILE" | while IFS=';' read -r dauer von bis zoom_prozent url; do dauer=$(echo "$dauer" | tr -d '\r' | xargs) von=$(echo "$von" | tr -d '\r' | xargs) bis=$(echo "$bis" | tr -d '\r' | xargs) zoom_prozent=$(echo "$zoom_prozent" | tr -d '\r' | xargs) url=$(echo "$url" | tr -d '\r' | xargs) [ -z "$url" ] && continue if [ -z "$zoom_prozent" ] || [ "$zoom_prozent" -eq 0 ]; then zoom_prozent="100" fi if [ "$zoom_prozent" -eq 100 ]; then zoom_factor="1.0" elif [ ${#zoom_prozent} -eq 2 ]; then zoom_factor="0.$zoom_prozent" else vorkomma=$(echo "$zoom_prozent" | sed 's/..$//') nachkomma=$(echo "$zoom_prozent" | grep -o '..$') zoom_factor="${vorkomma}.${nachkomma}" fi START=$(time_to_minutes "$von") END=$(time_to_minutes "$bis") IN_WINDOW=0 if [ $START -le $END ]; then if [ $NOW -ge $START ] && [ $NOW -le $END ]; then IN_WINDOW=1 fi else if [ $NOW -ge $START ] || [ $NOW -le $END ]; then IN_WINDOW=1 fi fi if [ $IN_WINDOW -eq 1 ]; then # Monitor aufwachen lassen & Cursor verstecken erzwingen xset s off xset s noblank xset -dpms xset dpms force on xsetroot -cursor_name blank # Stoppe laufende Instanzen (ohne dieses Skript selbst zu killen) pkill -9 -v -f "$$" -f chromium pkill -9 -v -f "$$" -f brave # ========================================== # BROWSER-AUSWAHL (Hier flexibel umschalten) # ========================================== # OPTION A: Brave Browser (Inkl. nativem Cookie-Blocker) brave-browser --kiosk --no-first-run --new-window \ --ignore-certificate-errors \ --test-type \ --force-device-scale-factor="$zoom_factor" \ --user-data-dir=/tmp/brave-kiosk \ --disk-cache-dir=/tmp/brave-cache --disk-cache-size=1 \ --enable-features=BraveAdblockCookieListCp \ --autoplay-policy=no-user-gesture-required \ "$url" & # OPTION B: Chromium (Falls gewünscht, Zeile oben auskommentieren und hier die Raute entfernen) #chromium --kiosk --no-first-run --new-window \ # --ignore-certificate-errors \ # --test-type \ # --force-device-scale-factor="$zoom_factor" \ # --user-data-dir=/tmp/chromium-kiosk \ # --disk-cache-dir=/tmp/chromium-cache --disk-cache-size=1 \ # --autoplay-policy=no-user-gesture-required \ # --lang=de-DE \ # --accept-lang=de-DE,de,en-US,en \ # "$url" & sleep "$dauer" fi done done EOF # Eigentumsrechte und Ausführbarkeit für den Kiosk-Ordner korrigieren chown -R "$REAL_USER":"$REAL_USER" "$KIOSK_DIR" chmod +x "$KIOSK_DIR/rotate.sh" # --- LIGHTDM AUTO-LOGIN KONFIGURIEREN --- echo "Konfiguriere LightDM Auto-Login für $REAL_USER..." mkdir -p /etc/lightdm/lightdm.conf.d cat < /etc/lightdm/lightdm.conf.d/80-kiosk-autologin.conf [Seat:*] autologin-user=$REAL_USER autologin-user-timeout=0 session-wrapper=/etc/X11/Xsession user-session=openbox EOF # --- OPENBOX AUTOSTART EINRICHTEN --- OPENBOX_CONFIG_DIR="$USER_HOME/.config/openbox" AUTOSTART_FILE="$OPENBOX_CONFIG_DIR/autostart" ROTATE_SCRIPT="$USER_HOME/kiosk/rotate.sh" echo "Konfiguriere Openbox Autostart für: $REAL_USER" mkdir -p "$OPENBOX_CONFIG_DIR" cat < "$AUTOSTART_FILE" echo "------------------------------------------------------------------" echo " Openbox Autostart fuer Kiosk-Betrieb" echo "------------------------------------------------------------------" # Deaktiviere Bildschirmschoner und Standby auf X-Server-Ebene xset s off xset s noblank xset -dpms # Erzwinge systemweit einen leeren/unsichtbaren Mauszeiger von Beginn an xsetroot -cursor_name blank & # Verhindere, dass der Mauszeiger im Bild zu sehen ist (Fallback) unclutter -idle 0.5 -root & # Starte das Kiosk-Rotations-Script im Hintergrund $ROTATE_SCRIPT & EOF chown -R "$REAL_USER":"$REAL_USER" "$USER_HOME/.config" chmod 644 "$AUTOSTART_FILE" # X11/Grafischen Modus als Standard setzen für den Bootvorgang systemctl set-default graphical.target echo "------------------------------------------------------------------" echo " Konfiguriere LightDM, um den Bildschirm-Standby zu deaktivieren.." echo "------------------------------------------------------------------" # 1. Prüfen, ob die Datei existiert, wenn nicht, erstellen if [ ! -f /etc/lightdm/lightdm.conf ]; then touch /etc/lightdm/lightdm.conf fi # 2. Prüfen, ob die Sektion [Seat:*] existiert if ! grep -q "^\[Seat:\*\]" /etc/lightdm/lightdm.conf; then # Wenn [Seat:*] fehlt, fügen wir die Sektion samt Befehl am Ende ein echo -e "\n[Seat:*]\nxserver-command=X -s 0 -dpms" >> /etc/lightdm/lightdm.conf else # Wenn [Seat:*] existiert, prüfen wir, ob xserver-command schon drin steht if ! grep -q "xserver-command" /etc/lightdm/lightdm.conf; then # Fügt den Befehl direkt unter der [Seat:*] Zeile ein sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf else # Falls xserver-command schon existiert, überschreiben wir es sicherheitshalber sed -i 's|^xserver-command=.*|xserver-command=X -s 0 -dpms|' /etc/lightdm/lightdm.conf fi fi echo "Bildschirm-Standby wurde erfolgreich angepasst." echo "================================================" echo "SETUP ERFOLGREICH BEENDET!" echo "Starte das System jetzt neu mit: sudo reboot now" echo "================================================" echo "Im Falle von Updates starte ich den Desktop neu..." systemctl restart lightdm