Wer auf einem Raspberry Pi ein Kiosk-System einrichten möchte, kann hierfür mit dem Raspberry OS Lite beginnen. Dort sollte über einen Aufruf von raspi-config der Autologin aktiviert werden (System Options -> S6 Auto Login).
Im nächsten Schritt wird der Wayland Compositor Sway installiert:
apt install sway xwayland
Nach der Installation wird im lokalen Nutzer, welcher für den Kiosk-Modus benutzt werden soll, eine Konfiguration-Datei angelegt:
mkdir -p ~/.config/sway/
nano ~/.config/sway/config
Diese wird mit folgender Konfiguration befüllt:
# Sway kiosk configuration for Raspberry Pi + Raspberry Pi Touch Display 2
# Configure sway
default_border none
default_floating_border none
# Set and transform output
output DSI-2 transform 90
# Execute application
exec_always sh -c '/home/seeseekey/testapp'
Die Konfiguration sorgt dafür das Sway rahmenlos arbeitet und der Bildschirm des Raspberry Touch 2 Display um 90 Grad gedreht wird. Im letzten Schritt wird in der Konfiguration eine Applikation gestartet.
Für Debugzwecke können daneben bei Bedarf noch folgende Zeilen hinzugefügt werden:
# Debug (write outputs and tree into file)
exec_always sh -c 'sleep 4 && swaymsg -t get_outputs > /tmp/outputs.json'
exec_always sh -c 'sleep 4 && swaymsg -t get_tree > /tmp/tree.json'
Zwar ist mit dieser Konfiguration das Display gedreht, aber die Eingaben werden noch in der ursprünglichen Rotation übermittelt. Hierzu muss im ersten Schritt mittels libinput-tools das Gerät ermittelt werden:
apt install libinput-tools
libinput list-devices
Nachdem das Touchscreen-Gerät ermittelt wurde, kann der Name des Gerätes genutzt werden, um eine udev-Regel zu definieren:
nano /etc/udev/rules.d/99-touch-rotation.rules
Dort wird die Rotation ebenfalls um 90 Grad gedreht:
ATTRS{name}=="11-005d Goodix Capacitive TouchScreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"
Nachdem diese Konfiguration hinterlegt sind, wird eine lokale systemd-Unit erstellt:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/sway.service
Diese wird mit folgendem Inhalt befüllt:
[Unit]
Description=Sway
After=graphical-session.target
Requires=graphical-session.target
[Service]
ExecStart=/usr/bin/sway
Restart=always
Environment=XDG_RUNTIME_DIR=/run/user/%U
[Install]
WantedBy=default.target
Anschließend kann die systemd-Unit aktiviert werden.
systemctl --user enable sway
Nun kann der Raspberry Pi neugestartet werden. Im Idealfall startet das System führt den Login durch und startet die Applikation. Sollte es hier Probleme geben, kann es an bestimmten Bibliotheken wie libxi6 liegen, welche noch nachinstalliert werden müssen.