From 50e41e223057e068a7d8d0b4429706546c40f8d6 Mon Sep 17 00:00:00 2001 From: Thomas Stallinger Date: Wed, 22 Jul 2026 12:12:37 +0200 Subject: [PATCH] feat: switch kiosk autostart from terminal installer to Epiphany browser kiosk Replaces the gnome-terminal-launched installer.sh session with a browser-based kiosk (opt/tuxflotte/kiosk/start-kiosk.sh launching Epiphany with --profile). Sets German keyboard layout for the graphical session (vconsole.keymap only covers the text console), suppresses Epiphany's default-browser prompt, hides desktop icons, and reduces the panel to a window list + power applet. Also disables the SELinux troubleshooter desktop notification, and copies the full live-updates tree (not just etc/) so opt/ payload ships too. Several Epiphany invocation modes were tried and discarded before landing on plain --profile= (see ADR-0004/0006 and platform-docs history for the rejected --application-mode/--private-instance paths). Co-Authored-By: Claude Sonnet 5 --- .../etc/xdg/autostart/sealertauto.desktop | 4 + .../xdg/autostart/tuxflotte-installer.desktop | 2 +- live-updates/opt/tuxflotte/kiosk/index.html | 33 ++++ live-updates/opt/tuxflotte/kiosk/logo.svg | 179 ++++++++++++++++++ .../opt/tuxflotte/kiosk/start-kiosk.sh | 33 ++++ scripts/build.sh | 2 +- 6 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 live-updates/etc/xdg/autostart/sealertauto.desktop create mode 100644 live-updates/opt/tuxflotte/kiosk/index.html create mode 100644 live-updates/opt/tuxflotte/kiosk/logo.svg create mode 100755 live-updates/opt/tuxflotte/kiosk/start-kiosk.sh diff --git a/live-updates/etc/xdg/autostart/sealertauto.desktop b/live-updates/etc/xdg/autostart/sealertauto.desktop new file mode 100644 index 0000000..49de53b --- /dev/null +++ b/live-updates/etc/xdg/autostart/sealertauto.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Type=Application +Name=SELinux Troubleshooter Notifier +Hidden=true diff --git a/live-updates/etc/xdg/autostart/tuxflotte-installer.desktop b/live-updates/etc/xdg/autostart/tuxflotte-installer.desktop index 3831124..db9b4bd 100644 --- a/live-updates/etc/xdg/autostart/tuxflotte-installer.desktop +++ b/live-updates/etc/xdg/autostart/tuxflotte-installer.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application Name=Tuxflotte Provisioning -Exec=gnome-terminal --title="Tuxflotte Provisioning" -- bash -c 'sudo /opt/tuxflotte/scripts/installer.sh; rc=$?; echo; echo "--- installer.sh beendet (Exit-Code: $rc) ---"; exec bash' +Exec=/opt/tuxflotte/kiosk/start-kiosk.sh X-GNOME-Autostart-enabled=true NoDisplay=true diff --git a/live-updates/opt/tuxflotte/kiosk/index.html b/live-updates/opt/tuxflotte/kiosk/index.html new file mode 100644 index 0000000..b49a59b --- /dev/null +++ b/live-updates/opt/tuxflotte/kiosk/index.html @@ -0,0 +1,33 @@ + + + + +Tuxflotte Provisioning + + + + Tuxflotte +

Kiosk-Oberfläche in Entwicklung.

+ + diff --git a/live-updates/opt/tuxflotte/kiosk/logo.svg b/live-updates/opt/tuxflotte/kiosk/logo.svg new file mode 100644 index 0000000..35d5e2a --- /dev/null +++ b/live-updates/opt/tuxflotte/kiosk/logo.svg @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live-updates/opt/tuxflotte/kiosk/start-kiosk.sh b/live-updates/opt/tuxflotte/kiosk/start-kiosk.sh new file mode 100755 index 0000000..28a177d --- /dev/null +++ b/live-updates/opt/tuxflotte/kiosk/start-kiosk.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +# German keyboard layout for the graphical session (vconsole.keymap=de on the +# kernel cmdline only covers the text console, not X11/Wayland input). Cinnamon +# ships its own parallel org.cinnamon.desktop.input-sources schema, separate +# from GNOME's org.gnome.desktop.input-sources — writing org.gnome alone had +# no effect (confirmed on real hardware), so both are set here. +dconf write /org/cinnamon/desktop/input-sources/sources "[('xkb', 'de')]" +dconf write /org/gnome/desktop/input-sources/sources "[('xkb', 'de')]" + +# Suppresses Epiphany's "set as default browser?" first-run prompt (schema +# default is true, see /usr/share/glib-2.0/schemas/org.gnome.epiphany.gschema.xml). +dconf write /org/gnome/epiphany/ask-for-default false + +# Kiosk cleanup: no desktop icons (Nemo). The panel itself is kept (removing +# the last panel via panels-enabled triggers Cinnamon's own "you don't have +# any panels, open panel settings?" confirmation dialog — hardcoded in +# js/ui/panel.js, no way to suppress it, so panels-enabled is deliberately +# left untouched). Instead, only the two useful applets are kept: a window +# list (to restore Epiphany if a user minimizes it) and power (shutdown/ +# reboot) — everything else (menu, systray, clock, workspace switcher etc.) +# is removed. Deliberately the classic window-list@cinnamon.org, not +# grouped-window-list@cinnamon.org: the grouped variant ships default +# "pinned apps" launchers (firefox.desktop, org.gnome.Terminal.desktop, +# nemo.desktop — confirmed via its settings-schema.json) that showed up in +# the panel even with unrelated applets removed. Plain window-list has no +# pinned-apps concept at all, only ever shows actually open windows. +dconf write /org/nemo/desktop/show-desktop-icons false +dconf write /org/cinnamon/enabled-applets "['panel1:left:0:window-list@cinnamon.org:1', 'panel1:right:0:power@cinnamon.org:2']" + +mkdir -p /home/liveuser/.local/share/tuxflotte-kiosk +exec epiphany --profile=/home/liveuser/.local/share/tuxflotte-kiosk file:///opt/tuxflotte/kiosk/index.html diff --git a/scripts/build.sh b/scripts/build.sh index 847e5ac..1cf9ed0 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -72,7 +72,7 @@ prepare_updates() { rm -rf "$updates_dir" mkdir -p "$updates_dir/opt/tuxflotte" - cp -a "$REPO_DIR/live-updates/etc" "$updates_dir/" + cp -a "$REPO_DIR/live-updates/." "$updates_dir/" cp -a "$REPO_DIR/scripts" "$updates_dir/opt/tuxflotte/" cp -a "$REPO_DIR/backends" "$updates_dir/opt/tuxflotte/" cp -a "$REPO_DIR/config" "$updates_dir/opt/tuxflotte/"