第24章、 X Window 设定介绍

X Window System 是 Unix Like 操作系统上的图形用户接口,始于 1984 年 MIT 的研发,允许跨网络与跨平台操作。本文介绍了 X Window 的发展史,主要组件包括 X Server、X Client、Window Manager 和 Display Manager,以及它们各自的功能和相互作用。X Server 管理硬件设备,X Client 处理绘图数据,Window Manager 负责窗口管理,Display Manager 提供登录环境。此外,文章还探讨了如何启动 X Window、配置文件解析和显示适配器驱动程序的安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

24.1. 什么是 X Window System
Unix Like 操作系统不是只能进行服务器的架设而已,在美编、排版、制图、多媒体应用上也是有其需要的。 这些需求都需要用到图形接口 (Graphical User Interface, GUI) 的操作的, 所以后来才有所谓的 X Window System 这玩意儿。那么为啥图形窗口接口要称为 X 呢?因为就英文字母来看 X 是在 W(indow) 后面,因此,人们就戏称这一版的窗口接口为 X 啰 (有下一版的新窗口之意) !
事实上, X Window System 是个非常大的架构,他还用到网络功能呢!也就是说,其实 X 窗口系统是能够跨网络与跨操作系统平台的! 而这个基础篇是还没有谈到服务器与网络主从式架构,因此 X 在这里并不容易理解的。不过,没关系! 我们还是谈谈 X 怎么来的,然后再来谈谈这 X 窗口系统的组件有哪些,应该还是能够理解 X 的!

