diff --git a/showslide.sh b/showslide.sh new file mode 100644 index 0000000..5ac6615 --- /dev/null +++ b/showslide.sh @@ -0,0 +1,100 @@ +#!/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