X窗口系统(X Window System)是Linux图形用户环境的基础,基于一种够独特的服务器/客户机架构。
X窗口系统的基本组成
X服务器
X服务器用于实际控制输入设备(如键盘、鼠标等)和位图式输出设备((如显示器)。准确地说,X服务器定义了给X客户机使用这些设备的抽象接口,但没有定义高级实体的编程接口,这意味着它不能理解“画一个按钮”这类语句。而必须告诉它:“画一个方块,周围有阴影,用户点鼠标左键的时候阴影要消失、、、方块上还要有字、、”。
这种设计的意义在于,X服务器能够最大程度上的与平台无关。用户可以自由选择窗口管理器和widget库来定制自己的桌面,而不需要改变窗口系统的底层配置。
X客户端程序
需要向X服务器请求服务的程序就是X客户端程序。
窗口管理器
窗口管理器负责控制应用程序窗口的各种行为,如移动、缩放、最大化和最小化窗口,在多个窗口间切换等。从本质上来说,窗口管理器是一种特殊的X客户端程序,因为这些功能也是需要向X服务器发送指令实现的。
显示管理器
显示管理器提供了一个登录界面,它的任务就是验证用户的身份,让用户登录到系统。可以说,图形界面的一切(除了它自己)都是由显示管理器启动,包括X服务器。用户可以选择关闭显示管理器,这样就必须通过命令运行startx命令(或使用.login脚本)来启动X服务器。
widget库
widget库定义了一套图形用户界面的编程接口。应用程序的开发人员调用widget库来实现具体的用户界面,如按钮、菜单、滚动条、文本框等。
桌面环境
桌面环境是把各种X有关的东西(除了X服务器)整合在一起的“大杂烩”。这些程序包括像gedit这样的普通应用软件、窗口管理器、显示管理器和widget库。无论桌面环境如何复杂,最后处理图形输出的仍然是X服务器。