GNOME Kiosk is a separate Wayland compositor built on the same core components as GNOME Shell, such as Mutter.
While it does not provide a desktop UI, it is intended for kiosk and appliance use cases.
Originally designed to run a single application in fullscreen mode, recent development has expanded its scope toward more versatile window management and system integration.
Recent Releases Overview
47
- Support for Shell introspection API (in
--unsafe-mode
).
48
- Initial support for configurable windows via
window-config.ini
. - Added Shell Screenshot D-Bus API.
49
- Extended window configuration:
set-on-monitor
,set-window-type
, window tags. - Added support for remote sessions (Systemd).
- Fixes for GrabAccelerators, media keys, and compositor shortcut inhibition.
Window Configuration and Tagged Clients
One of the recent main areas of development has been window configuration.
- In GNOME 48, Kiosk gained initial support for configuring windows via a static configuration file (
window-config.ini
). - In GNOME 49, this functionality was extended with additional options:
set-on-monitor
: place windows on a specific monitor.set-window-type
: assign specific roles to windows (e.g.desktop
,dock
,splash
).- Matching based on Window tags: allow selection of windows based on toplevel tags, a new feature in Wayland protocols 1.43.
Additionally, with the new (in mutter from GNOME 49) gnome-service-client
utility, toplevel windows tags can be assigned to clients at launch, making it possible to configure their behavior in Kiosk without modification to the client.
Example: configuring a tagged client in Kiosk
GNOME Kiosk searches for the window configuration file window-config.ini
in the following locations:
- The base directory for user-specific application configuration usually
$HOME/.config/gnome-kiosk/window-config.ini
- The system-wide list of directories for application data
$XDG_DATA_DIRS
This list usually includes:/var/lib/flatpak/exports/share/gnome-kiosk/window-config.ini
/usr/local/share/gnome-kiosk/window-config.ini
/usr/share/gnome-kiosk/window-config.ini
Therefore, for a user configuration, edit $HOME/.config/gnome-kiosk/window-config.ini
to read:
[all]
set-fullscreen=false
set-above=false
[desktop]
match-tag=desktop
set-window-type=desktop
set-fullscreen=true
With this configuration, GNOME Kiosk will treat any surface with the toplevel tag desktop
as a „desktop“ type of window.
launching a tagged client
gnome-service-client -t desktop weston-simple-shm
This command starts the weston-simple-shm
client and associates the tag desktop
with its surface.
The end result is the weston-simple-shm
window running as a background window placed at the bottom of the windows stack.
This combination makes it possible to build structured kiosk environments with different Wayland client used as docks or desktop windows for implementing root menus.
Accessibility and Input
Several improvements have been made to input handling and accessibility:
- Fixes for
GrabAccelerators
support. - Support for media keys in Systemd sessions.
- Ability to inhibit compositor shortcuts.
- Compatibility with screen reader usage.
Remote Sessions
As of GNOME 49, Kiosk supports remote sessions when run under Systemd. This allows kiosk sessions to be used not only on local displays but also in remote session contexts.
D-Bus APIs
Although GNOME Kiosk is a separate compositor, it implements selected D-Bus APIs also available in GNOME Shell for compatibility purposes. These include:
- Screenshot API (added in 48).
- Shell introspection when started with
--unsafe-mode
(added in 47).
This makes it possible to use existing GNOME testing and automation frameworks such as Ponytail and Dogtail with kiosk sessions.
These APIs allow automation scripts to inspect and interact with the user interface, enabling the creation of automated tests and demonstrations for kiosk application (using tools like GNOME ponytail and dogtail).
GNOME Kiosk is the Wayland compositor used with the Wayland enabled version of Anaconda, the installer for Fedora (and Red Hat Enterprise Linux as well). The support for introspection and screenshots is used by anabot, the framework for automated testing of the installer.
Development Direction
Future development of GNOME Kiosk is expected to continue along the following lines:
- Configuration refinement: further improving flexibility of the window configuration system.
- Accessibility: ensuring kiosk sessions benefit from GNOME’s accessibility technologies.
The goal remains to provide a focused, reliable compositor for kiosk and appliance deployments, without implementing the full desktop UI features of GNOME Shell.
This is a companion discussion topic for the original entry at https://blogs.gnome.org/shell-dev/2025/09/10/gnome-kiosk-updates/