1.2 不一样的图形操作

几乎所有Linux的新用户都会认为Linux的图形界面是相当的绚丽又多彩。因为这毕竟是一种全新的体验,那种超脱Windows俗套的快感就会油然而生。对于刚刚翻开这本书的人来说,如果对Linux是抱有这样认识的,那就太棒了,因为咱们又多了一个洗脑的对象了:P。此时此刻,真正的亲密接触就要开始啦……

1.2.1 没有图形的图形

虽然Linux的图形界面美轮美奂,但是有一个秘密却不得不告诉你:Linux本身是没有图形界面的。不管你信还是不信,事实就是这个样子。这么说的原因并不是因为Linux只是一个内核,其实所有类UNIX操作系统本身都没有图形用户界面。

那为什么我们能通过图形用户界面来使用Linux或者其它类UNIX操作系统呢?原因是有一个软件提供了这样的功能。是不是觉得很怪异?如果你有使用DOSWindows3.2的经验,就一点都不奇怪了。因为那个时候Windows 3.2实际上就是一个DOS上的软件。而且我们所熟知的图形化操作系统Windows,直到Windows95开始才能算得上是真正意义的操作系统。Linux上提供这个功能的软件以前是XFree86,现在是xorg。虽然这两个软件名字上差别有些大,但实际上是一个软件的不同分支。1992~2004年间就只有XFree86,且跟Linux内核一样,以GPL许可证发行。但是2004年就发生了变化,XFree86的开发商XFree86Project公司改变了许可证。这引起了GNU社区的极大不满,于是从XFree86 4.4 RC2衍生出了xorg。目前几乎所有开源的类Unix操作系统使用的都是X.Org,让XFree86Project抱着它的XFree86自己慢慢过吧:)

可能有些人会觉得奇怪。因为只听过有人在争论到底是KDE好还是GNOME好,并没有听说有xorg这东西,而且还有人说Unix的窗口系统是X提供的。那么Xxorg是什么关系呢?KDEGNOME跟它们又是什么关系呢?恩,这些的确是很好的问题,接下来就解答一下。

首先,X不是什么具体的软件,它是一种协议,跟我们平常所耳熟能详的那些什么HTTP协议、SOAP协议等是一样的。而xorg则是实现X协议的服务器软件,这跟实现HTTP协议的Apache是相同的概念。大家都知道Apache是可以通过HTTP协议来提供Web服务的,那么xorg通过X协议来提供什么服务呢?答案是图形用户界面服务。Apache的客户端请求Apache得到的结果是HTML内容,而xorg的客户端请求xorg的结果则是向屏幕上画图。它们之间还有一个很大的不同就是Apache只能被动的接受客户端请求,而xorg还需要主动将当前键盘按键和鼠标位置等信息通知给客户端。所以,Linux上的那些拥有图形用户界面的软件实际上都是xorg的客户端,它们利用X协议让xorg在屏幕上画出窗口或通过xorg获得键盘和鼠标事件。当然,为了运行这些软件也就需要一个前提,xorg这个服务,也就是通常所说的X服务器,必须是启动的。现代大多数Linux发行版的默认安装都是自动支持图形用户界面的,也就是说它们会在系统启动之后自动执行xorg

可能有些人会意识到,如果系统中只有xorg是不可能有任何图形界面供大家使用的,至少还需要有个X客户端程序。而且这个X客户端程序还有一个专有名称——窗口管理器,英文叫做WindowManager,简称WMWM也不是一个具体的软件,而是一类软件。诸如KDEGNOME这些就是包括各自的窗口管理器,也有一些单独的窗口管理器,如FVWMOpenboxIceWM等。它们控制窗口外观、位置和提供用户去操作这些窗口程序的方法。所以不同的窗口管理器会有不同的使用习惯。如果你当前使用的Linux系统没有配置成默认使用图形用户界面的话,可以使用命令:

$ startx

来启动xorg和默认的WM。对于Cent OS 6.3来说,默认的WM应该是GNOMEMetacity窗口管理器(KDE的是KWin),而默认情况下是使用图形用户界面的。

对于那些默认使用图形用户界面的Linux系统,还有一个十分重要的X客户端需要启动,就是显示管理器,英文叫做DisplayManager,简称DM。这个是做什么的呢?专门负责图形界面的用户登陆问题的。也就是说,系统启动之后第一个要启动的X客户端程序就应该是DM,而且没有人能关闭掉它(你能猜到为什么要这样吗?)。DM也是一类软件,具体的应该是XDMKDMGDM等。

好了,有关Linux图形用户界面的介绍到这里就差不多了,更深入的内容我们留在后面吧。现在我们要谈论另外一个话题,就是Linux怎么会吧它的图形界面设计得这么乱!

