由KDM（KDE显示管理器）显示的登录界面
显示管理器（display manager）建基於X Window系统，調用X Window系统用作以GUI登入以及登入後顯示GUI畫面，以及以GUI切換使用者。GNU/Linux下的tty7預設開啟显示管理器，tty1～6則為文字列介面

在X Window系统中，作为程序运行的**X显示管理器**允许你在本地**X服务器**或远程**X服务器**上开始一个会话。

显示管理器呈现给用户一个登录界面并提示输入用户和密码。当用户成功输入正确的用户和密码，显示管理器会开始一个会话。

当显示管理器在用户电脑上运行时，它会在显示登录界面前开启**X服务器**，并能在用户登出后任意的重复运行。在这种情况下，显示管理器在X Window系统中实现init，getty和在字符类型终端下登录的功能。当显示管理器运行在远程计算机时，它扮演类似telnet服务器的角色，需要用户名和密码才开始一个远程会话。

1988年10月X11 Release 3引入了显示管理器，它的目标是在市场上支持独立的**X终端机**。多种显示管理器继续一成不变的在运行X系统的独立的工作站上提供图形化登录提示。1989年12月X11R4引入**X显示管理器控制协议**（**XDMCP**）来修复由X11R3带来的问题。

本地和远程显示管理
---------

显示管理器可以运行在用户面前的计算机上也可以运行在远程计算机上。第一种情况，显示管理器会自动开始一个或多个X服务器，并显示登录界面。第二种情况，显示管理器要通过**XDMCP**协议工作。

在X Window系统中，X服务器运行在用户面前的计算机上。X服务器可以连接到另一台计算机上运行的显示管理器，开始一个会话并运行存在于另一台计算机中的程序。
XDMCP协议要求X服务器能自发的启动并连接到显示管理器。在X Window系统范例中，X服务器运行的那台计算机提供显示和输入设备。X服务器能够连接（使用XDMCP协议）到另一台运行显示管理器的计算机，并请求开始会话。在这种情况下，X服务器扮演类似图形化telnet客户端的角色，而显示管理器类似telnet服务器：用户启动的程序是运行在显示管理器那台计算机，而它们的输入和输出是工作在X服务器（用户面前）那台计算机上。

管理员可以配置X服务器连接到某个指定的显示管理器，或显示运行**X显示管理器**的主机列表。**XDMCP选择器**程序允许用户选择下面其中一个能连接到的主机：

1. 一个预先定义好的主机列表，它们有各自的网络地址；
2. 一个主机列表（工作于本地IP网段），它们的XDMCP服务器可以通过广播地址找到。

XDMCP服务器经常出现在这个列表中。当用户从列表中选中一个主机，工作于本地计算机的X服务器会连接选中的远程计算机的**X显示管理器**。

X显示管理器控制协议（XDMCP）
-----------------

X显示管理器控制协议使用UDP 177 端口。需要显示管理器开始一个会话时，X服务器需要向其发送`Query`包。如果显示管理器允许X服务器的访问，它会向X服务器返回`Willing`包作为回应。（X服务器也可以发送`BroadcastQuery`或`IndirectQuery`包来开始一个会话，这种机制类似于使用DHCP来获得IP地址。）

显示管理器必须向X服务器进行认证。为做到这一点，X服务器发送`Request`包给显示管理器，显示管理器返回一个`Accept`包。如果`Accept`包包含了X服务器期望的响应，则显示管理器通过认证。举例来说，为生成正确的响应可能需要显示管理器访问一个密钥。如果认证成功，X服务器会发送`Manage`包来告诉显示管理器。然后，显示管理器会作为一个常规的X客户端向连接的X服务器显示登录界面。

在会话期间，X服务器会间隔的向显示管理器发送`KeepAlive`包。如果显示管理器在一段时间内没有回应`Alive`包，X服务器会假定显示管理器停止运行，并终止该连接。

XDMCP有一个问题，类似telnet，认证时是不加密的并且如果能够嗅探，这会让系统易受到攻击。比较安全的方法是对X通信使用ssh通道。 （页面存档备份，存于）

历史
--

XDM是在X11R3中引入的。这个版本出现了几个问题，最显著的一个是当用户打开X终端电源时。在X11R3中，XDM只能通过Xservers文件得知一个X终端，但是只有在启动时XDM才会读取这个文件。因此，每次用户打开X终端电源时，系统管理员不得不发送SIGHUP信号给XDM指示它重新读取Xservers文件。

X11R4（1989年10月）引入了XDMCP。使用XDMCP时，X服务器必须主动请求一个显示管理器连接。当X服务器使用XDMCP时就不再需要Xservers文件。

一些实例
----

