#!/bin/bash # generic kiosk mode launcher . /opt/openslx/config export PATH="$PATH:/opt/openslx/sbin:/opt/openslx/bin" [ -z "$SLX_BROWSER_URL" ] && exit 1 . /opt/openslx/bin/slx-tools # disable power management features xset s off xset -dpms # start openbox window manager openbox --config-file "/etc/xdg/openbox/rc.xml.kiosk" & # move the mouse away xdotool mousemove 20000 20000 if [ -z "$SLX_BROWSER_INTERACTIVE" ]; then # swallow keyboard shortcuts of chromium xbindkeys -f /opt/openslx/lightdm/xbindkeys-kiosk.rc & else # volume controls only xbindkeys -f /opt/openslx/lightdm/xbindkeys-kiosk-interactive.rc & fi # Remember list of jobs running the background, so we can clean up # any mess left around by failed attempts below # #### Don't fork anything into background after this point # Convert \n to spaces using echo declare -rg BASE_JOBS="$( echo $(jobs -p) )" kill_jobs() { local j for j in $(jobs -p); do # Was already running before? Skip [[ " $BASE_JOBS " == *" $j "* ]] && continue kill "$j" done } # try specific browser first, if any for browser in $SLX_BROWSER; do [[ "$browser" =~ ^[a-zA-Z0-9_.\-]+$ ]] || continue for file in "$0".d/*"$browser"*; do [ -f "$file" ] || continue . "$file" || slxlog "kiosk-launch" "Failed to source '$file'." kill_jobs done done # still here... # try anything for file in "$0".d/*; do [ -f "$file" ] || continue . "$file" || slxlog "kiosk-launch" "Failed to source '$file'." kill_jobs done # should not come to this point as above sources should # exec away slxlog --sync "kiosk-launch" "No kiosk browser configured/available!" exit 1