GNOME-SESSION(1) | General Commands Manual | GNOME-SESSION(1) |
gnome-session - Start the GNOME desktop environment
gnome-session [-a|--autostart=DIR] [--session=SESSION] [--failsafe|-f] [--debug] [--whale]
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.
The following options are supported:
Sessions are defined in .session files, that are using a .desktop-like format, with the following keys in the GNOME Session group:
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.
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:
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.
gnome-session sets several environment variables for the use of its child processes:
SESSION_MANAGER
DISPLAY
Behavior of gnome-session ifself can be modified via the following environment variable:
GNOME_SESSION_AUTOSTART_DIR
$XDG_CONFIG_HOME/autostart $XDG_CONFIG_DIRS/autostart /usr/share/gnome/autostart
$XDG_CONFIG_HOME/gnome-session/sessions $XDG_CONFIG_DIRS/gnome-session/sessions $XDG_DATA_DIRS/gnome-session/sessions
$XDG_CONFIG_HOME/gnome-session/saved-session
If you find bugs in the gnome-session program, please report these on https://gitlab.gnome.org/GNOME/gnome-session/issues.
gnome-session-properties(1) gnome-session-quit(1)
May 2020 | GNOME |