X Window系统使用XDM做为它标准的显示管理器。 

也有其他X显示管理器被开发出来，有商业有开源，在基本的显示管理上提供了附加的功能。

* Qingy （页面存档备份，存于）在X Window中超轻型和可配置的图形化登录管事器（使用DirectFB）
* scologin（由SCO Open Desktop提供）能检查过期密码和执行一些管理任务
* GDM（由GNOME提供）
* KDM（由KDE提供）允许用户在登录界面图形化的选择某个窗口管理器或桌面环境
* XDM是X Window系统的默认显示管理器
* LDM，Linux Terminal Server Project的（远程）显示管理器
* dtlogin（工作于CDE）
* WINGs Display Manager（使用WINGs widget-set，用于Window Maker）
* entranced/entrance (employs the architecture used in Enlightenment v.17, on hiatus since 2005)
* LXDM，一个轻量级的显示管理器http://wiki.lxde.org/en/LXDM （页面存档备份，存于）
* SLiM，一个独立的登录管理器
* CDM，一个Linux下的超轻量级控制台显示管理器
* xlogin，X Window登录和独立的XDMCP服务器
* Enter，轻量级的图形登录管理器
* Orthos，另一个轻量级的解决方案附带真正的结构化主题
* nodm，针对收款机、电器和移动电话的自动登录的显示管理器（已停止开发）
* LightDM，Canonical公司开发的轻量级、模块化、跨桌面，完全更换主题的桌面管理器

在大多数Linux发行版中，系统默认的显示管理器由/etc/X11/default-display-manager文件选择（注：本条已不适用使用Gnome或KDE的现代Linux发行版）

参见
--

* X Window系统的协议和架构

参考文献
----

1. ↑ . GitHub.  [2020-10-31] （英语）.

外部链接
----

* Linux XDMCP HOWTO （页面存档备份，存于）
* 驯服X显示管理器 （页面存档备份，存于）
* X Display Manager （页面存档备份，存于），来自\*FreeBSD手册 （页面存档备份，存于）
* 从Windows中使用XDMCP登录Linux使用Windows登录Linux。

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
X視窗系統 |
| --- |
|  |
| 架构 | 
* **核心協定**
* X Window选择（英语：）
* X Toolkit Intrinsics
* X窗口授权（英语：）
* X11颜色名称（英语：）
* X输入法
* Wayland

 |  |
|  |
| 扩展 | 
* X图像扩展（英语：）
* X键盘扩展（英语：）
* RandR
* X渲染扩展（英语：）
* 形状扩展（英语：）
* 共享内存扩展（英语：）
* X显示管理器控制协议（英语：）
* X视频扩展（英语：）
* X视频运动补偿（英语：）
* AIGLX（英语：）
* GLX（英语：）
* 多指针X（英语：）
* Display PostScript
* 合成（英语：）
* Xinerama（英语：）

 |
|  |
| 组件和值得注意的实现 | 

|  |  |
| --- | --- |
| 显示服务器（英语：） | 
* **X.Org Server**
* Cygwin/X
* X-Win32（英语：）
* X386（英语：）
* XFree86
* XGGI（英语：）
* XDarwin（英语：）
* Xming
* Xsgi（英语：）
* Xsun（英语：）
* Xgl
* Xnest（英语：）
* Xephyr（英语：）
* XQuartz
* XWayland

 |
|  |
| 客户端库 | 
* Xlib
* XCB

 |
|  |
| 显示管理器会话管理器 | 
* GNOME显示管理器
* KDM
* SDDM（英语：）
* XDM（英语：）
* LightDM
* LXDM
* SLiM（英语：）
* Entrance（英语：）
* WDM

 |
|  |
| X視窗管理器 | 

|  |  |
| --- | --- |
| 合成（英语：） | 
* Compiz
* KWin
* Metacity
* Mutter
* Xfwm

 |
|  |
| 平铺（英语：） | 
* awesome
* dwm
* i3
* Ion（英语：）
* PWM（英语：）
* ratpoison
* wmii（英语：）
* xmonad

 |
|  |
| 堆叠（英语：） | 
* AfterStep（英语：）
* amiwm（英语：）
* Blackbox
* cwm（英语：）
* Enlightenment
* Fluxbox
* FVWM
* IceWM
* JWM
* Matchbox（英语：）
* MWM
* Openbox
* Sawfish
* twm
* Window Maker

 |

 |

 |
|  |
| 标准 | 
* ICCCM
* EWMH
* XDS
* freedesktop.org

 |
|  |
| 应用程序 | 
* xcalc
* xclock
* xedit
* xload
* xterm
* xeyes
* 桌面环境（英语：）

 |

 |