#!/bin/bash -- sourced # prepares and run chromium as kiosk browser command -v chromium \ || command -v chromium-browser \ || return 0 # clear state of previous sessions if [ "$(whoami)" = "demo" ]; then rm -rf -- "$HOME/.config/chromium" mkdir -p "$HOME/.config/chromium/Default" fi cert_to_nssdb /etc/ssl/certs/ "${HOME}/.pki/nssdb" & nss_pid=$! # Helper to decode URL-encoded strings # e.g. urldecode http%3A%2F%2Ffoobar.com -> http://foobar.com urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}" } # Helper to json'ize bookmarks given as arguments in the form: # , -> e.g. Google,https://www.google.com json_bookmarks() { local cur=0 local name url while [ $# -ne 0 ]; do name="$( urldecode "${1%%,*}" )" url="$( urldecode "${1#*,}" )" jq --null-input --join-output --compact-output --arg id "$(( cur++ ))" --arg name "$name" --arg url "$url" \ '{"id": $id, "type": "url", "name": $name, "url": $url}' shift [ $# -ne 0 ] && printf "," done } # Pass SLX_BROWSER_BOOKMARKS without quotes for splitting into arguments cat > "$HOME/.config/chromium/Default/Bookmarks" <= SLX_BROWSER_RELOAD_SECS )); then if [ "$activity" = "yes" ] && [ -n "$SLX_BROWSER_INTERACTIVE" ]; then # activity was seen, interactive browser (UI) -> kill session killall chromium-browser chromium loginctl terminate-user demo else xdotool windowactivate "$wid" xdotool key Alt+Home sleep "$SLX_BROWSER_RELOAD_SECS" activity=init continue fi elif [ "$activity" = "init" ]; then activity=no else activity=yes fi sleep "$(( 1 + SLX_BROWSER_RELOAD_SECS - current_idle ))" done ) & fi if [ -n "$SLX_BROWSER_INSECURE" ]; then chromium_args+=("--allow-running-insecure-content" "--ignore-certificate-errors") fi # Wait until cert store is fully populated wait $nss_pid chromium_args+=( "$SLX_BROWSER_URL" ) # finally exec to chromium exec chromium "${chromium_args[@]}" exec chromium-browser "${chromium_args[@]}"