Linux 的 GUI
这篇文章最后更新的时间在六个月之前,文章所叙述的内容可能已经失效,请谨慎参考!
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
一个典型的 Linux 发行版通常包括:
- Linux 内核
- 一些 GNU 程序库和工具
- 桌面环境
一个 Linux 桌面环境 (DE, Desktop Environment) (DE, Desktop Environment) 通常包含
- 窗口管理器 (WM, Window Manager) (WM, Window Manager)
- 显示管理器 (DM, Display Manager) (DM, Display Manager)
- 会话管理器 (Session Manager) (Session Manager)
- 一系列配套软件
- 文件管理器
- 终端模拟器
- ......
X Window System
X Window System = X11
X11 是一套在 类Unix 里实现 GUI 的规范,是雅典娜计划的其中一项成果。
X11 采用 C/S 架构, X服务器 和 X客户端 可以运行在不同的主机上。
X.Org 基金会是负责 X11 开发的团体。
X11 通常运行在 runlevel 3 和 runlevel 5
- runlevel 3 ,登录后进入命令行界面(就是一般的登录),可以在命令行界面里启动 X11
- runlevel 5 ,登录后进入图形界面
X11 的组成
- X服务器 (X Server)
- X客户端 (X Client)
- X窗口管理器 (X Window Manager)
- X显示管理器 (X Display Manager)
- X会话管理器 (X Session Manager)
X服务器
负责输出(输出给显卡,声卡)和接收输入(从键盘/鼠标等设备接收输入)的程序。
X客户端
接收来自 X服务器 的数据,处理完后再发送给 X服务器 。
X Protocol
X服务器 和 X客户端 进行通讯的协议。
X窗口管理器
- 负责管理与定位窗口的移动、最大化、最小化、改变大小以及关闭等工作的程序。
- 理论上 X客户端 可以单独运行,但大多数情况下会先运行 X窗口管理器 再运行其它 X客户端 。
- X窗口管理器 是一个 特殊的 X客户端 。
- 通常情况下 X窗口管理器 是第一个连接 X服务器 的 X客户端 。
- 当视窗管理器开始运作时,X服务器和客户端之间的交互,会重定向到视窗管理器。
- 每当要显示一个新视窗时,这个请求便会被重定向到视窗管理器,它会决定视窗的初始位置。
- 此外,大部分较新的视窗管理器会改变视窗的亲属关系,通常会在视窗顶部加上标题栏,并在视窗周围加上装饰性的框架。
ICCCM 客户间通信协定手册(Inter-Client Communication Conventions Manual:缩写为 ICCCM 或 I39L)是X窗口系统的标准协议。 它规定有一个共同的X服务器的客户间的通信。它主要用于在窗口管理器和X服务器的其他客户之间的通信。
EWMH 扩展窗口管理器提示(Extended Window Manager Hints:缩写为NetWM或Net WM)是针对窗口管理器的X窗口系统标准。 它定义在窗口管理器、实用工具和应用等完整桌面环境的所有部分之间的各种交互。它建造在客户间通信协定手册(ICCCM)的功能之上。
X显示管理器
Xdm 是 X Display Manager的缩写,由它来启动 X Window 服务器,并管理图形客户端程序的登录、会话(登录成功后开启新的session)、启动窗口管理器等。 简单但又不够严谨地理解为类似于 Windows 的登录界面。 X显示管理器 和 X服务器 之间使用 X显示管理器控制协议(XDMCP , X Display Manager Control Protocol) 通讯。
X会话管理器
一个会话是指给定时间的桌面状态:一组窗口以及它当前的内容。更精确的说,一个会话是一组管理窗口或与窗口有关的客户端以及允许这些程序恢复所需窗口的相关信息。 通常,会话能在任意时刻保存或装载,即使用户没有登录或退出。保存一系列不同的会话并按用户的选择装载其中一个,这是可能的。也可以将一系列程序组合成一个会话。结果是,用户能够保存一些不同的会话,也能存储当前运行程序的状态或明确的将一些程序组合为一个会话。这样,用户可稍后决定装载某个会话。 为了能让会话包括程序的状态,程序必须能在适当的时候保存和装载它当前的状态。
客户端 和 会话管理器 之间使用 X会话管理协议 (XSMP , X Session Manager Protocol) 通讯。
依照XSMP协议,只要能够运行和控制其他程序状态的程序都可以是会话管理器。所以,一个客户端本身可以成为其他客户端的会话管理器。
Xorg
Xorg 是 X.Org 基金会的 X11 开源实现,是 X11 的官方参考实现。
Xorg 的部分组件
- X.Org Server X服务器
- twm (Tab Window Manager) X窗口管理器
- xdm (X Display Manager) X显示管理器
- xsm (X Session Manager) X会话管理器
- Xlib X.Org 的 X客户端库
- Xt (X Toolkit) 在 Xlib 基础上封装的 X客户端库
- Xaw (X Athena Widgets) 在 Xt 基础上封装的 X客户端库
x11-apps 是 Xorg 的应用和工具的其他集合 https://www.x.org/wiki/UserDocumentation/GettingStarted/
X.Org 基金会的文档 https://www.x.org/releases/current/doc/index.html
Wayland
流行的 Linux 桌面环境
- GNOME (GNU Network Object Model Environment)
- KDE (K Desktop Environment)
- XFce
- CDE (Common Desktop Environment)
其它
GNOME 和 XFce 是基于 GTK 的。 KDE 是基于 Qt 的。 CDE 是基于 Motif 的。
Qt GTK Tk 和 SDL 都是 直接调用 Xlib 的。 Xaw 和 Motif 是基于 Xt 的。
大多数 Unix 工作站会采用 CDE 作为桌面环境, 2012 年后 CDE 以 GPL 开源,此后 CDE 移植到其它 Linux 系统上。
Xaw 也是雅典娜计划的其中一项成果。
参考
https://en.wikipedia.org/wiki/Comparison_of_X_Window_System_desktop_environments