gernot@33: #!/usr/bin/env sh gernot@33: gernot@33: export DISPLAY=":0.0" gernot@33: gernot@33: OLDDB=/home/pi/incoming_dbs/tech_intern.db gernot@33: NEWDB=/home/pi/incoming_dbs/tech_intern.db.new gernot@33: gernot@34: BOTTLEDASH_PID="$HOME/bottledash.pid" gernot@34: BOTTLEDASH_LOG="$HOME/bottledash.log" gernot@34: CHROMIUM_PID="$HOME/chromium.pid" gernot@34: CHROMIUM_LOG="$HOME/chromium.log" gernot@34: gernot@33: usage () { gernot@33: cat << EOF gernot@33: Usage: $0 [COMMAND] gernot@33: gernot@33: Commands: gernot@36: --start Start Bottledash and the dashboard/browser gernot@36: --stop Stop Bottledash and the dashboard/browser gernot@36: --reload Restart Bottledash and reload the dashboard/browser gernot@36: --smart-reload If a new DB is available, restart Bottledash and reload gernot@36: the dashboard/browser gernot@33: --restart-bd Restart Bottledash gernot@33: --reload-browser Reload dashboard/browser gernot@33: --check-db Check if a new DB is available gernot@33: -h, --help This help gernot@33: EOF gernot@33: } gernot@33: gernot@33: start_bottledash () { gernot@33: # taken from start-bottledash-hohup gernot@34: nohup python3 /home/pi/bottledash/dash.py 2>&1 > $BOTTLEDASH_LOG & gernot@34: echo $! > $BOTTLEDASH_PID gernot@35: sleep 10 gernot@33: } gernot@33: gernot@33: stop_bottledash () { gernot@34: kill $(cat $BOTTLEDASH_PID) gernot@33: } gernot@33: gernot@33: start_chromium () { gernot@33: # taken from show-dashboard gernot@33: rm -R $HOME/.cache/chromium/Default/Cache/ gernot@33: DISPLAY=:0.0 nohup chromium --new --noerrdialogs --kiosk \ gernot@34: http://localhost:8080 2>&1 > $CHROMIUM_LOG & gernot@34: echo $! > $CHROMIUM_PID gernot@33: } gernot@33: gernot@33: gernot@33: stop_chromium () { gernot@34: kill $(cat $CHROMIUM_PID) gernot@33: } gernot@33: gernot@33: xdo_reload_chromium () { gernot@33: # Start Chromium if necessary gernot@34: if [ -f "$BOTTLEDASH_PID" ] && [ -d /proc/$(cat "$CHROMIUM_PID") ]; then gernot@33: # Send F5 to Chromium gernot@33: WID=$(xdotool search --onlyvisible --class chromium | head -1) gernot@33: xdotool windowactivate ${WID} gernot@33: xdotool key F5 gernot@33: else gernot@33: start_chromium gernot@33: fi gernot@33: } gernot@33: gernot@33: check_new_db () { gernot@33: if [ ! -f "$NEWDB" ]; then gernot@33: echo 0 ; return gernot@33: fi gernot@33: OLDSIZE=$(md5sum $OLDDB | awk '{print $1}') gernot@33: NEWSIZE=$(md5sum $NEWDB | awk '{print $1}') gernot@33: if [ "$OLDSIZE" != "$NEWSIZE" ]; then gernot@33: echo 1 gernot@33: else gernot@33: echo 0 gernot@33: fi gernot@33: } gernot@33: gernot@33: update_db () { gernot@33: if [ $(check_new_db) -eq 1 ]; then gernot@33: mv "$NEWDB" "$OLDDB" gernot@33: fi gernot@33: } gernot@33: gernot@33: case $1 in gernot@36: '--start') gernot@36: start_bottledash gernot@36: start_chromium gernot@36: ;; gernot@36: '--stop') gernot@36: stop_bottledash gernot@36: stop_chromium gernot@36: ;; gernot@33: '--restart-bd') gernot@33: stop_bottledash gernot@33: start_bottledash gernot@33: ;; gernot@33: '--reload-browser') gernot@33: xdo_reload_chromium gernot@33: ;; gernot@33: '--reload') gernot@33: stop_bottledash gernot@33: start_bottledash gernot@33: xdo_reload_chromium gernot@33: ;; gernot@33: '--check-db') gernot@33: check_new_db gernot@33: ;; gernot@33: '--smart-reload') gernot@33: if [ $(check_new_db) -eq 1 ]; then gernot@33: update_db gernot@33: stop_bottledash gernot@33: start_bottledash gernot@33: sleep 10 gernot@33: xdo_reload_chromium gernot@33: fi gernot@33: ;; gernot@33: '-h'|'--help') gernot@33: usage gernot@33: exit 0 gernot@33: ;; gernot@33: *) gernot@33: echo "ERROR: unknown command: $1" >&2 gernot@33: usage gernot@33: exit 2 gernot@33: ;; gernot@33: esac gernot@33: gernot@33: # vim: set ft=sh :