summaryrefslogtreecommitdiffstats
path: root/core/modules/kiosk-common
diff options
context:
space:
mode:
authorSimon Rettberg2019-11-12 14:43:08 +0100
committerSimon Rettberg2019-11-12 14:43:08 +0100
commite788c553ce17596d88cc3c16680adcfe4d763c57 (patch)
tree5f2c1576948989edf36321540df72326bd149faa /core/modules/kiosk-common
parent[vmware15] garantee single accept(OVF)?EULA lines (diff)
downloadmltk-e788c553ce17596d88cc3c16680adcfe4d763c57.tar.gz
mltk-e788c553ce17596d88cc3c16680adcfe4d763c57.tar.xz
mltk-e788c553ce17596d88cc3c16680adcfe4d763c57.zip
[kiosk-*] Support SLX_BROWSER, add precheck for browser binary
SLX_BROWSER is is space separated list of keywords. They are globbed within the kiosk-launch.d directory, so specifying SLX_BROWSER='chromium firefox' would first look for any file named *chromium* and source it, and if that fails for any file named *firefox*. If everything fails or the variable is empty, any file in that directory will be sourced.
Diffstat (limited to 'core/modules/kiosk-common')
-rwxr-xr-xcore/modules/kiosk-common/data/opt/openslx/scripts/kiosk-launch34
1 files changed, 31 insertions, 3 deletions
diff --git a/core/modules/kiosk-common/data/opt/openslx/scripts/kiosk-launch b/core/modules/kiosk-common/data/opt/openslx/scripts/kiosk-launch
index 43af3640..28dc6e19 100755
--- a/core/modules/kiosk-common/data/opt/openslx/scripts/kiosk-launch
+++ b/core/modules/kiosk-common/data/opt/openslx/scripts/kiosk-launch
@@ -13,14 +13,42 @@ xset -dpms
openbox --config-file "/etc/xdg/openbox/rc.xml.kiosk" &
# move the mouse away
-xdotool mousemove 20000 20000 &
+xdotool mousemove 20000 20000
-# run browser
+# 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
+#
+declare -rg BASE_JOBS="$(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 "kiosk-launch" "No kiosk browser configured!"
+slxlog --sync "kiosk-launch" "No kiosk browser configured/available!"
exit 1