专栏首页米扑专栏GTK、KDE、Gnome、XWindows 图形界面

GTK、KDE、Gnome、XWindows 图形界面

一、linux图形界面的实现只是linux下的应用程序实现 图形界面(GUI)并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的关系就相当于当年的DOS和Windows 3.0一样,Windows 3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别(GUI)的系统,不是独立的操作系统。同样XFree只是linux下的一个应用程序而已,不是系统的一部分,但是X的存在可以方便用户使用电脑。Windows 95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows了,但linux却不一样,没有图形界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器。这也WINDOWS和linux的重要区别之一. 二、X是协议,不是具体的某个软件 X是协议,就像HTTP协议、IP协议一样。因为输入设备和显示设备不是同一个设备,而且他们需要相互配合,进行画面显示,所以需要一个交互协议,建立他们直接的沟通桥梁。

X协议主要有X应用程序和X服务器组成,如:我需要划个圆,X应用程序告诉X服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的"画"的动作,比如这个圆如何生成,用什么显卡的驱动程序去指挥显卡完成等等工作是由X服务器来完成的.

X服务器还负责捕捉键盘和鼠标的动作,假设X服务器捕捉到鼠标的左键被按下了,他就告诉X应用程序:亲爱的应用程序先生,我发现鼠标被按下了,您有什么指示吗?如果X应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话,X应用程序就对X服务器说:请再画一个正方形,当然他会告诉服务器在什么地方用什么颜色画多大的正方形,但不关心具体怎么画——那是服务器的事情。

三、X和XFree86的关系 有了协议,就需要具体的软件来实现这个协议,就好比我们有了交通法规就需要交警去根据法规维护交通秩序一样。Xfree86就是这样一个去根据法规实现协议的"交警",他按照X协议的规定来完成X应用程序提交的在屏幕上显示的任务.当然不仅仅是某个特定的交警才可以去维护和实现这个法规,比如还可以由交通协管员来实现交通法规,必要的时候警察也可以介入,当然前提是他们都要懂得交通法规,也就是要懂得协议,所以实现X协议的软件也并不只有XFree86,XFree86只是实现X协议的一个免费X服务器软件。商业上常用MOTIF,现在还有XORG,还有很多很小的由爱好者写的小的X服务器软件,甚至可以在Windows上有X服务器运行,这样你可以在linux系统上运行一个X应用程序然后在另一台windows系统上显示,多么神奇!你可以用google找到这样的X服务器软件,只不过在LINUX上最常用的是XFree86(现在的linux发行版都用Xorg了)顺便说一句,苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。 为了便于理解拿HTTP协议来比较: 1)协议是HTTP(hyper text transmission protocol) 实现这个协议的常用服务器有:apacheIIS 等 请求这些服务器传输文件的客户有:IE、MOZILLA、NETSCAPE等 2)协议是X 实现这个协议的常用服务器有:Xfree86、Xorg、Xnest等 请求这些服务器来完成显示任务的客户:所有的X应用程序. 只不过HTTP协议的服务器和客户端通常都在两台不同的电脑(服务器和客户机)之间来实现,所以一般人对这个比较容易理解。而X协议的服务器和客户端程序通常在同一台电脑上,因此很多用户都感到对此很难理解,既然是协议,那么肯定和平台无关的,因此可以让X应用程序显示在任何装有X服务器的远程计算机上,甚至显示在装有Xnest服务器的windows系统上。只不过在大多数情况下,X应用程序都用本机的X服务器,然后X服务器将显示结果输出到本机的显示器,这也是很多人不理解X是一种协议的原因. 四、X、X11、X11R6又是什么关系? 不知道初学者有没有注意到/usr/X11R6这个目录,这是XFree的默认安装目录 X11R6实际上是XProtocol version 11 Release6(X协议第11版第六次发行)的意思,就是说目前用的X协议是第11版的,然后经过了6次小的修正。不同版本的X协议是不能通信的,就象我们现在IPV4和IPV6不能通信一样,不过不用担心,现在的X服务器软件和X应用程序都遵循X11R6. 另外XFree86 3.3.6、XFree86 4.3.6等这些版本是实现X协议的软件XFree86的版本号.这是初学者经常高混淆的概念. 协议版本和实现协议的软件的版本——这两个概念的区别你分清楚了吗?

