Compare commits

..

2 Commits

Author SHA1 Message Date
50e41e2230 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=<dir> (see ADR-0004/0006 and platform-docs
history for the rejected --application-mode/--private-instance paths).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 12:12:37 +02:00
1e83a27a57 fix: match GRUB search label to the TUXFLOTTE ISO volume ID
The GRUB config searched for the volume by the original Fedora label
(Fedora-Cinn-Live-44), which no longer matches once the ISO is built
with its own Tuxflotte volume ID.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 12:12:23 +02:00
8 changed files with 258 additions and 8 deletions

View File

@ -17,7 +17,7 @@ insmod ext2
set timeout=10 set timeout=10
### END /etc/grub.d/00_header ### ### END /etc/grub.d/00_header ###
search --no-floppy --set=root -l 'Fedora-Cinn-Live-44' search --no-floppy --set=root -l 'TUXFLOTTE'
insmod gfxterm insmod gfxterm
terminal_output gfxterm terminal_output gfxterm
@ -26,12 +26,12 @@ set color_highlight=white/blue
### BEGIN /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/10_linux ###
menuentry 'Tuxflotte Provisioning (automatisch)' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Tuxflotte Provisioning (automatisch)' --class fedora --class gnu-linux --class gnu --class os {
linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=Fedora-Cinn-Live-44 rd.live.image vconsole.keymap=de tuxflotte.mode=auto linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=TUXFLOTTE rd.live.image vconsole.keymap=de tuxflotte.mode=auto
initrd /boot/x86_64/loader/initrd initrd /boot/x86_64/loader/initrd
} }
menuentry 'Tuxflotte Provisioning (interaktiv)' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Tuxflotte Provisioning (interaktiv)' --class fedora --class gnu-linux --class gnu --class os {
linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=Fedora-Cinn-Live-44 rd.live.image vconsole.keymap=de tuxflotte.mode=interactive linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=TUXFLOTTE rd.live.image vconsole.keymap=de tuxflotte.mode=interactive
initrd /boot/x86_64/loader/initrd initrd /boot/x86_64/loader/initrd
} }

View File

@ -14,7 +14,7 @@ insmod chain
set timeout=10 set timeout=10
### END /etc/grub.d/00_header ### ### END /etc/grub.d/00_header ###
search --no-floppy --set=root -l 'Fedora-Cinn-Live-44' search --no-floppy --set=root -l 'TUXFLOTTE'
insmod gfxterm insmod gfxterm
terminal_output gfxterm terminal_output gfxterm
@ -23,12 +23,12 @@ set color_highlight=white/blue
### BEGIN /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/10_linux ###
menuentry 'Tuxflotte Provisioning (automatisch)' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Tuxflotte Provisioning (automatisch)' --class fedora --class gnu-linux --class gnu --class os {
linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=Fedora-Cinn-Live-44 rd.live.image vconsole.keymap=de tuxflotte.mode=auto linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=TUXFLOTTE rd.live.image vconsole.keymap=de tuxflotte.mode=auto
initrd /boot/x86_64/loader/initrd initrd /boot/x86_64/loader/initrd
} }
menuentry 'Tuxflotte Provisioning (interaktiv)' --class fedora --class gnu-linux --class gnu --class os { menuentry 'Tuxflotte Provisioning (interaktiv)' --class fedora --class gnu-linux --class gnu --class os {
linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=Fedora-Cinn-Live-44 rd.live.image vconsole.keymap=de tuxflotte.mode=interactive linux /boot/x86_64/loader/linux quiet rhgb root=live:CDLABEL=TUXFLOTTE rd.live.image vconsole.keymap=de tuxflotte.mode=interactive
initrd /boot/x86_64/loader/initrd initrd /boot/x86_64/loader/initrd
} }

View File

@ -0,0 +1,4 @@
[Desktop Entry]
Type=Application
Name=SELinux Troubleshooter Notifier
Hidden=true

View File

@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=Tuxflotte Provisioning 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 X-GNOME-Autostart-enabled=true
NoDisplay=true NoDisplay=true

View File

@ -0,0 +1,33 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Tuxflotte Provisioning</title>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: #ffffff;
color: #3465a4;
font-family: sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
img {
max-width: 60%;
margin-bottom: 2rem;
}
p {
font-size: 1.2rem;
}
</style>
</head>
<body>
<img src="logo.svg" alt="Tuxflotte">
<p>Kiosk-Oberfläche in Entwicklung.</p>
</body>
</html>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -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

View File

@ -72,7 +72,7 @@ prepare_updates() {
rm -rf "$updates_dir" rm -rf "$updates_dir"
mkdir -p "$updates_dir/opt/tuxflotte" 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/scripts" "$updates_dir/opt/tuxflotte/"
cp -a "$REPO_DIR/backends" "$updates_dir/opt/tuxflotte/" cp -a "$REPO_DIR/backends" "$updates_dir/opt/tuxflotte/"
cp -a "$REPO_DIR/config" "$updates_dir/opt/tuxflotte/" cp -a "$REPO_DIR/config" "$updates_dir/opt/tuxflotte/"
@ -91,6 +91,7 @@ create_iso() {
-indev "$SOURCE_ISO" \ -indev "$SOURCE_ISO" \
-outdev "$output_iso" \ -outdev "$output_iso" \
-compliance no_emul_toc \ -compliance no_emul_toc \
-volid TUXFLOTTE \
-map "$REPO_DIR/grub/EFI-BOOT-grub.cfg" /EFI/BOOT/grub.cfg \ -map "$REPO_DIR/grub/EFI-BOOT-grub.cfg" /EFI/BOOT/grub.cfg \
-map "$REPO_DIR/grub/boot-grub2-grub.cfg" /boot/grub2/grub.cfg \ -map "$REPO_DIR/grub/boot-grub2-grub.cfg" /boot/grub2/grub.cfg \
-map "$WORK_DIR/updates" /updates \ -map "$WORK_DIR/updates" /updates \