1.2.2 架构设计

其实Linux系统的图形界面设计还是非常清晰的。让大家觉得乱的原因可能是有两个:一是我的写作水平有点问题,二是涉及的新鲜事儿太多。我总认为第一点是主要因素,所以干脆不写了,画个图给大家看看。下图展示了Linux界面的基本结构,同时提供了Windows图形界面基本结构进行对比。自我感觉画的比说的要好。

111357947.jpg

1.16

当结构清晰的时候,问题随之就会来,不知道你发现问题了没有?最大的问题就是从结构上看Linux的图形界面效率肯定比Windows的要差。因为Linux需要很多层的软件互相协作才能实现图形界面,而Windows则相当直接,不拖泥带水的就搞定了图形界面。在计算机科学领域很少有实践结果与理论预期出现相反结论的情况,但是,可是,可但是,但可是……,小概率事件还是会发生的,偏偏这个就是典型的一例。众所周知的Mac OS X的图形效果是目前任何操作系统都无法比拟的,自然也包括Windows的任何版本。而Mac OS X是一种类Unix操作系统,采用的恰恰就是这种架构。只是MacOS X的“X协议”与Linux所采用的X协议有很大不同,前者是二进制的,后者使用的是纯文本。从纯粹学术理论上来讲,纯文本虽然在效率上会有些损失,但在其它方面会更具优势。这个问题在本书的第七章将会继续探讨,这里就先说这么多。

正因为Linux的图形界面得益于这种优良的架构设计,虽然在效率上不及Mac OSX那样优秀,但是图像效果和功能的丰富程度绝对不会比Windows差,至少它拥有很多种桌面环境可以选择,可以说每一种都会让你有完全不一样的体验。看惯了Windows的“老气横秋”不妨去感受一下Linux的小清新吧!

1.3 主流桌面环境

Linux强大的适应性、创新性以及开发性在它的桌面环境方面得到了十分充盈的展现。目前比较流行的就有GNOMEKDEXFCELXDE,它们并称为Linux图形界面四杰,个个美轮美奂,风格迥异。它们并不是单纯的单一软件,而是一套软件集合,比如WMDM、应用框架库等。最近有传言称LinusTorvalds[1]大神在Google+上大骂GNOME3不能容忍的凌乱,并改投XFCE的怀抱。不管真假,至少我认为GNOME3是很考验智商的。但是不管怎么样,这玩意没有好坏之分,只是口味不同,自己用着舒坦的就是最好的,是不是?

本书并不准备截图给各位欣赏,原因主要有三:一是印图成本太高,我也是屌丝一名,挣点钱不容易;二是大家可以通过BaiduGoogle查询到非常多的截图,直接在电脑上看效果会更好;三是学习Linux最需要亲力亲为持之以恒,我们不希望浪费你去主动查询资料的好机会。希望能够理解我们的良苦用心:)

1.3.1 KDE

KDE是由德国人MatthiasEttrich1996年就读于图宾根大学时开始的一个计划。当时的Unix桌面没有一个应用程序的外观、感受或工作方式与其它程序一样。于是MatthiasEttrich就建议不仅是创建一套应用程序,而是要创建一个桌面环境,能让用户拥有相同的外观、感受和工作方式,而且这个桌面应该是非常容易使用的。他的这个想法得到了很多人的支持,从此KDE计划就诞生了。

可能有人会疑惑,KDE是给Unix的,似乎跟Linux没有什么关系,为什么这本书要介绍它呢?其实不单单KDE是这样,剩下的三个桌面环境也是这样。甚至在这个星球上完全针对Linux编写的软件也是并不多的,那些在Linux下能够获得的软件大多不是针对Linux开发的。它们是针对Unix系统的,而Linux属于类Unix系统,所以就毫无歉意的坐享了这些成果。这就是Linux的优势,也是大家学习Linux的优势。学会了Linux,几乎就等同于学会了Unix或类Unix系统,它们在这个星球的应用范围就从来没有被Windows超越过。本书的内容也是如此,只要少数章节是专门针对Linux特性所特别设置的,大多数知识都是通用且极具实用价值的。好了,闲话不多说,我们继续介绍KDE

追究KDE这个名字的由来是没有实际意义的,但是我们需要知道它是完全采用Qt程序库(后面的章节会有详细介绍)开发的。由于Qt多驳的命运[2],注定了KDE同样会拥有着风雨飘摇的艰辛历程。

虽然Qt是开放源代码的软件,但是在KDE早期时候Qt并非是自由软件授权,这与KDE的自由软件授权相冲突,所以很多人会担心惹上版权麻烦,尽量避免使用KDE,这成为了KDE初期推广的障碍。

