Under /usr/share/gnome-session/sessions are files which describe the different types of sessions available from gnome-session. In these files is a list of required components, eg for shell:
RequiredComponents=gnome-shell;gnome-settings-daemon;
or for fallback:
RequiredComponents=gnome-panel;gnome-settings-daemon;
This appears to be a list of executables, but it is not. If I change gnome-panel to some other type of panel, the session does not start, and I see the following errors in ~/.xsession-errors:
gnome-session[2003]: WARNING: Unable to find required component 'xfce4-panel'
So my question: What is a component, how are they defined, and where does gnome-session look for them?
A component is defined in a .desktop like a normal application. It must also include a key defining the name of the component it provides such as:
Here "panel" is the name of the component.
This is documented at https://wiki.gnome.org/Projects/SessionManagement/RequiredComponents