五、WM(Window Manager)窗口管理器

窗口管理器的作用就是实现窗口的最大化、最小化、移动、关闭等,而这些不是X服务器来负责完成的。如果不窗口管理器,X应用程序仍可以启动,但它就在屏幕中间,不能移动、不能最小化、不能最大化、没有边框。

Xfree86自带了一个简单的窗口管理器:twm,同时窗口管理器还有GNOME和KDE等。为了更方便的了解窗口管理器的作用,我们可以做以下测试(因我使用的是ubuntu,无法确认以下操作和命令的正确性,请有条件的朋友测试以下并给与指正)。

1、系统(有界面的Linux)启动后,进入图形进面,我们打开一个XTERM,输入init3就可以安全的回到字符界面.

2、再输入#startx又返回到图形界面,你看到的是一个和平时使用一样的完整的图形界面操作环境,你可以最大化、最小化、移动、关闭窗口等。

3、我们还是再次进入字符界面,按ctrl+alt+backspace反回字符界面,输入:#xinit(注:与第二步的命令startx不同),再次启动图形界面,你看到了什么,你看到一个XTERM.而且不能移动.但是你可以在这个XTERM中输入命令打开X应用程序,如果我输入:#mozilla。打开浏览器,你看到的浏览器和平时有什么不同吗?他在屏幕中间,不能移动、不能最小化、不能最大化、没有边框。 为什么同样一个X应用程序会有这样的不同呢?因为我们用startx启动图形界面的时候同时也启动了一个默认的WM(即窗口管理器),如果你用KDE就起动了KDE,如果你用GNOME就起动了GNOME,但是你用xinit起动图形界面的时候却没有起动WM. 4、如果你用xinit起动图形界面并在xterm中输入twm,看看会有什么?xterm被加上了一个边框,你可以通过这个边框移动、最大化、最小化这个xterm,twm就是XFree86中自带的窗口管理器,是一个比较简陋的最简单的窗口管理器,但是他具有窗口管理器的全部特征. 5、如果你不输入twm而输入gnome-session就可以起动GNOME或者输入startkde起动KDE.

通过以上的实验你就可以清楚的明白他们之间的关系,另其它的小型窗口管理器有:

windowmaker、after step、blackbox、fvwm、fvwm2等等都是常用的优秀窗口管理器。REDHAT9中有windowmaker 但是默认不安装,大家可以装来试试.只要xinit再wmaker&就可以用windowmaker了.

六、X协议的Client端有时谁实现的呢?

XFree86是X协议的服务器软件(注以软件的形式实现),但Client端更多的是方便程序员更方便的使用X协议与服务器端的XFree86交互,故就产生了一个Xlib库,封装了X协议内容,如果你还觉得直接使用Xlib不方便,于是就产生了QT和GTK,对Xlib进一步封装,提供了很多控件,可以可视化的使用X协议更方便程序员的开发。

Xlib、QT、GTK直接关系如下图:

QT是直接使用xlib库的,GTK不能直接使用xlib,而是使用更低层的函数库GDK和Glib。这种结构使得Gtk可以更方便地移植到其它系统上,或使用与XWindows系统无关的图形库。

七、KDE、GNOME、QT和GTK直接关系

KDE和GNOME是窗口管理器,启动他们后我们进入了可视化操作(图形界面),既然需要显示图形,自然少不了与X协议的服务器软件打交道,既然QT和GTK进一步封装了X协议,并且他们提供了更为丰富的窗口及控制机制,于是在QT基础上实现的窗口管理器叫KDE,在GTK基础上实现的窗口管理器叫GNOME.

再次提示:KDE和GNOME并不只是窗口管理器,同时提供了桌面、菜单等等。

