Files
slideshow/showslide.sh
2025-05-20 12:57:19 +02:00

101 lines
2.8 KiB
Bash

#!/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