X窗口系统
2023-01-03 11:27:57 阿炯

X窗口系统(X Window System,也常称为X11或X,天窗口系统)是一种以位图方式显示的软件窗口系统。最初是1984年麻省理工学院的研究,之后变成UNIX、类UNIX、以及OpenVMS等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。X窗口系统通过软件工具及架构协议来创建操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用X。更重要的是知名的桌面环境——GNOMEKDE也都是以X窗口系统为基础建构成的。


The X Window SystemTM provides the base technology for developing graphical user interfaces. At a very basic level, X draws the elements of the GUI on the user's screen and builds in methods for sending user interactions back to the application. Using application GUI development toolkits, such as Motif, an application developer can quickly create an application interface to the end user.

由于X只是工具包及架构规范,本身并无实际参与运作的实体,所以必须有人依据此标准进行开发撰写。如此才有真正可用、可执行的实体,始可称为实现体。目前依据X的规范架构所开发撰写成的实现体中,以X.Org最为普遍且最受欢迎。X.Org所用的协议版本,X11,是在1987年9月所发布。而今最新的参考实现(参考性、示范性的实现体)版本则是X11 Release 7.7(简称:X11R7.7),而此项目由X.Org基金会所领导,且是以MIT授权和相似的授权许可的自由软件。

X的C/S模式和网络透明性

X能为GUI环境提供基本的框架:在屏幕上描绘、呈现图像与移动程序窗口,同时也受理、执行、及管理电脑与鼠标、键盘的交互程序。不过,X并没有管辖到用户界面的部分,而是由其他以X为基础的实现体来负责,也因为如此,以X为基础环境所开发成的视觉样式非常地多;不同的程序可能有截然不同的接口呈现。



在图例中,X服务器从键盘、鼠标端获取输入信息,之后将输入反馈显示于银幕,而网页浏览器及终端模拟器则在客户端的本机系统上执行。此外客户端也通过网络与远程的机器、服务器保持联系,以保消息状态的更新。如此的机制及架构能使远程执行的软件如同在本机端执行一样。服务器和客户端之间的通信协议的运作对计算机网络是透明的:客户端和服务器可以在同一台计算机上,也可以不是,或许其架构和操作系统也不同,但都能运行。客户机和服务器还能够使用安全连接在互联网上安全地通讯。


X采用C/S的架构模型,由一个X服务器与多个X客户端程序进行通讯,服务器接受对于图形输出(窗口)的请求并反馈用户输入(键盘、鼠标、触摸屏),服务器可能是一个能显示到其他显示系统的应用程序,也可能是控制某个PC的视频输出的系统程序,也可能是个特殊硬件。X的一大特点在于“网络透明性”:应用程序(“客户端”应用程序)所执行的机器,不一定是用户本地的机器(显示的“服务器”)。X中所提及的“客户端”和“服务器”等字眼用词也经常与人们一般想定的相反,“服务器”反而是在用户本地端的自有机器上执行,而非是在远程的另一部机器上执行。

X刻意不去规范应用程序在用户界面上的具体细节设计,这些包括按钮、菜单和窗口的标题栏等等,这些都由窗口管理器(window manager)、GUI构件工具包、桌面环境(desktop environment)或者应用程序指定的GUI(如POS)等等的用户软件来提供,然而因为架构设计上保留了高度的弹性发挥空间,致使多年来X在“基础、典型、一般性”的用户界面上,也都有数目惊人的多样性选择。

在X的系统架构中,窗口管理器用于控制窗口程序的位置和外观,其界面类似Microsoft的Windows或者Macintosh(例如:KDE的KWin或者GNOME的Metacity),不过在控制机制上却截然不同(例如:X提供的基本窗口管理器twm)。窗口管理器可能只是个框架(例如:twm),但也可能提供了全套的桌面环境功能(例如:Enlightenment)。

虽然不同的X用户界面可以有很大的差距、差异,然而绝大多数的用户在使用X时,多是用已经高度全套化的桌面环境,桌面环境不仅有窗口管理器,还具备各种应用程序以及协调一致的界面,目前最流行的桌面环境是GNOME和KDE,此两者已普遍使用于Linux操作系统上,而UNIX所用的标准桌面环境多是通用桌面环境CDE,然而也有些UNIX也开始采行GNOME。此外,X桌面环境及组件虽然极其多样,但同时也需要保持兼容性与互通性,关于此则有freedesktop.org积极与努力地维持各种不同X桌面环境的兼容性,使相竞态势下仍不失X的兼容本色。

freedesktop.org所主持的Wayland显示服务器同时运用了前述两种方法处理X的缺点,它完全替换了X的架构而且运用DRI来直接操作硬件。Canonical公司替他旗下的Ubuntu Linux操作系统开发中的Mir是一个类似的计划。预计支持ARM芯片组和x86架构的电脑。Mir通过Xmir向后兼容使用X Window的程序。


