Linux 的 GUI

这篇文章最后更新的时间在六个月之前,文章所叙述的内容可能已经失效,请谨慎参考!

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

一个典型的 Linux 发行版通常包括:

一个 Linux 桌面环境 (DE, Desktop Environment) (DE, Desktop Environment) 通常包含

X Window System

X Window System = X11

X11 是一套在 类Unix 里实现 GUI 的规范,是雅典娜计划的其中一项成果。

X11 采用 C/S 架构, X服务器 和 X客户端 可以运行在不同的主机上。

X.Org 基金会是负责 X11 开发的团体。

X11 通常运行在 runlevel 3 和 runlevel 5

X11 的组成

X服务器

负责输出(输出给显卡,声卡)和接收输入(从键盘/鼠标等设备接收输入)的程序。

X客户端

接收来自 X服务器 的数据,处理完后再发送给 X服务器 。

X Protocol

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 的部分组件

x11-apps 是 Xorg 的应用和工具的其他集合 https://www.x.org/wiki/UserDocumentation/GettingStarted/

X.Org 基金会的文档 https://www.x.org/releases/current/doc/index.html

Wayland

流行的 Linux 桌面环境

其它

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