Initial
This commit is contained in:
100
showslide.sh
Normal file
100
showslide.sh
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user