table of contents
GNOME-SESSION(1) | General Commands Manual | GNOME-SESSION(1) |
NAME¶
gnome-session - 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¶
May 2020 | GNOME |