24.1.1. X Window 的发展简史
X Window 系统最早是由 MIT (Massachusetts Institute of Technology, 麻省理工学院) 在 1984 年发展出来的, 当初 X 就是在 Unix 的 System V 这个操作系统版本上面开发出来的。在开发 X 时,开发者就希望这个窗口接口不要与硬件有强烈的相关性,这是因为如果与硬件的相关性高,那就等于是一个操作系统了, 如此一来的应用性会比较局限。因此 X 在当初就是以应用程序的概念来开发的,而非以操作系统来开发。
由于这个 X 希望能够透过网络进行图形接口的存取,因此发展出许多的 X 通讯协议,这些网络架构非常的有趣, 所以吸引了很多厂商加入研发,因此 X 的功能一直持续在加强!一直到 1987 年更改 X 版本到 X11 ,这一版 X 取得了明显的进步, 后来的窗口接口改良都是架构于此一版本,因此后来 X 窗口也被称为 X11 。这个版本持续在进步当中,到了 1994 年发布了新版的 X11R6 ,后来的架构都是沿用此一释出版本,所以后来的版本定义就变成了类似 1995 年的 X11R6.3 之类的样式。 (注1)
1992 年 XFree86 (http://www.xfree86.org/) 计划顺利展开, 该计划持续在维护 X11R6 的功能性,包括对新硬件的支持以及更多新增的功能等等。当初定名为 XFree86 其实是根据『 X + Free software + x86 硬件 』而来的呢。早期 Linux 所使用的 X Window 的主要核心都是由 XFree86 这个计划所提供的,因此,我们常常将 X 系统与 XFree86 挂上等号的说。
不过由于一些授权的问题导致 XFree86 无法继续提供类似 GPL 的自由软件,后来 Xorg 基金会就接手 X11R6 的维护! Xorg (http://www.x.org/) 利用当初 MIT 发布的类似自由软件的授权, 将 X11R6 拿来进行维护,并且在 2004 年发布了 X11R6.8 版本,更在 2005 年后发表了 X11R7.x 版。 现在我们 CentOS 5.x 使用的 X 就是 Xorg 提供的 X11R7 ! 而这个 X11R6/X11R7 的版本是自由软件,因此很多组织都利用这个架构去设计他们的图形接口!包括 Mac OS X v10.3 也曾利用过这个架构来设计他们的窗口!我们的 CentOS 也是利用 Xorg 提供的 X11 !
从上面的说明,我们可以知道的是:

  • 在 Unix Like 上面的图形用户接口 (GUI) 被称为 X 或 X11;
  • X11 是一个『软件』而不是一个操作系统;
  • X11 是利用网络架构来进行图形接口的执行与绘制;
  • 较著名的 X 版本为 X11R6 这一版,目前大部分的 X 都是这一版演化出来的 (包括 X11R7);
  • 现在大部分的 distribution 使用的 X 都是由 Xorg 基金会所提供的 X11 软件;
  • X11 使用的是 MIT 授权,为类似 GPL 的自由软件授权方式。

24.1.2. 主要组件: X Server/X Client/Window Manager/Display Manager
如同前面谈到的,X Window system 是个利用网络架构的图形用户接口软件,那到底这个架构可以分成多少个组件呢? 基本上是分成 X Server 与 X Client 两个组件而已!其中 X Server 在管理硬件,而 X Client 则是应用程序。 在运作上,X Client 应用程序会将所想要呈现的画面告知 X Server ,最终由 X server 来将结果透过他所管理的硬件绘制出来! 整体的架构我们大约可以使用如下的图示来作个介绍:(注2)
这里写图片描述
我们在客户端想要取得来自服务器的图形数据时,我们客户端使用的当然是客户端的硬设备, 所以,X Server 的重点就是在管理客户端的硬件,包括接受键盘/鼠标等设备的输入信息, 并且将图形绘制到屏幕上 (请注意上图的所有组件之间的箭头指示)。但是到底要绘制个啥东西呢? 绘图总是需要一些数据才能绘制吧?此时 X Client (就是 X 应用程序) 就很重要!他主要提供的就是告知 X Server 要绘制啥东西。那照这样的想法来思考,我们是想要取得远程服务器的绘图数据来我们的计算机上面显示嘛! 所以远程服务器提供的是 X client 软件! 底下就让我们来更深入的聊一聊这两个组件吧!

一、X Server:硬件管理、屏幕绘制与提供字型功能:
既然 X Window System 是要显示图形接口,因此理所当然的需要一个组件来管理我主机上面的所有硬设备才行! 这个任务就是 X Server 所负责的。而我们在 X 发展简史当中提到的 XFree86 计划及 Xorg 基金会,主要提供的就是这个 X Server !那么 X Server 管理的设备主要有哪些呢?其实与输入/输出有关!包括键盘、鼠标、手写板、显示器 (monitor) 、屏幕分辨率与颜色深度、显示适配器 (包含驱动程序) 与显示的字型等等,都是 X Server 管理的。
显示适配器、屏幕以及键盘鼠标的设定,不是在开机的时候 Linux 系统以 /etc/sysconfig 目录下的 keyboard/mouse 等配置文件就设好了吗?为何 X Server 还要重新设定啊?这是因为 X Window 在 Linux 里面仅能算是『一套很棒的软件』, 所以 X Window 有自己的配置文件,你必须要针对他的配置文件设定妥当才行。也就是说, Linux 的设定与 X Server 的设定不一定要相同的!因此,你在 Linux 的 run level 3 想要玩图形接口时,就得要加载 X Window 需要的驱动程序才行~总之, X Server 的主要功能就是在管理『主机』上面的显示硬件与驱动程序。
既然 X Window System 是以透过网络取得图形接口的一个架构,那么客户端是如何取得服务器端提供的图形画面呢? 由于服务器与客户端的硬件不可能完全相同,因此我们客户端当然不可能使用到服务器端的硬件显示功能! 举例来说,你的客户端计算机并没有 3D 影像加速功能,那么你的画面可能呈现出服务器端提供的 3D 加速吗? 当然不可能吧!所以X Server 的目的在管理客户端的硬设备!也就是说:『每部客户端主机都需要安装 X Server,而服务器端则是提供 X Client 软件, 以提供客户端绘图所需要的数据』。 X Server / X Client 的互动并非仅有 client –> server,两者其实有互动的!从上图 1.2.1 我们也可以发现, X Server 还有一个重要的工作,那就是将来自输入设备 (如键盘、鼠标等) 的动作告知 X Client, 你晓得, X Server 既然是管理这些周边硬件,所以,周边硬件的动作当然是由 X Server 来管理的, 但是 X Server 本身并不知道接口设备这些动作会造成什么显示上的效果, 因此 X Server 会将接口设备的这些动作行为告知 X Client ,让 X Client 去伤脑筋。

二、X Client:负责 X Server 要求的『事件』之处理:
前面提到的 X Server 主要是管理显示接口与在屏幕上绘图,同时将输入设备的行为告知 X Client, 此时 X Client 就会依据这个输入设备的行为来开始处理,最后 X Client 会得到『 嗯!这个输入设备的行为会产生某个图示』,然后将这个图标的显示数据回传给 X Server , X server 再根据 X Client 传来的绘图资料将他描图在自己的屏幕上,来得到显示的结果。
也就是说, X Client 最重要的工作就是处理来自 X Server 的动作,将该动作处理成为绘图数据, 再将这些绘图数据传回给 X Server !由于 X Client 的目的在产生绘图的数据,因此我们也称呼 X Client 为 X Application (X 应用程序)。而且,每个 X Client 并不知道其他 X Client 的存在, 意思是说,如果有两个以上的 X client 同时存在时,两者并不知道对方到底传了什么数据给 X Server , 因此 X Client 的绘图常常会互相重迭而产生困扰!
举个例子来说,当我们在 X Window 的画面中,将鼠标向右移动,那他是怎么告知 X Server 与 X Client 的呢? 首先, X server 会侦测到鼠标的移动,但是他不知道应该怎么绘图啊!此时,他将鼠标的这个动作告知 X Client, X Client 就会去运算,结果得到,其实要将鼠标指针向右移动几个位素,然后将这个结果告知 X server , 接下来,您就会看到 X Server 将鼠标指针向右移动。
这样做有什么好处啊?最大的好处是, X Client 不需要知道 X Server 的硬件配备与操作系统!因为 X Client 单纯就是在处理绘图的数据而已,本身是不绘图的。所以,在客户端的 X Server 用的是什么硬件?用的是哪套操作系统?服务器端的 X Client 根本不需要知道~相当的先进与优秀~整个运作流程可以参考下图:客户端用的是什么操作系统在 Linux 主机端是不在乎的!
这里写图片描述

三、X Window Manager:特殊的 X Client ,负责管理所有的 X client 软件
刚刚前面提到,X Client 的主要工作是将来自 X Server 的数据处理成为绘图数据,再回传给 X server 而已, 所以 X client 本身是不知道他在 X Server 当中的位置、大小以及其他相关信息的。这也是上面我们谈到的, X client 彼此不知道对方在屏幕的哪个位置啊!为了克服这个问题,因此就有 Window Manager (WM, 窗口管理员) 的产生了。 窗口管理员也是 X client ,只是他主要在负责全部 X client 的控管,还包括提供某些特殊的功能,例如:

  • 提供许多的控制元素,包括任务栏、背景桌面的设定等等;
  • 管理虚拟桌面 (virtual desktop);
  • 提供窗口控制参数,这包括窗口的大小、窗口的重迭显示、窗口的移动、窗口的最小化等等。

我们常常听到的 KDE, GNOME, XFCE 还有阳春到爆的 twm 等等,都是一些窗口管理员的项目计划! 这些项目计划中,每种窗口管理员所用以开发的显示引擎都不太相同,所着重的方向也不一样, 因此我们才会说,在 Linux 底下,每套 Window Manager 都是独特存在的,不是换了桌面与显示效果而已, 而是连显示的引擎都不会一样!底下是这些常见的窗口管理员全名与连结:

  • GNOME (GNU Network Object Model Environment):
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值