KDE和Gnome都是桌面环境中的一种,用的库不一样,可以是KDE,Gnome,还可以是XFCE、LXDE等

kde用的qt库,但是qt库不是免费的,在基于qt的软件版权上面会有一些问题。于是就有人开发出了gnome,用的是gtk库,这个库没有qt库在版权上的问题。 (qt库和gtk库就相当于windows下的MFC库) 同一个linux有不同版本的桌面,你可以都试试,就能感觉到kde和gnome的不一样了,比如 ubuntu 是gnome桌面,Kubuntu的就是kde桌面

-------------------------------------------

四大Linux图形界面赏析:KDE、Gnome、Xfce、LXDE

如果Microsoft不是加入了图形界面,Windows系列操作系统不会成功地占领计算机桌面这块高地。这种人机交换的图形化界面,使得界面更加直观、简易、而且更人性化,同时也大大减少了使用者的认知负担,普通用户无需再牢记让人“劳神”的命令,直接拖拽就能操作。

在这一点上,微软确实是将图形化操作界面这条路走得更彻底、更专一,尽管人们一直都在抱怨Windows系统安全性和稳定性上的不足,但是,在应用程序和娱乐性上,微软仍然赢得了大多数普通用户的青睐,因为在他们的工作和生活中,这些就已经足够了。

图形界面架起用户迈向Linux的桥梁

而相对而言,Linux系统一直坚持自己的专业路线,在服务器操作系统领域,Linux凭借着其安全性和稳定性等特性,一直都企业的绝对主力。不过,尽管Linux在服务器操作系统领域算是佼佼者,而且很多Linux系统都是开源软件,但是了解和熟悉他们的人大多都集中在社区和专业人士中。

不过,现在这一情况正在不断地改变。随着,近几年Windows系统爆出的各种不愉快的事件,人们醒悟过来,任何时候都不能受限于一种产品,否则不管是个人还是企业都有被辖制的危险。

而同时,在Linux/Unix系统自身地不断进步及其上各个图形界面产品不断地成熟和发展,越来越多的普通用户通过试用发现,这种组合能够焕发出独特的吸引力,很多企业和个人都在这个过程纷纷放弃Windows转投Linux/Unix的怀抱。

很多可能会提出问题,在Linux系统下,还有很多应用软件和娱乐仍然都无法使用,甚至一些驱动程序还没有,但是这一情况正在渐渐得以解决,越来越多的软件和硬件厂商正在支持或者准备支持Linux/Unix系统。

事实上,很多年前,我们Linux开发者们,早就已经注意开发出针对普通用户的图形界面环境了。这篇文章编者带你认识一下,这些吸引普通用户迈入Linux系统世界的图形桌面环境。

在介绍之前,编者做了一次调查,发现在distowatch.com网站上,2010年6月份排在前十名的操作系统,他们都使用了什么样的图形桌面环境。

从编者这个局部的调查可以看出来,GNOME和KDE是目前的主流环境,而Xfce、LXDE、Openbox和Fluxbox等也已经得到了很高的应用。

下面,编者就以上图形桌面环境进一步的解析。

1)KDE

  KDE(Kool Desktop Environment)项目始建于1996年10月,相对于GNOME还要早一些。KDE项目是由图形排版工具Lyx的开发者、一位名为Matthias Ettrich的德国人发起的,目的是为满足普通用户也能够通过简单易用的桌面来管理Unix工作站上的各种应用软件以及完成各种任务。

