Raspberry Pi Browser im Kioskmodus starten

Aus Laub-Home Wiki

Ich möchte meinen Raspberry Pi 4 welcher am offiziellen 7" Touchdisplay hängt direkt in eine Webapps (HabPanel von openHAB) booten. Dafür braucht es einen Browser der den Kiosk Mode, also einen Vollbildmodus, bei dem nur die Webapplikation zu sehen ist, unterstützt. Die Wahl hier fiel auf chromium.

Als Basis Installation kommt hier Raspbian Buster Lite zum Einsatz, also ohne vorinstallierte Benutzeroberfläche. Das Setup findet ihr hier:

Nun kommen wir zum Setup des Kioskmode und installieren als erstes eine Benutzeroberfläche:

Installation von Paketen

apt install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox

Nun noch den Chromium Browser:

apt install --no-install-recommends chromium-browser rpi-chromium-mods libgles2-mesa libdbus-glib-1-2 
# bei Bullseye noch
apt install libevent-2.1-7 libvpx6 libgtk-3-common libdbus-glib-1-2

ja, es werden hier alle möglichen Pakete mit installiert ;-)

Konfiguration des Kiosk Modus

Nun kommen wir zur Konfiguration des Ganzen.

Als erstes sagen wir mittels raspi-config, das wir automatisch in die CLI via Pi User booten wollen:

raspi-config

Hier müssen wir Console Autologin aktivieren und speichern.

System Options --> Boot / Auto Login --> Console Autologin --> No Reboot

Nun richten wir die Autostart Datei unseres Display Managers openbox ein. Einfach die Konfiguration am Ende der Datei einfügen:

/etc/xdg/openbox/autostart

# Disable any form of screen saver / screen blanking / power management
xset s off
xset s noblank
xset -dpms

# Allow quitting the X server with CTRL-ATL-Backspace
setxkbmap -option terminate:ctrl_alt_bksp

# Start Chromium in kiosk mode
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium-browser 'http://yourwebapp/' --incognito --kiosk --disable-component-update --check-for-update-interval=31536000

Was passiert hier?

  • Deaktivierung von Powermanagement, damit das Display immer an bleibt.
  • CTRL + ALT + BACKSPACE zum beenden des Modus
  • Starten des Chromium Browser im Kiosk Mode. Hier gewünschte URL angeben.
  • Solltet ihr DarkMode haben wollen: Chromium / Chrome Dark Mode via Konfigurationsschalter

Nun bringen wir noch den X-Server in den Autostart, damit der Pi automatisch in diesen Bootet, nachdem auf der Cli der Pi User automatisch eingeloggt wurde.

Dafür switchen wir als erstes den Benutzer von root zu pi:

su - pi

jetzt fügen wir der .bash_profile die untenstehende Zeile am Ende ein. Sollte die Datei noch nicht da sein, einfach anlegen. /home/pi/.bash_profile

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor

Zum Abschluss starten wir den Pi neu.

sudo reboot

Bei Neustart sollte er dann nach ein wenig Zeit den Browser inklusive der gewünschten Webseite anzeigen.

Refresh des Browser via Shell

Mochte man die Webseite Neuladen und man hat keine Tastatur angeschlossen, kann man via SSH den F5 Key an den Browser schicken:

# Install xdotool
apt update && apt install xdotool -y
# falls nicht als Pi User angemeldet
su - pi
# Browser Refresh ausführen
DISPLAY=:0 xdotool key "ctrl+F5"

Der Befehl sendet ein CTRL + F5 an den Browser.

HABPanel im Browser starten

bei mir läuft openHAB mit HABPanel auf dem Pi via Docker. Da HABPanel erst ein wenig später hochgefahren ist, habe ich eine Prüfung auf die HABPanel Seite gemacht und starte Chromium erst wenn die Webseite verfügbar ist.

until curl --fail -s http://localhost:8080/habpanel/; do sleep 1; done && chromium-browser 'http://localhost:8080/habpanel/' --incognito --kiosk

TIPP: HABPanel auf Deutsch anzeigen lassen:

TIPP: HABPanel Standard Panel festlegen:

Möchte man direkt in ein Dashboard springen, so kann man dieses direkt in der URL angeben, Voraussetzung hierfür ist das vorherige festlegen des Standard Panels.

until curl --fail -s http://localhost:8080/habpanel/; do sleep 1; done && chromium-browser 'http://localhost:8080/habpanel/#/view/YOURDASHBOARD' --incognito --kiosk --disable-component-update --check-for-update-interval=31536000 --aggressive-cache-discard --disable-sync-preferences --process-per-site

Firefox-ESR im Kiosk Mode

möchte man lieber Firefox nutzen, welcher ab der Version 78 ebenfalls den Kiosk Mode unterstützt, so kann man diesen nachinstallieren:

apt update && apt install firefox -y

der Befehl um diesen dann im Kiosk Mode zu starten ist wie folgt:

firefox --private-window --kiosk 'http://localhost:8080/habpanel/#/view/Overview'

einfach überall wo der chromium mittels chromium-browser 'http://localhost:8080/habpanel/#/view/Overview' --incognito --kiosk --disable-component-update --check-for-update-interval=31536000 gestartet wird durch den oben stehenden Befehl ersetzten. Schon hat man einen Firefox anstelle des Chromium Browsers.

Quellen