gnome-session - Man Page

Start the GNOME desktop environment

Synopsis

gnome-session [-a|--autostart=DIR] [--session=SESSION] [--failsafe|-f] [--debug] [--whale]

Description

The gnome-session program starts up the GNOME desktop environment. This command is typically executed by your login manager (either gdm, xdm, or from your X startup scripts). It will load either your saved session, or it will provide a default session for the user as defined by the system administrator (or the default GNOME installation on your system). Note that gnome-session is a wrapper script for gnome-session-binary.

The default session is defined in gnome.session, a .desktop-like file that is looked for in $XDG_CONFIG_HOME/gnome-session/sessions, $XDG_CONFIG_DIRS/gnome-session/sessions and $XDG_DATA_DIRS/gnome-session/sessions.

When saving a session, gnome-session saves the currently running applications in the $XDG_CONFIG_HOME/gnome-session/saved-session directory. Saving sessions is only supported with the legacy non-systemd startup method.

gnome-session is an X11R6 session manager. It can manage GNOME applications as well as any X11R6 SM compliant application.

Options

The following options are supported:

--autostart=DIR

The directory DIR to be searched for autostart .desktop files. This option can be used multiple times. When this option is present, then default autostart directories will not be searched.

--session=SESSION

Use the applications defined in SESSION.session. If not specified, gnome.session will be used.

--failsafe

Run in fail-safe mode. User-specified applications will not be started.

--debug

Enable debugging code.

--whale

Show the fail whale in a dialog for debugging it.

Session Definition

Sessions are defined in .session files, that are using a .desktop-like format, with the following keys in the GNOME Session group:

Name

Name of the session. This can be localized.

RequiredComponents

List of component identifiers (desktop files) that are required by the session. The required components will always run in the session.

Here is an example of a session definition:

[GNOME Session]
Name=GNOME
RequiredComponents=gnome-shell;gnome-settings-daemon;

In systemd managed sessions the RequiredComponents may be provided by systemd units instead. In this case the corresponding .desktop file needs to contain X-GNOME-HiddenUnderSystemd=true. gnome-session will ignore these components and rely on systemd to manage them appropriately, see the systemd for more information on how this works.

The .session files are looked for in $XDG_CONFIG_HOME/gnome-session/sessions, $XDG_CONFIG_DIRS/gnome-session/sessions and $XDG_DATA_DIRS/gnome-session/sessions.

systemd

gnome-session can pass much of the session management over to systemd. In this case, startup components that have X-GNOME-HiddenUnderSystemd=true set in their .desktop file will be ignored by gnome-session. It instead relies on the fact that these components are managed by systemd.

systemd provides the two special targets graphical-session.target and graphical-session-pre.target which are fully functional and should be used. gnome-session provides the following main targets:

gnome-session.target

Generic unit that will be active throughout the session. Similar to graphical-session.target.

gnome-session-pre.target

Used for tasks that need to be done before session startup. Similar to graphical-session-pre.target.

gnome-session-x11@SESSION.target gnome-session-wayland@SESSION.target

Main unit started for X11/wayland based session. SESSION is set according to the session that is passed in --session.

gnome-session-x11.target gnome-session-wayland.target

Convenience units without the session embedded into the target.

gnome-session@SESSION.target

Convenience unit with just the SESSION information embedded.

gnome-session-x11-services.target

Special unit started when X11 services are needed. This will be used from GNOME 3.36 onwards. Programs will need to use the special GNOME_SETUP_DISPLAY environment variable instead of DISPLAY.

Note that care must be taken to set appropriate After= rules. It is also strongly recommended to always do this in combination with BindsTo= or PartOf= on one of the core targets (e.g. graphical-session.target).

Units are required to set CollectMode=inactive-or-failed. In addition, it is strongly recommended to set TimeoutStopSec=5 so that logout will not be delayed indefinitely in case the process does not stop properly.

Environment

gnome-session sets several environment variables for the use of its child processes:

SESSION_MANAGER

This variable is used by session-manager aware clients to contact gnome-session.

DISPLAY

This variable is set to the X display being used by gnome-session. Note that if the --display option is used this might be different from the setting of the environment variable when gnome-session is invoked.

Behavior of gnome-session ifself can be modified via the following environment variable:

GNOME_SESSION_AUTOSTART_DIR

This variable specifies a list of directories to the searched for autostart files. This variable overrides all directories specified via the --autostart option, as well as all default autostart directories.

Files

$XDG_CONFIG_HOME/autostart $XDG_CONFIG_DIRS/autostart /usr/share/gnome/autostart

Applications defined via .desktop files in those directories will be started on login.

$XDG_CONFIG_HOME/gnome-session/sessions $XDG_CONFIG_DIRS/gnome-session/sessions $XDG_DATA_DIRS/gnome-session/sessions

These directories contain the .session files that can be used with the --session option.

$XDG_CONFIG_HOME/gnome-session/saved-session

This directory contains the list of applications of the saved session.

Bugs

If you find bugs in the gnome-session program, please report these on https://gitlab.gnome.org/GNOME/gnome-session/issues.

See Also

gnome-session-quit(1)

Referenced By

gnome-session-quit(1).

May 2020 GNOME