* GDM Internals This document attempts to describe the internal design of GDM. ** GdmManager The GdmManager is the top-level singleton object. It contains a GdmDisplayStore object and a number of GdmDisplayFactory objects. ** GdmDisplayStore This is a container for storing GdmDisplay objects. ** GdmDisplayFactory A GdmDisplayFactory is an abstract class of object that is capable of creating GdmDisplay objects. *** GdmLocalDisplayFactory A subclass of GdmDisplayFactory that uses logind to identify local hardware on which to start a GdmDisplay. *** GdmXdmcpDisplayFactory A subclass of GdmDisplayFactory that listens for requests for XDMCP logins and creates a GdmDisplay for them. ** GdmDisplay A GdmDisplay is an abstract class of object that represents a single X Server diplay. *** GdmStaticDisplay A subclass of GdmDisplay that represents a local display. *** GdmXdmcpDisplay A subclass of GdmDisplay that represents a remote XDMCP display. ** GdmSlave A GdmSlave is an abstract class of object that performs work for a GdmDisplay. A Slave is run in a sub-process spawned by each GdmDisplay. The slave communicates with the parent display using the D-Bus protocol. *** GdmSimpleSlave A subclass of GdmSlave that runs both a login greeter and a user session. ** GdmServer A class, used by the slave, that manages running a local X Server. ** GdmLaunchEnvironment A class, used by the slave, that manages a GdmSession. ** GdmSession A class, used by multiple components, to manage PAM conversations and sessions. It's used by GdmLaunchEnvironment to manage program sessions (greeters, choosers, initial-setup), by GdmSimpleSlave to manage user sessions, and by the worker itself to perform reauth. ** GdmSessionWorkerJob A class that manages running a GdmSessionWorker subprocess. This will also provide the GdmSession D-Bus address to the subprocess. ** GdmSessionWorker This class handles the PAM conversation and relays the questions and messages to the GdmSession through the private D-Bus connection. When the user is authenticated this subprocess "exec"s the user session. Local Variables: mode: outline End: