Repository navigation
v2.0.0
v2.0.0
The kiosk is odio-kiosk now, built on Qt 6 / Chromium 122, and runs one
instance per screen. An installed node migrates on apt upgrade, but the unit
changed name and shape — see Upgrading below.
✨ Features
-
Qt 6 instead of Qt 5.15: the engine is Chromium 122, not Chromium 87 from
late 2020.:where(),accent-color, container queries, unprefixedmask-*
andObject.hasOwnall work, so the odio UI stops losing whole stylesheet
rules to an unknown pseudo-class and library code stops tripping on missing
built-ins. -
One kiosk per screen: the unit is a template,
odio-kiosk@.service. Each
instance names the page it shows, and its framebuffer if it is not the first,
in~/.config/odio-kiosk/<instance>.conf:URL=http://localhost:8018/ui FB=/dev/fb1 -
The node's Qt environment is a conffile:
/etc/default/odio-kioskholds
the default framebuffer, theQT_QPA_FB_*settings and the Chromium flags —
editable in place, with no drop-in and no quoting, and preserved on upgrade. -
The unit names no server: which one to wait for, and be restarted with, is
deployment configuration, so it goes in a drop-in:# ~/.config/systemd/user/odio-kiosk@main.service.d/wait-for.conf [Unit] After=default.target my-server.service PartOf=my-server.service
The health check waits on
${URL}regardless, so a kiosk with no drop-in
still comes up once its server answers.
🐛 Fixes
- An instance with no URL says which file to write, instead of dying on a
missing environment file that names neither the file nor the instance. - A stopped kiosk is inactive, not failed:
SuccessExitStatus=1is gone —
this binary exits 143 onSIGTERM, which systemd already counts as a clean
stop. It also no longer turned a browser that cannot open its framebuffer into
a unit going quietly inactive behind a blank screen. - The current URL is no longer written on close: it went through a
QSettingspointer that was never allocated. - The user agent is honest: Qt's own, naming QtWebEngine and its Chromium
with anodio-kiosksuffix. It used to claim to be Firefox 89, which made
every server log line about this browser misleading.
⬆️ Upgrading from fbrowser-kiosk
The package Provides/Replaces/Breaks fbrowser-kiosk, so apt upgrade
migrates the node by itself. The unit does not come along: odio-screen.service
is gone, and no instance of the template is enabled on install.
systemctl --user disable --now odio-screen.service
mkdir -p ~/.config/odio-kiosk
printf 'URL=http://localhost:8018/ui\n' > ~/.config/odio-kiosk/main.conf
systemctl --user enable --now odio-kiosk@main.service📦 Install
curl -fsSL https://apt.odio.love/key.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
| sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update && sudo apt install odio-kioskFirst run, on a node that has never shown a screen:
sudo usermod -aG tty,video,input $USER # then log in again
sudo loginctl enable-linger $USERamd64 and arm64, Debian trixie / Raspberry Pi OS trixie. No armhf: Pi OS
armhf is Raspbian, which publishes no qt6-webengine binary for it, exactly as
it published no Qt 5 one.
What's Changed
Full Changelog: v1.0.0+git20260210.4213a69...v2.0.0