X.Org基金会

1999年5月开放团体组建了X.Org。X.Org指导了X11R6.5.1之前的版本发布,在此期间X的开发死气沉沉。2003年,随着Linux的流行X被大量安装,但是X.Org几乎无声无息,活跃的开发由XFree86承担。2004年年初X.Org基金会成立,这意味着X在管理上的根本转变。1988年以来X的管理者(包括过去的X.Org)都是厂商组织,而基金会由软件开发者领导,采用依靠外部参与的集市模式的社区开发。其成员身份对个人开放,法人成员则成为赞助者。X.Org还开始同freedesktop.org密切合作。

在XFree86 4.4RC2基础上合并了X11R6.6的修改,基金会在2004年4月发布了X11R6.7。Gettys和Packard使用了在旧许可证下发布的XFree86的最后的版本,但是强调了开放的开发模式并保持了与GPL的兼容性,从而带来了很多过去XFree86的开发者。2004年9月X11R6.8发布。它加入重要的新特性,包括对半透明窗口的初步支持、很多复杂的视觉效果、屏幕放大和简图,以及与3D沉浸式显示系统(例如Sun的Project Looking Glass和Croquet project)集成的设施。而外观策略由称为合成管理器(compositing managers)的外部应用程序提供。

随着硬件操作被移入内核,几乎对视频硬件的访问将通过OpenGL(没有硬件OpenGL的系统使用Mesa 3D)和基层直接渲染模块进行。这由XFree86 version 4引入并出现在X11R6.7及其后续版本。参考实现的架构被模块化,每个独立模块做为分离的项目维护。X11R6.9将是单体源代码而X11R7.0将有具备相同特征集的模块化源代码。


2012年6月发布的X11R7.7,Xorg server 1.12改变; Sync扩展3.1:增加Fence object支持; Xi 2.2多点触控支持; XFixes 5.0: Pointer Barriers。

X11 开发速度在2023年降至近二十年来最低水平

X11 已经是一个有点 “老龄化” 的技术了,由于历史遗留的问题以及系统臃肿,它的发展已经受到了严重影响,目前大多数的开发者都转向了 Wayland。简单地说,Wayland 也是一个显示服务器协议,旨在取代 X11。它被设计成比 X11 更容易使用,还旨在通过更直接的代码,让开发者更容易将其集成到 Linux 系统中。

X.Org Server 是由 X.Org 基金会管理的 X Window System 显示服务器的自由和开源实现。在 Wayland 高速发展的对比之下,大致也能够猜测出过去一年开发者在这方面的投入应该不大。不过在查看 2022 年 X.Org Server 的 Git 统计数据时,开发者实际对该项目对投入还是令人十分意外,因为 2022 年的的提交量和代码修改量创下了 20 年来的最低水平。


从上图能看出在 2008 年以前,X.Org Server 经历了一段时间的高速发展,提交数量每年都在增加,并在 2008 年达到最高点,创造了最高提交数量的历史记录。此后 X.Org Server 的开发速度连年下滑,2022 年的提交数量甚至跟 20 年前,也就是 2003 年差不多。

2022 年,该项目的 Git 主分支只有 156 次提交,相比之下 2021 年还有 331 次提交,而 2008 年的最高点则是有 2114 次提交。开发者不光是在提交次数上出现了下滑,整体的代码量也在呈现下降趋势。2022 年 X.Org Server 的另一个低点是在 2022 年的 156 次提交中,只增加了 3618 行新代码,删除了 888 行,而 2021 年的 331 次提交则是新增了 3.14 万行代码。

从总代码行数来看,过去这些年 X.org Server 的代码维持在一个相对 “稳定” 的状态,基本上就是一条直线,近两年甚至还有下降的趋势。即便是提交数量差不多的 2003 年,X.Org Server 的代码变化量也没有如今这么少。虽然当时在他们的旧开发模式下只有 125 次提交,即便如此他们仍然有 86.5 万行代码增加和 68 万行代码被删除。自 2002 年以来,X.Org Server 的代码更新就没有这么少过。

2022 年只有 32 位开发者为 X.Org Server 做出了代码贡献,比前几年的 48 位开发者进一步有所降低,这也是近 20 年来的新低,作为对比在 2003 年,当时只有 10 位开发者有提交记录。红帽的 Olivier Fourdan 是 2022 年在 X.Org Server 上最高产的提交者,他的提交量占了近四分之一(23.08%)。在 Olivier 之后则分别是 Jeremy Huddleston Sequoia、Peter Hutterer、Michel Dänzer、Alan Coopersmith 和 Sultan Alsawaf。