Session dependencies and load order
(This page is in my namespace because it's mostly a way for me to clear my mind, but perhaps is useful to someone else too)
The current situation with dependencies and ordering between gnome-session, mutter/gnome-session and gnome-settings-daemon is a mess
gnome-session
- Calls in order gnome-settings-daemon and gnome-shell, waits for them to be fully initialized before continuing
Uses org.gnome.ScreenSaver (provided by gnome-shell)
- Uses gtk+ sometimes (thus depends on gnome-settings-daemon/xsettings)
Uses org.gnome.SessionManager.EndSessionDialog (provided by gnome-shell) at logout time
gnome-settings-daemon
Uses org.gnome.SessionManager for registration
- Sets environment variables for apps, so must run really early
media-keys: uses org.gnome.ShellKeyGrabber
- media-keys: at times, calls to org.gnome.Shell.Screenshot or org.gnome.Shell.Screencast
screensaver-proxy: uses org.gnome.ScreenSaver
power: uses org.gnome.SessionManager.Presence
- xsettings: watches org.gnome.Shell (to determine if the app menu is shown by the shell or not)
gnome-shell
- Registers with XSMP at startup (mutter)
screenshield, messagetray: use org.gnome.SessionManager.Presence
rfkill: use org.gnome.SettingsDaemon.Rfkill
brightness: use org.gnome.SettingsDaemon.Power.Screen
power: use org.gnome.SettingsDaemon.Power
keyboard: use org.gnome.SettingsDaemon.Keyboard
Watches org.gnome.SettingsDaemon.Orientation
- Uses org.gnome.Session to check if shutdown is available
- Uses org.gnome.Session to query for inhibitors
New in 3.10
gnome-settings-daemon uses org.gnome.Mutter.DisplayConfig (xrandr, color, power)
Soon
gnome-session and gnome-settings-daemon to use org.gnome.Mutter.IdleMonitor instead of X11's IDLETIME
Wayland only
XWayland depends on a running wayland compositor, so mutter must be launched first, and all ordering constraints, as process parent-child relationships and inheritance of environment variables, are suddenly reversed.