很庆幸的是199811月之后,Qt程序库所属的Trolltech公司发布了第一份自由软件许QPublic LicenseQPL)的Qt程序库授权。同年不久,KDE Free Qt基金会[3]保证:若Trolltech在任意连续12个月内没有发布新的自由版本,那么Qt程序库将更改为基于BSD许可证的授权进行发布。但是很多人依然争论着,认为QPL授权与GPL(万恶的“鸡屁儿”)上的某些条款不相容。这导致了Red Hat公司始终无法将KDE当作默认桌面,而MandrivaLinux则趁此时机凭借KDE席卷了欧洲市场。

直到20009月,一个基于GPL协议的Qt程序库发布,大部分用户方才对KDE生出信心。此时的KDE已经日臻完善,国内的各大Linux发行版都纷纷采用KDE作为其默认左面,甚至出现了“阳春白雪[4]”这样专门针对KDE的汉化美化套件。

2008年是一个非常重要的年景,奥运会第一次在中国召开,Qt升级到了4.0,并且采用了更加宽泛的LGPL授权(尽Qt4以后的版本)。但是KDE的好日子到头了。Qt4LGPL授权固然招人喜欢,但是Qt4相对于Qt3做了较大幅度的调整,如果KDE转投Qt4,则必须做较大更动甚至重写。KDE的开发者们抱着有困难要上,没有困难制造困难也要上的必死决心毅然的转投Qt4的怀抱。这导致了很长一段时间人们没有新的KDE版本使用,那些不断放出的KDE4的各种版本几乎个个都是花瓶,中看不中用。直到KDE4.2版本的发布,才彻底稳定了下来。于是就在Linux界流传了一段笑话:KDE从能用到不能用再到能用,之后Gnome从能用到不能用。

至于Gnome的故事我们稍后再说,KDE的故事还在继续。经Qt3Qt4转变的这么一折腾,损失大量粉丝是在所难免的了,但祸总是不单行的,就在KDE4准备发力接受市场的挑战之际,Qt的所属公司Torlltech被大名鼎鼎的Nokia收购了。原以为能够如虎添翼一下,可万没想到是Nokia是又是一个倒霉蛋,倒霉到不得不去抱微软的大腿。结果是大腿没等报稳,就把Qt给弄丢了,出售给了Digia公司。但是不管怎么样,由于QtLGPL授权的,所以它就属于全人类的了,我们能够永远都有免费的Qt使用。

Qt其实是一个非常优秀的C++跨平台图形界面开发库,几乎可以媲美Java的跨平台特性。不同的是Java能够一次编译到处运行,而Qt是可以一次编码到处编译。也正因为如此,KDE已经被移植到了几乎所有硬件和操作系统平台上。现在的KDE已经不单单是一个桌面环境,它几乎就是基于Qt开发的程序的庞大集合,是Qt的一个超级平台。这里拥有功能异常丰富的应用,包括各种跨平台组件、办公套件和开发套件等,几乎可以找到任何Qt应用的样板。而且从任何角度来看,Qt都是C++开发跨平图形应用的首选程序库,最新的WPS选择它就是非常好的佐证。那么学习和掌握QtKDE则是非常理想的平台。

需要注意,如果你根据我们的推荐选择安装了Cent OSKDE是选装部分,需要在安装的时候选中它才可以,否则就需要根据下一章所介绍的内容去手动安装了。如果你选择的是SuSE,则默认就可以使用KDE了。我们推荐初学Linux的用户选择KDE,它的操作习惯与Windows更加接近。

1.3.2 Gnome

KDE受版权困扰和没有新版可用的时候,陪伴在人们身边的是Gnome桌面环境。虽然Gnome3使得Gnome从能用变得不能用了,但是Gnome2则依然是不可磨灭的经典。

GNOMEGNU网络对象模型环境——The GNUNetwork Object Model Environment的英文缩写。它是GNU计划的一部分,开放源码运动的重要组成部分。目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面有好的桌面环境,它是GNU计划的正式桌面。如果说有那么一个桌面环境是为Linux而生的,那么就非GNOME莫属了,所以被现代的大多数Linux发行版作为默认桌面使用。因为Linux是类Unix的缘故,GNOME虽出于Linux而胜与Linux,已经能够运行与各种类Unix系统了,所以就有了前面对GNOME的描述。

GNOME主要是为了当初使用没有采用GPL授权的QtKDE而出现的。GIMP ToolkitGTK+,本书后面的章节会详细介绍)就成了Qt的替代者,担当GNOME桌面的基础。GTK+使用LGPL,允许链接到此库的软件(例如GNOME的应用程序)使用任意的许可协议。GNOME的应用程序通常采用GPL许可证授权。

