GNOME Kiosk Updates

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/
2 Likes