Stand 8.11.2026, zu #15 (Ruhebildschirm) und #2 (Gesten). Auf dem Display läuft der
Ruhebildschirm aus Entwurf C4 im Chromium-Kiosk. Unten rechts sitzt die Figur (F2), ein Tipp darauf
startet ein Gespräch mit Elektra (docs/stimme-und-geste.md). Eine Handgeste vor der Kamera
blättert die Seiten um. Uhr, Datum und Wetter sind echt (docs/datenweg.md), die Termine sind noch Platzhalter.
| Teil | Datei im Repo | Auf dem Pi |
|---|---|---|
| Kiosk-Seite mit Schrift | pi/kiosk/index.html, pi/kiosk/schrift/ |
~/kuechen-display/kiosk/ |
| Wetterbild (W5, flach) | docs/entwuerfe/wetter/flach/*.png |
~/kuechen-display/kiosk/wetter/ |
| Figur (F2) | docs/entwuerfe/figur/*-klein.png |
~/kuechen-display/kiosk/figur/ |
| Küchen-Dienst: Seite und Ereignisse | pi/dienst/dienst.py |
Dienst kuechen-dienst |
| Kameradienst | pi/gesten/gesten.py, geste.py |
Dienst kuechen-gesten, nur beim Testen an |
| Rückweg-Leiste auf App-Seiten mit Mikro-Knopf (#10, #70) | pi/kiosk-rueckweg/ |
~/kuechen-display/kiosk-rueckweg/, siehe docs/spotify.md |
| Fensterregel und Panel (Bildschirmtastatur) | pi/kiosk/labwc-rc.xml, pi/kiosk/wf-panel-pi.ini |
~/.config/labwc/rc.xml, ~/.config/wf-panel-pi/wf-panel-pi.ini |
| Chromium-Autostart | pi/kiosk/kiosk.desktop, pi/kiosk-start.sh |
~/.config/autostart/kiosk.desktop, ~/kuechen-display/kiosk-start.sh |
| Deploy vom Mac | pi/push.sh |
– |
| Einrichtung | pi/install-kiosk.sh |
~/kuechen-display/install-kiosk.sh |
Der Küchen-Dienst liefert die Seite auf http://localhost:8080/ aus (nur lokal erreichbar) und
schickt ihr Ereignisse als Server-Sent Events an /ereignisse. Der Kameradienst liest die Kamera,
findet mit MediaPipe die Hände und schickt erkannte Gesten per POST an den Küchen-Dienst
(/geste, /hand). Bilder verlassen das Gerät nicht und werden nicht gespeichert.
Festlegung in #2:
| Geste | Wirkung |
|---|---|
| Hand zügig quer wischen, nach links | nächste Seite rechts (Heute → Morgen) |
| nach rechts | Seite links (Heute → Apps) |
| flache Hand, Finger nach oben, ca. 0,6 s ruhig | Stopp: Elektra hört auf zu sprechen |
So entscheidet der Code (Schwellen oben in pi/gesten/geste.py, Tests in test_geste.py):
KAMERA_KOPFUEBER=1 dreht der Dienst das Bild um 180°.pi/push.sh
Siehe docs/deploy.md. Die erste Einrichtung (Token, Gerätewerte der Bridge) steht in
docs/stimme-und-geste.md.
Tippt man in ein Textfeld (zum Beispiel die Suche im Spotify-Player), geht unten die
Bildschirmtastatur von Pi OS auf (squeekboard, deutsches Layout). Sie läuft schon von Haus aus.
Damit sie sichtbar wird, braucht es drei Dinge, eingerichtet von pi/install-kiosk.sh und
pi/kiosk-start.sh:
--enable-wayland-ime --wayland-text-input-version=3. Ohne diese Flags
meldet Chromium squeekboard kein Textfeld.--kiosk. Im Vollbild blendet labwc die Layer-Shell-Ebene aus, in der squeekboard liegt.
squeekboard meldete dann „sichtbar“, auf dem Bildschirm war aber nichts (15.11.2026).pi/kiosk/labwc-rc.xml, für alle Fenster
chrom*) Chromium ohne Titelleiste, und das Panel blendet sich aus (autohide=true in
pi/kiosk/wf-panel-pi.ini).install-kiosk.sh legt beide Dateien nur ab, wenn sie sich unterscheiden. Beim ersten Mal sichert
es die alte Datei als *.vor-kiosk, lädt labwc neu (kill -HUP) und startet das Panel neu.
Von Hand ein- und ausblenden (zum Prüfen ohne Finger):
ssh kuechen-display.local 'DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus busctl --user call sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true'
Das Panel (Taskleiste) läuft im Kiosk nicht. Auch ausgeblendet ließ es oben einen Streifen von
etwa 5 px stehen, und seine Hinweise (Updates, „power supply not capable …“) erschienen über dem
Kiosk. pi/kiosk-start.sh beendet es deshalb bei jedem Start. Pi OS startet es über
/etc/xdg/labwc/autostart, und labwc läuft mit -m (eigene und System-Konfiguration werden
zusammengeführt), ein eigener Autostart kann es also nicht weglassen. Folgen: Über VNC gibt es
keine Taskleiste, und die Akku-Anzeige (batteryTray.py, ein Symbol im Panel) ist nicht zu sehen.
Den Akku-Wächter betrifft das nicht. Panel für eine VNC-Sitzung zurückholen:
ssh kuechen-display.local 'WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 setsid -f lwrespawn /usr/bin/wf-panel-pi'
Ein Neustart des Kiosks beendet es wieder. pi/kiosk/wf-panel-pi.ini (autohide=true) bleibt,
damit ein von Hand gestartetes Panel nicht über dem Kiosk steht.
ssh kuechen-display.local "pkill -x chromium; sleep 1; setsid -f sh kuechen-display/kiosk-start.sh '?debug=1' </dev/null >/tmp/kiosk.log 2>&1"
pkill -x chromium trifft nur den Browser. Ein pkill -f chromium… würde die eigene
ssh-Befehlszeile mit beenden.
Das System läuft auf en_GB. Damit Chromium kein Übersetzungsfenster zeigt, reichen die Flags
--lang=de-DE --disable-features=Translate allein nicht: In
~/.config/chromium/Default/Preferences müssen außerdem translate.enabled auf false und die
Sprachen unter intl auf de stehen (bei beendetem Chromium ändern).
Zusätze an der Adresse:
?debug=1 zeigt unten links live, was die Kamera sieht (Handposition x/y, Handform, Sicherheit),
die letzte Geste und Elektras Zustand.?messen=1 blättert 60 s lang selbst hin und her und schreibt die Bildraten ins Journal des Dienstes.ssh kuechen-display.local 'journalctl -u kuechen-gesten -f | grep -E "Geste|Kamera:"'
Jede Minute steht dort eine Zeile Kamera: … Bilder/s, … CPU … %, jede erkannte Geste als
Geste: {...}.
Die Kamera lag unter dem Display und schaute leicht nach oben, später sitzt sie darüber.
backdrop-filter: blur(28px)) mit Kamera-Erkennung gleichzeitig, ?messen=1:
beim Gleiten 56 Bilder/s (8 von 703 Frames über 33 ms), in Ruhe 59 Bilder/s.throttled=0x0).pi/kiosk/schrift/, eine Datei für alle Stärken,
Lizenz OFL, nur lateinische Zeichen). Auf dem Pi gibt es weder SF Pro noch Helvetica, und Nimbus
Sans hat keinen dünnen Schnitt. Die Wahl ist ein Vorschlag (#15) und am Display noch nicht
angesehen. Die Entwürfe in docs/entwuerfe/ruhebildschirm.html nutzen weiter die Apple-Systemschrift.