Configure single-application mode

Single-application mode is a modified GNOME Shell which configures the Shell as an interactive kiosk. The administrator locks down some behavior to make the standard desktop more restrictive for users, letting them focus on selected features.

Set up single-application mode for a wide range of functions in a number of fields (from communication to entertainment or education), and use it as a self-serve machine, event manager, registration point, and so on.

Set up single-application mode

  1. Lock down settings to prevent printing, terminal access, and so on.

  2. Configure automatic login in the /etc/gdm/custom.conf file for the user.

    See Configure automatic login for more information.

  3. Create a new user with a name, which follows typical naming conventions (no space or special characters, do not start with a digit or a dash). Also, make sure the user name matches with the related names, such as when referring to a session. A good example is kiosk-user.

  4. Create a session with a name matching the user name (for example, for the kiosk-user mentioned above, kiosk is a good match). To do so, create a /usr/share/xsessions/kiosk.desktop file and set the Exec line as follows:

    Exec=gnome-session --session kiosk
  5. Set the default session for kiosk-user by adding the following line to the /var/lib/AccountsService/users/kiosk-user file:

  6. Define the kiosk session by writing a custom session definition, containing the following line:


    This creates a session that runs three programs: kiosk-app (a sample application), gnome-settings-daemon (a standard component in the GNOME session), and kiosk-shell (which is a customized version of GNOME Shell).

  7. Create a desktop file for kiosk-shell in /usr/share/applications/kiosk-shell.desktop, containing the following lines:

    [Desktop Entry]
    Exec=gnome-shell --mode=kiosk
  8. Create a mode definition /usr/share/gnome-shell/modes/kiosk.json. This is a simple json file defining the available gnome-shell user interface.

    As the starting point, look at /usr/share/gnome-shell/modes/classic.json and /usr/share/gnome-shell/modes/initial-setup.json for examples.