GNOME本身是使用C语言编程的,但并不受限于C这种单一语言。GNOME使用CORBA——Common Object Request BrokerArchitecture让各程序组件能够彼此协作,而又不需要考虑它们是何种语言所写成的,甚至是在何种系统上执行的都不用考虑。

GNOME提供了两个东西。一是GNOME桌面环境,一个对最终用户来说符合直觉并十分吸引人的桌面。GNOME3做到了吸引人,但是我总觉得它不符合我的直觉,也就是我总是找不到我要找的东西(可能是智商问题)。二是GNOME开发平台,一个能使开发的应用程序与桌面其它部分集成的可扩展框架。这点GNOME做的相当好,CORBA就是非常典型例子。

GNOME之下还有很多子计划,它们不都是包含在GNOME中一同发布的。一些基于概念的纯粹实验性的,等稳定后加入GNOME软件;还有一些是正在完善中,以便能够直接加入的。例如:GNOME存储和D-BUS

目前的主流发行版发行版,如:RHELCent OSUbuntu等都是以GNOME为默认桌面的,操作手感更像Mac OS X,但是属于完全不同的风格。这是绝对原汁原味的GNU

1.3.3 XFCE

KDEGNOME虽然雍容华贵,但是也恰恰就有些太过“臃容”,对于喜欢“轻淡”口味或只有“小马力战车”的屌丝们,XFCE是一个相当不错的选择。

XFCE是一个轻量级的Linux或类Unix的桌面系统。XFCE的设计目的就是:快速加载并用来执行程序,且占用系统资源少。从实际的使用效果上看,XFCE也的确做到了这一点。也正是因为如此,作为一个拥有很长历史(其源自1996年)的桌面环境,能够在很多ULinux中见到它的身影。

XFCE是使用率仅次于KDEGNOME的桌面环境。各大发行版基本都会将其作为可选桌面提供。甚至一些发行版,如XubuntuSAMLinuxDesktop等已经开始将XFCE作为默认桌面了。

XFCEGNOME一样,也是基于GTK+开发的,这首先保证了不会有任何授权问题。另外,XFCE不仅可以作为桌面环境使用,还能够作为程序库来开发第三方程序,比如文字编辑器Mousepad

XFCE肯定是没有办法与GNOMEKDE相比的,但是简单和高效是它的特点,如果你已经修炼成了一个Linux行家里手,那么XFCE将会是你梦寐以求的选择。具体为什么,读完这本书你就知道了。

1.3.4 LXDE

如果对小巧精悍的桌面环境很有爱的话,那么LXDE则是另外一个十分值得推荐的选择。如果你是一个民族主义者,那么一定会十分喜爱LXDE,因为它完全是我们中国人开发的,虽然他们都是来自台湾省(这是我国领土不可分割的部分)。

LXDE相对于前面三个桌面环境会显得相当的年轻。2006年它还只是一个文件管理器,后来才慢慢发展成为一个功能齐全的桌面环境。虽然LXDE2006年的东西,但是它对系统的要求却低得惊人,甚至在1999年的老电脑上不用3D加速也能流畅的运行。所以,在上网本、MID等低功耗移动电脑上拥有比较广泛的应用。这也十分对得起它名字——LightweightX11 Desktop Environment,轻量级X11桌面环境,简称LXDE

LXDE与前面三个桌面环境不同,它没有自己开发WM,而是选用了Openbox做为默认WM。这种选择使得它不必重新造轮子,还始终能够保持十分轻量。而且Openbox本身也是十分的轻量的。这两者的强强组合,促成了LXDE的无比强大。其实在Linux世界,你所见到的大多数复杂软件系统,都是这种强强组合的结果,像KDEGNOMEXFCE这样的一应俱全的软件套件是非常罕见的。

LXDE同样是采用GTK+开发的,由此可见GTK+在开源图形领域的地位是多么的重要。就从这几方面的应用,几乎就可以让初学者确定到底应该学些什么了。但是我更加喜欢Qt,至于具体是为什么,也就是萝卜青菜的差别。

(未完,待续……)


[1]Linux之父啊,本书的读者要是不认识他是有些说不过去的。

[2]1991年由TrollTech公司开发,与2008年被Nokia所收购,2012年又卖给了Digia公司。曾数次修改授权方式。

[3]就是保证QtKDE在任何情况下都是自由软件的组织,最初有TrollTechKDE开发者共同创立。

[4]2001年沈阳玳娜软件有限公司为了推动中文Linux的普及,针对Red HatLinux 7.2推出的一款汉化美化套件,其中包括中文输入法和KDE的汉化美化部分。属于死在沙滩上的优秀前辈。