KDE的LOGO

  在应用开发方面,KDE项目已经开发了一流的复合文档应用程序框架,实现了最先进的框架技术并且因此把它自己直接置身于和诸如微软的MFC/COM/ActiveX技术等流行开发框架相竞争的位置。KDE的KParts复合文档技术使得开发人员可以快速创建一流的应用程序以实现最尖端的技术。

  在应用程序上,KDE也拥有了可以与微软office媲美的办公应用套件KOffice,其分别由电子表格、幻灯片制作程序、组织者、新闻客户端等应用组成。还集成常见的Web浏览器、电子邮件客户端、办公套件、图形图像处理软件,以及桌面主题功能、配置功能、KDE帮助中心等各种管理工具。同时,还支持60余种语言的翻译。

  其实,从系统的安装过程,你就能体验KDE给你带来的便捷,各种语言、时区、安装磁盘、用户设置以及网络设置等工作,都无需去考虑输入什么命令,直接用鼠标点选即可。

  目前,KDE最新版本是4.5.0,进一步提高了稳定性和性能。可以体验到,KDE的操作习惯越来越与Win9x有很多相似之处,支持鼠标拖放、类似快捷方式,即使你是一个刚接触Linux的新手,也能很快上手。

2)GNOME

  GNOME计划发起于1997年8月,所以,你可以在GNOME的LOGO上见到1997的字样。发起人是Miguel de Icaza和Federico Mena,GNOME计划当初的目标就是完全基于自由软件,构造那种功能完善、操作简单以及界面友好的桌面环境,希望走国际化道路,尽可能多地为各种国家的人所使用。目前,GNOME已经基本上可以成为KDE的替代品。

  GNOME的LOGO

  GNOME不仅仅提供了一个吸引人的桌面环境,而且还提供一个开发平台,一个能使开发的应用程序与桌面其它部分集成的可扩展框架。

  GNOME的结构包括:一个面板、桌面以及一系列标准的桌面工具和很多功能强大的应用软件。这些应用软件包括:文件管理器、电子表格处理软件、字理软件、电子表格软件、邮件阅读器、MP3播放器、简单的编辑器以及可以与PhotoShop媲美的图像处理软件等常用软件。

  同时,GNOME还集成了软件更新和管理工具,基于Web的软件发布和自动升级工具,可平滑、安全地运行最新的开放资源和下载最新的补丁。

  如果,你体验过GNOME就会知道,GNOME的这些应用软件是如何让Linux系统更具可操作性,鼠标拖拽以及左右键功能、编辑文档、绘制图片、收发邮件、音频和视频的播放、即时通讯工具聊天......这些使用体验与你在Windows下几乎没有差别。

  虽然,GNOME最初是GNU/Linux的桌面,但是现在GNOME已经运行在大多数类Unix系统(如*BSD变体、AIX、IRIX、HP-UX)和几乎所有的Linux系统之上。目前,gnome.org上显示GNOME最新版本是2.3,而在2011年将发布的GNOME3的体验据介绍将可以匹敌Windows 7,我们将拭目以待。

3)XFCE

  Xfce(XForms Common Environment)创建于2007年7月,类似于商业图形环境CDE,是一个运行在各类Unix下的轻量级桌面环境。原作者Olivier Fourdan最先设计XFce是基于XForms三维图形库。Xfce设计目的是用来提高系统的效率,在节省系统资源的同时,能够快速加载和执行应用程序。

  Xfce的LOGO

  XFce最主要的特色是容易配置,整个过程都可以使用鼠标来完成,而不需要修改配置文件的代码。最新版本的XFce还支持鼠标拖放、系统任务管理、多字节在内的多国语言以及其它特征。

  Mint的界面

  同时,XFce桌面环境的结构包括:一个叫XFwm的窗口管理器、主面板、文件管理器、背景管理器、声音管理器以及GNOME兼容模块等。另外,还有很多第三方的应用程序:文字编辑器、文件管理器、日历程序、CD 和 DVD 烧录程序、媒体播放器、浏览器等。

  从体验过程来看,虽然,没有GNOME和KDE的应用程度那么高,但是Xfce简单高效的特点,仍然为其赢得了非常多的用户青睐。目前,Xfce最新版本是4.6.2。

4)LXDE

  LXDE(Lightweight X11 Desktop Environment)创建于2006年,主要为Unix以及如Linux、BSD等POSIX相容平台上提供一个轻量、快速的桌面环境。开发者主要是为Open PCMan的著名中国台湾开放源代码程式设计者洪任谕(PCMan)、钱逢祥(Fred Chien),以及其他活跃开发者刘颖骏(Paul Liu)、李健秋(Andrew Lee)及黄敬群(jserv)等。

  LXDE的LOGO

  相对于GNOME和KDE这些桌面环境,LXDE属于小巧玲珑类型的。LXDE更加注重于实用性和轻巧性,并且尽力降低其所耗系统资源。不同于其它桌面环境,其元件相依性极少。取而代之的是各元件可以独立运作,大多数的元件都不须倚赖其它套件而可以独自执行。

  LXDE使用Openbox为其默认窗口管理器,并且希望能够提供一个建立在互相独立套件上的轻量级快速的桌面。另外,LXDE也集成了一些应用程序和工具:图片浏览器,外观、字型、布景主题管理工具、音乐播放器、屏幕设定工具、面板管理工具、编辑工具、系统资源监控以及工作管理员和轻巧的档案及桌面管理程式等。

  从体验过程来看,LXDE确实对系统硬件要求比较低,甚至1999年出产的计算机都可以正常执行。所以,如果你有一台即将淘汰的计算机安装Linux系统,那么LXDE必将是你不错的选择。

  这里选择只选择众多图形桌面环境的四种做体验,其中也是因为很多人将GNOME与KDE,以及XFCE与LXDE分别作比较。

  综合整个体验过程,从效果上看,Windows在Linux系统面前应该说没有太多优势可言。KDE和GNOME强大的功能以及绚丽多彩的界面一点不逊色于Windows,甚至还要好于它;同时在特效展示方面,例如半透明和三维界面,Windows能够做到的,依赖强大的KDE和GNOME同样可以做到。而且,最近Ubuntu下一个版本也将支持多点触摸。

  当然,如果你的计算机硬件配置不高,又或者是在移动设备中,轻量级的桌面环境就将发挥重要作用。

  所以,我们可以看到,通过形形色色的图形桌面环境的介入,Linux系统正进入一个高速发展的阶段,Linux桌面应用的普及渐渐打开了一个新天地。

参考推荐:

Linux桌面环境GNOME,KDE,XFCE,LXDE 比较

Linux桌面两大阵营 GNOME与KDE的战争

x11 gtk qt gnome kde 之间的区别和联系

Windows连接Linux的常用工具

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

    Linux,最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software...

    阳光岛主
  • Linux Shell 常用命令与目录分区的学习总结

    版权声明:本文为米扑博客原创文章,未经米扑博客允许不得转载。 https://blog.cs...

    阳光岛主
  • Linux动态链接库.so文件的创建与使用

            使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码...

    阳光岛主
  • 原 《Linux内核分析》小节

    不高不富不帅的陈政_
  • 苹果VS谷歌,可视化两厂所有专利后看创新模式差异

    大数据文摘
  • FileSystemWatcher 导致Mono ASP.NET应用程序CPU使用率比较高

    大家都知道ASP.NET 网站应用程序(WebSite)可以自动检测到你的ASP.NET应用的文件修改,其中要使用到的就是监视磁盘上的文件/目录的更改,以便应用...

    张善友
  • Emacs 快捷键使用

    C-x C-m f utf-8-unix RET : 将当前文件转换为 utf-8 编码

    zucchiniy
  • ASP.NET Core 中的 ServiceProvider

    在 ASP.NET Core 中,微软提供了一套默认的依赖注入实现,该实现对应的包为:Microsoft.Extensions.DependencyInject...

    Edison.Ma
  • 哪些曾经的高科技产品会消失呢?又被哪些高科技所替代呢?

    KS Knowledge Sharing 知识分享 现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。 写在...

    互扯程序
  • 李飞飞“师叔”史建波加盟驭势科技!新智元专访吴甘沙

    今天,世界顶级的人工智能专家、宾夕法尼亚大学计算机与信息科学教授史建波(Jianbo Shi)加盟自动驾驶公司驭势科技,任驭势科技首席科学家并负责驭势即将落地的...

    新智元

扫码关注云+社区

领取腾讯云代金券