X窗口系统(X Window System)是Linux图形用户环境的基础。这个系统最初诞生于MIT(麻省理工大学)的Athena项目,时间是20世纪80年代。X的发展经历了一段复杂曲折的过程,如今绝大多数Linux使用的是由X.org基金会维护的X.Org(曾经被广泛使用的XFree86因为许可证的转变正逐渐退出Linux市场)。

X系统基于一种独特的服务器/客户机架构。作为起步,本节首先解释几个基本概念。这些概念现在看起来可能有点抽象,这样安排的用意是,如果读者被后面的内容弄糊涂了,那么还可以回到这里寻求帮助。

1.X服务器

X服务器用于实际控制输入设备(例如鼠标和键盘)和位图式输出设备(例如显示器)。准确地说,X服务器定义了给X客户机使用这些设备的抽象接口。和大部分人的想法不同,X服务器没有定义高级实体的编程接口,这意味着它不能理解"画一个按钮"这样的语句,而必须告诉它:"嗯……画一个方块,这个方块周围要有阴影,当用户按下鼠标左键的时候,这些阴影应该消失……对了,这个方块上还应该写一些字……"

这种设计的意义在于,X服务器能够做到最大程度上的与平台无关。用户可以自由选择窗口管理器和widget库来定制自己的桌面,而不需要改变窗口系统的底层配置。

2.X客户端程序

需要向X服务器请求服务的程序就是X客户端程序。具体来说,OpenOffice、gedit这些应用程序都是X客户端程序,它们运行时需要把自己的"长相"描述给X服务器,然后由X服务器负责在显示器上绘制这些应用程序的界面。

3.窗口管理器(Window Manager)

窗口管理器负责控制应用程序窗口的各种行为,例如移动、缩放、最大化和最小化窗口,在多个窗口间切换等。从本质上来说,窗口管理器是一种特殊的X客户端程序,因为这些功能也都是通过向X服务器发送指令实现的。Window Maker、FVWM、IceWM、Sawfish等是目前比较常见的窗口管理器。

4.显示管理器(Display Manager)

显示管理器提供了一个登录界面,其任务就是验证用户的身份,让用户登录到系统。可以说,图形界面的一切(除了它自己)都是由这个显示管理器启动的,包括X服务器。用户也可以选择关闭显示管理器,这样就必须通过命令行运行startx命令(或者使用.login脚本)来启动X服务器。

提示:这里所说的"脚本"是指Shell脚本,它是一段能够被Linux理解的程序。这部分内容将在第21章详细讨论。

5.widget库

widget库定义了一套图形用户界面的编程接口。应用程序开发人员通过调用widget库来实现具体的用户界面,如按钮、菜单、滚动条、文本框等。程序员不需要理解X服务器的语言,widget库会把"画一个按钮"这句话翻译成X服务器能够理解的表述方式。

6.桌面环境

现在终于到了问题的关键,究竟什么是桌面环境?以KDE和Gnome为代表的Linux桌面环境是把各种与X有关的东西(除了X服务器)整合在一起的大杂烩,这些程序包括像gedit这样的普通应用软件、窗口管理器、显示管理器和widget库。但无论桌面环境如何复杂,最后处理图形输出的仍然是X服务器。这一点在后面的讨论中还会用到,千万不要搞反了。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