这一节主要主流的GUI进行系统进行一个介绍,内容也偏向于科普,大部分内容都摘自网上。
一、Linux GUI介绍
1.1 概念
GUI英文Graphical User Interface,中文图形用户界面。图形用户界面是指采用图形方式显示的计算机操作环境用户接口,与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛应用是当今计算机发展的重大成就之一。
我们知道Unix/Linux刚开始的时候是没有图形界面的,随着时代的发展,排版、制图、多媒体应用越来越普遍了,这些需求都需要用到图形用户界面。为此,MIT在1984年开发出了X Window System,X在字母表中是W(indows)的下一个字母,寓意“下一代GUI”的意思。目前为止,Unix/Linux上几乎所有的发行版都采用X Window System来作为自己的图形界面,它已经成为事实上的Unix/Linux图形界面标准。
1.2 X Window System
X Window System又名X11(现在主要的X Window System大都基于其第11个版本),是一个能够跨网络和操作系统平台的图形界面。开发者在开发X时就希望,这个窗口界面不要与硬件有强烈的相关性,这是因为如果与硬件的相关性高,那就等于开发一个操作系统了,如此一来其应用性就要受到限制。故此,X是一套软件体系,而不是操作系统中的组成部分,就像浏览器不是操作系统的组成部分一样。
X Window System可以分为三部分:X Server、X Client、X Protocol。
X Server:每个需要显示图形界面的主机都要运行一个X Server,它负责主机中各个与图形界面有关硬件设备的管理,如在显示器中显示输出,从鼠标、键盘接受输入等;
X Client:X Client指那些需要图形界面的应用程序,如浏览器、终端、视频播放器等。
比如说你键入一个字母c,X Server得到这个事件后,会将该事件转发给对应的程序处理(应用程序就是client),client接收到事件后,知道要显示一个字母,然后就会发一个请求给X Server,要求在xx,xx地方显示一个大小为xx颜色为xx,字体为xx的字母,X Server收到请求后,就按照要求把字母c画出来了。
X Server和X Client之间所使用的X Protocol通信协议对网络来说是透明的,所以client和server可以运行在相同机器上,也可以运行在不同机器上,甚至机器本身的硬件架构和操作系统也可以不一样(如windows上的xmanager就是一个X Server,它可以远程连接Linux上的主机为Linux上的X Client提供服务)。
由于X Window System效率较低的原因,目前已经逐渐使用Wayland来取代它,关于Wayland可以参考: