* 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 HAL and ConsoleKit 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. *** GdmProductDisplay A subclass of GdmDisplay that only runs a user session. It does not run a login greeter interface. It will also be destroyed when the user session ends. *** 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. *** GdmFactorySlave A subclass of GdmSlave that only runs a login greeter. *** GdmProductSlave A subclass of GdmSlave that only runs a user session. ** GdmServer A class that manages running a local X Server. ** GdmGreeterServer A class that creates a D-Bus server on a private connection that is used to command the greeter subprocess. ** GdmGreeterSession A class that manages running an external greeter session. This will provide the GdmGreeterServer D-Bus address to the subprocesses. ** GdmSession An interface used to control the authentication process and the user session itself. Once the authentication process is started an object that implements this interface will emit signals to request any required information. *** GdmSessionDirect A class of object that implements the GdmSession interface. It is used to start and directly control a GdmSessionWorker subprocess by creating a D-Bus server on a private connection. *** GdmSessionRelay A class of object that implements the GdmSession interface. It is used to relay session controls to a remote listener. In particular, it is used to relay messages between the GreeterServer in a GdmFactorySlave and the GdmSessionDirect in a GdmProductSlave. ** 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: