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 (see the --systemd option which may be the default since 3.34). 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.
As of GNOME 3.34 the systemd support is new and the customizing the configuration is not yet easily possible. With GNOME 3.34 it may be best to use --builtin if session customizations are required. This is due to the way that GNOME currently defines the components that will be started on each session type.
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.
May 2020 | GNOME |