#!/bin/bash ## # Zeigt zufaellig ausgesuchte Dateien aus einem Verzeichnis im Vollbild an # # Reagiert auf Dateien in SIGNALDIR: # abbruch = Abbruch des Scripts nach aktuellem Bild/Film # # 2024-01-26, misc # 2024-02-08, misc: timeout raus, staendige Schleife mit Reaktionsmoeglichkeit # WORKDIR="/home/misc/sc/workdir" SIGNALDIR="/home/misc/sc/signals" PICTIME=90 # wie lange soll ein Bild stehen bleiben MOVTIME=90 # wie lange soll ein Film stehen bleiben WEBTIME=90 # wie lange sollen Webseiten stehen bleiben HASSURL="https://hass.xxx.de/dashboard-datendashboard/0" # URL für Home Assistant Dashboard NIEDURL="https://www.niederschlagsradar.de/de-de/region/8000203" # URL für Niederschlagsradar if [ $XDG_SESSION_TYPE == "wayland" ]; then sleep 5; # warten nach Start cd /home/misc/bilder LOOP=1 while [ $LOOP -eq 1 ]; do PID=9999999 if [ "x-$URL" == "x-" ]; then # Naechster Dateiname per Zufall bestimmen und loggen FILE=`ls | sort -R | tail -1` EXT=${FILE##*.} echo `/bin/date "+%Y-%m-%d %H:%M:%S"` $FILE >> $WORKDIR/shown.log else # URL soll angezeigt werden EXT="URL" echo `/bin/date "+%Y-%m-%d %H:%M:%S"` $URL >> $WORKDIR/shown.log fi # Nach Endung mit richtigem Programm aufrufen case $EXT in jpg | JPG | gif | GIF | png | PNG | jpeg | JPEG) # timeout $PICTIME swayimg -f --scale=fit "$FILE" swayimg -f --scale=fit "$FILE" & PID=$! SHOWTIME=$PICTIME ;; MOV | mov | MP4 | mp4) # timeout $MOVTIME vlc -f --repeat --no-video-title --no-audio "$FILE" vlc -f --repeat --no-video-title --no-audio "$FILE" & PID=$! SHOWTIME=$MOVTIME ;; URL) chromium-browser "$URL" --kiosk --start-maximized & PID=$! SHOWTIME=$WEBTIME URL="" ;; *) # unbekannte ext, wir machen nix aber loggen echo `/bin/date "+%Y-%m-%d %H:%M:%S"` $FILE >> $WORKDIR/notshown.log ;; esac # echo `/bin/date "+%Y-%m-%d %H:%M:%S"` $PID > $WORKDIR/pid.log COUNTER=0 while kill -0 $PID 2> /dev/null; do ((COUNTER++)) if [ $COUNTER -gt $SHOWTIME ]; then kill -15 $PID else sleep 1 fi if [ -e $SIGNALDIR/hass ]; then rm $SIGNALDIR/hass kill -15 $PID URL=$HASSURL fi if [ -e $SIGNALDIR/niederschlag ]; then rm $SIGNALDIR/niederschlag kill -15 $PID URL=$NIEDURL fi if [ -e $SIGNALDIR/abbruch ]; then rm $SIGNALDIR/abbruch kill -15 $PID # kill SIGTERM, geht meist LOOP=0 fi done; # solange PID aktiv done; # LOOP fi