Pour commencer, il faut avoir un Raspberry Pi avec la dernière version de Raspberry Pi OS Lite en 64 bits installée. (C’est la version la plus légère, sans environnement graphique installé.) À partir de là, on peut se connecter à distance en SSH, ou directement en ligne de commande.

Si ce n’est pas fait, on s’assure que le système est à jour.

apt-get update && apt-get upgrade

On installe les paquets nécessaires : un système et gestionnaire de fenêtres, un outil cachant le curseur de la souris, et un navigateur web.

apt-get install --no-install-recommends xserver-xorg xorg xinit openbox unclutter lightdm
apt-get install --no-install-recommends chromium-browser

On procède à la création de l’utilisateur kiosk dédié pour cet usage et de son espace de stockage.

groupadd kiosk
useradd -m kiosk -g kiosk -s /bin/bash 

mkdir -p /home/kiosk/.config/openbox
chown -R kiosk:kiosk /home/kiosk

À partir de là, on configure le gestionnaire de session pour qu’il se connecte automatiquement au démarrage avec l’utilisateur kiosk.

mv /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.backup
cat > /etc/lightdm/lightdm.conf << EOF
[Seat:*]
autologin-user=kiosk
user-session=openbox
EOF

Dernière étape, c’est de configurer le lancement du navigateur (ainsi que le masquage du curseur) à l’ouverture de la session.

cat > /home/kiosk/.config/openbox/autostart << EOF
#!/bin/bash

xset s off
xset s noblank
xset -dpms

unclutter -idle 0.1 -grab -root &

while :
 do
  xrandr --auto
  chromium \
    --no-first-run \
    --start-maximized \
    --disable \
    --disable-translate \
    --disable-infobars \
    --disable-suggestions-service \
    --disable-save-password-bubble \
    --disable-session-crashed-bubble \
    --incognito \
    --kiosk "https://example.com/kiosk"
  sleep 5
 done &
EOF

Voilà, il suffit de redémarrer le Raspberry Pi connecté à l’écran de projection, et automatiquement il se connectera et affichera la page web configurée.