X display manager (program type)
When the display manager runs on the user's computer, it starts the X server before presenting the user the login screen, optionally repeating when the user logs out. In this condition, the display manager realizes in the X Window System the functionality of getty and login on character-mode terminals. When the display manager runs on a remote computer, it acts like a telnet server, requesting username and password and starting a remote session.
X11 Release 3 introduced display managers in October 1988 with the aim of supporting the standalone X terminals then just coming onto the market. Various display managers continue in routine use to provide a graphical login prompt on standalone computer workstations running X. X11R4 introduced the X Display Manager Control Protocol (XDMCP) in December 1989 to fix problems in the X11R3 implementation.
Local and remote display management
A display manager can run on the same computer where the user sits or on a remote one. In the first case, the display manager starts one or more X servers, displaying the login screen at the beginning and (optionally) every time the user logs out. In the second case, the display manager works according to the XDMCP protocol.
The XDMCP protocol mandates that the X server starts autonomously and connects to the display manager. In the X Window System paradigm, the server runs on the computer providing the display and input devices. A server can connect, using the XDMCP protocol, to a display manager running on another computer, requesting it to start the session. In this case, the X server acts as a graphical telnet client while the display manager acts like a telnet server: users start programs from the computer running the display manager, while their input and output take place on the computer where the server (and the user) sits.
An administrator can typically configure an XDMCP Chooser program running on the local computer or X terminal to connect to a specific host's X display manager or to display a list of suitable hosts that the user can choose from. Most implementations enable such a list to contain:
- a predefined set of hosts and their respective network addresses, and/or
- a set of hosts (on the local TCP/IP subnet) that the XDMCP Chooser determines by a network broadcast to the available display managers.
When the user selects a host from the list, the XDMCP Chooser running on the local machine will send a message to the selected remote computer's display manager and instruct it to connect the X server on the local computer or terminal.
X Display Manager Control Protocol
The X Display Manager Control Protocol uses UDP port 177. An X server requests that a display manager start a session by sending a
Query packet. If the display manager allows access for that X server, it responds by sending a
Willing packet back to the X server. (The X server can also send
IndirectQuery packets to start a session - this mechanism for requesting a session resembles using DHCP to request an IP address.)
The display manager must authenticate itself to the server. To do this the X server sends a
Request packet to the display manager, which returns an
Accept packet. If the
Accept packet contains the response the X server expects, the display manager is authenticated. Producing the correct response might require the display manager to have access to a secret key, for example. If authentication succeeds, the X server sends a
Manage packet to inform the display manager. Then the display manager displays its login screen by connecting to the X server as a regular X client.
During the session, the server can send
KeepAlive packets to the display manager at intervals. If the display manager fails to respond with an
Alive packet within a certain time, the X server presumes that the display manager has ceased running, and can terminate the connection.
One problem with XDMCP is that, similarly to telnet, the authentication takes place unencrypted. If snooping is possible, this leaves the system vulnerable to attack. It is more secure to use an ssh tunnel for X traffic.
XDM (the X Window Display Manager) originated in X11R3. This first version, written by Keith Packard of the MIT X Consortium, had several limitations, the most notable of which was that it could not detect when users switched X terminals off and on. In X11R3, XDM only knew about an X terminal from its entry in the Xservers file, but XDM only consulted this file when it started. Thus every time a user switched a terminal off and on, the system administrator had to send a SIGHUP signal to XDM to instruct it to rescan Xservers.
XDMCP arrived with the introduction of X11R4 (December 1989). With XDMCP, the X server must actively request a display manager connection from the host. An X server using XDMCP therefore no longer requires an entry in Xservers.
Programmers have developed other X display managers, both commercial and free, offering additional functionality over the basic display management:
- Qingy ultralight and very configurable graphical login independent on X Window (uses DirectFB)
- GDM (part of GNOME)
- KDM (part of KDE) allows the user to graphically select a window manager or desktop environment in the login screen
- Simple Desktop Display Manager (SDDM), the successor of the KDE Display Manager, written in QML https://github.com/sddm
- XDM, the default X Window System Display Manager
- XDM-OPTIONS for xdm. Easy full install, Xhost Phonebook, X Login, X Desktop Chooser, menu-reconfig, repair utils.
- LDM, the (remote) Display Manager of the Linux Terminal Server Project
- MDM, a graphical display manager developed for Linux Mint.
- dtlogin (shipped with CDE)
- scologin (provided by SCO Open Desktop) also checks for expired passwords and performs some administrative tasks
- WINGs Display Manager (using the WINGs widget-set used in Window Maker)
- entranced/entrance (employs the architecture used in Enlightenment v.17, on hiatus since 2005)
- LXDM, a lightweight display manager, part of LXDE, cross-desktop, fully themeable
- SLiM, an independent login manager.
- CDM, an ultralight Console Display Manager for Unix
- xlogin, X Window login with separate XDMCP server
- Enter Lightweight graphical login manager
- Orthos, another lightweight solution with very configurable animated themes that use OpenGL only
- nodm, auto-login display manager for systems like kiosks, appliances and mobile phones
- LightDM, a lightweight, modular, cross-desktop, fully themeable desktop display manager by Canonical Ltd.
On some Unix distributions, the default display manager is selected in file $PREFIX/etc/X11/default-display-manager.
- XDMCP specification, from the X.Org release documentation
- XDM manual page (XFree86.org)
- Linda Mui and Eric Pearce, X Window System Volume 8: X Window System Administrator's Guide for X11 Release 4 and Release 5, 3rd edition (O'Reilly and Associates, July 1993; softcover ISBN 0-937175-83-8)
- Linux XDMCP HOWTO
- Taming The X Display Manager
- The X Display Manager, from the FreeBSD Handbook
- Linux login with a Windows box and XDMCP A guide to logging in to linux using windows.