niklas‑stephan.de

Home Assistant touchscreen kiosk on iris (GNOME, prepared 2026-10-21)

Last updated 05/11/2026 · iris, kiosk, gnome, home-assistant

State (2026-10-21)

Prepared on iris, not yet tested (no screen/touch device attached at the time; all DRM connectors disconnected). Takes effect at the next gdm start (reboot with the screen plugged in).

Decision: stay on GNOME (the recipe that worked on metis, see iris-ha-kiosk) and do not change the compositor at the same time as the move. The labwc failure on metis was an amdgpu DCN 4.0 DRM-handover race with the gdm greeter; iris has an Intel HD 510 (i915), so that bug probably does not apply there, but labwc is only the fallback.

Update 2026-10-21 (late): HA now runs on iris

The kiosk URL changed from http://192.168.68.50:8123 to http://127.0.0.1:8123 (~/.local/bin/ha-kiosk-launch.sh on iris, copy in /data/maintenance/iris-kiosk/; restart with /data/maintenance/iris-kiosk/restart-kiosk.sh). The browser origin changed, so one new login on the touchscreen is needed. Because HA is local, the kiosk no longer depends on metis. Still to confirm by Niklas: touch input and the on-screen keyboard.

Update 2026-10-21 (after the move): gdm3 was missing

The first boot at the new place showed only a text console: the gdm3 package on iris was in rc state (binary /usr/sbin/gdm3 gone, only the stale /etc/init.d/gdm3 and its generated gdm3.service remained, which “succeeded” doing nothing). I had misread that as gdm being installed. Fix: sudo apt-get install -y gdm3 (the conffile custom.conf with autologin survived). gdm.service then autologged in and firefox --kiosk http://192.168.68.50:8123 started. display-manager.service -> gdm3.service -> gdm.service is the normal Ubuntu alias chain; systemctl is-enabled gdm says disabled and that is fine. Check dpkg -l gdm3 shows ii before assuming a desktop works.

Reboot test 2026-10-21 (iris, cold boot with screen attached): gdm autologin -> GNOME -> firefox --kiosk started by itself, no failed units, 11 containers up, ZFS healthy. Touch/keyboard still to be confirmed by Niklas on the screen.

Measured after login: gnome-shell ~205 MiB, firefox ~580 MiB (+ ~190 MiB content process), ~1.4 GiB desktop+firefox in total; CPU pressure some avg10 settled from 26% (page load) to ~6%; RAM available stays ~9 GiB.

What was done on iris

Script in /data/maintenance/iris-kiosk/ on metis (install-iris-kiosk.sh, ha-kiosk-launch.sh); run on iris with sudo ./install-iris-kiosk.sh (idempotent), --revert undoes gdm/autostart/masks (not the gsettings values).

  • /etc/gdm3/custom.conf: AutomaticLoginEnable = true, AutomaticLogin = handtrixxx (backup custom.conf.pre-kiosk).
  • AccountsService session ubuntu (GNOME), set via gdbus ... org.freedesktop.Accounts.User.SetSession.
  • ~/.local/bin/ha-kiosk-launch.sh: waits (max 5 min) until HA answers (now http://127.0.0.1:8123, was http://192.168.68.50:8123), then loops firefox --kiosk (restarts on exit). Started from ~/.config/autostart/ha-kiosk.desktop.
  • gsettings (user dconf): idle-delay 0, no screen lock, no sleep or dim, on-screen keyboard enabled (GNOME built-in, no wvkbd), no notification banners, animations off.
  • Boot target stays graphical.target; the heavy trimming units (tracker, evolution-data-server, gvfs monitors) are not installed on iris, so nothing needed masking.

Verify after the move (screen attached)

  1. Boot goes straight into HA, no greeter or login screen. Touch works. The on-screen keyboard shows when a text field is tapped.
  2. Cost on iris (2-core G4400 next to Frigate): free -h, top, cat /proc/pressure/cpu. The measured GNOME cost on metis was ~1.6 GiB RAM; CPU on iris is the unknown. If too heavy, trim GNOME further or try labwc/cage on Intel as a separate step.
  3. If the screen stays black or shows the greeter: journalctl -b -u gdm3 and journalctl -b --user-unit=gnome-shell*; fallback labwc notes: /data/maintenance/kiosk-session/NOTES.md.

Source: Wiki.js