1.2.2 图形用户界面概述
图形用户界面概述
Linux发行版通常为用户提供了图形用户界面(Graphical User Interface,GUI)。需要注意的是,Linux操作系统本身并没有GUI。Linux发行版的GUI解决方案通常基于X Window System实现。GUI的引入,拓宽了Linux的应用场景,降低了初学者使用Linux操作系统的难度。而诸如排版、制图、多媒体等典型的桌面应用,更是离不开GUI的支持。
1.X Window System
X Window System由麻省理工学院于1984年提出。它是UNIX及类UNIX系统最流行的窗口系统之一,是一款跨网络与跨操作系统的窗口系统,可用于几乎所有的现代操作系统。需要注意的是,它与微软公司的Windows操作系统是不同的。微软公司的Windows是一种GUI的操作系统,图形环境与内核紧密结合,可直接访问Windows内核。然而,X Window System只是Linux操作系统上的一个可选组件。
X Window System采用“服务器/客户端”架构,能够通过网络进行GUI的存取。X Window System结构如图1-1所示,它由X服务器(X Server)、X客户端(X Client)和通信协议(X Protocol)3个部分组成。X Client和X Server并不一定位于同一台计算机,两者基于X Protocol进行通信。
图1-1 X Window System结构
有一定计算机网络基础的读者,可能会对图1-1中X Server和X Client所处的位置产生疑惑:X Client竟然出现在远程主机中。在读者接触到的大多数C/S架构中,两者的位置应该是反过来的。注意,这里的X Server和X Client是根据图像渲染的职责来区分的。X Server管理本地主机的大部分硬件(例如键盘、鼠标、显示器),接收用户输入并进行最终显示结果的渲染工作。X Server收到用户输入后,将请求数据发送给相应X Client。X Client通过调用具体的应用来处理数据,产生结果后再将结果返回给X Server。X Server维护一个独立的显示控制器。X Server通过响应X Client的请求,在其所管理的显示设备上,完成建立窗口、绘制图形和文字等操作。
X Window System基于X Protocol完成服务器和客户端之间的通信。1987年发布了该协议的第11版。该版协议较为完善,且被广泛应用,因此,后来X Window System也被称为X11。早期Linux所使用的X Window System的核心都是由XFree86计划所提供的,因此许多资料习惯将X Windows System与XFree86两个概念混用。XFree86计划始于1992年,主要维护X11R6,包括对新硬件的支持以及新增功能等。X11R6的维护工作后来由Xorg基金会接手。
2.KDE和GNOME
X Window System提供了一个建立窗口的标准,具体的窗口形式由窗口管理器(Window Manager)决定。窗口管理器是X Window System的组成部分,它用来控制窗口的外观,并提供用户与窗口交互的方法。我们可以将窗口管理器看作一类特殊的X客户端程序,其功能通过向X Server发送命令来实现。
对于具有GUI的操作系统的用户来说,仅有窗口管理器提供的功能是不够的。为此,开发人员在其基础上,增加了各种功能和应用程序(如会话程序、面板、登录管理器、桌面程序等),提供更完善的图形用户环境,也就是桌面环境(Desktop Environment)。
KDE和GNOME是最常见的Linux桌面环境。KDE(K Desktop Environment),即K桌面环境,由一位德国人于1996年10月创建。KDE中使用的Qt链接库早期并未采用开源协议,这样限制了其应用,也推动了GNOME(GNU Network Object Model Environment,GNU网络对象模型环境)的诞生。需要说明的是,目前KDE已经支持GNU GPL、GNU LGPL和Commercial等不同类型的授权协议。
GNOME是GNU计划的正式桌面环境,也是开放源码运动的一个重要组成部分。GNOME计划于1997年8月由米格尔·德·伊卡萨(Miguel de Icaza)和费德里科·梅纳(Federico Mena)发起,目的是取代KDE。GNOME、KDE都有自己的窗口管理器,GNOME曾经使用Metacity作为其窗口管理器,2011年,GNOME 3发表后,默认的窗口管理器被替换成Mutter。KDE使用的是KWin,也有一些单独的窗口管理器,如FVWM、IceWM等。CentOS默认提供GNOME与KDE。Red Hat默认采用GNOME。用户可以根据自己的喜好安装并配置不同类型的桌面环境。