Linux那些事——GTK+, Qt, Gnome, KDE, xWindow, xOrg区别

Linux不仅内核开源,系统配置也是高度可定制化的,其中就包括我们所熟知的图形界面,从桌面环境,主题,字体,Icon我们都可以通过修改Linux的配置文件来修改。这就是为什么我选择Linux的理由,高度的个性化。

用了8年多的Linux桌面发行版,一直没有好好研究一下linux的图形界面xwindow,今天拿出来好好整理一下,也希望对刚入门linux的童鞋有一定帮助。

首先Linux是个开源且自由的软件,他只是一个内核,这意味着我们可以对其任何细节,模块,内核进行高度的定制化。所谓的图形界面,是在Linux环境下的一套或者说一个软件,为Linux提供了图形界面的能力。这和windows的设计很不一样,windows是把图形界面作为必不可少的部分(内核),也就是windows的发布永远携带了图形界面,他和windows系统是一体的,对于linux来说,图形界面是个可有可无的软件而已,没有xwindow,linux是操作系统,有xwindow,linux还是个操作系统,当你安装上了这个xwindow,linux只是多了一个软件而已。

那么关于Linux的图形界面,有很多故事可以讲,这里就来区分一下这些专业的名词。

x Window Server 与 x协议

又被称为x11或者X,所谓server,是一种服务器,就像http服务器,ftp服务器,简而言之这就是一个用来显示图形界面的服务器。xwindow最早由MIT研发,后广泛运用于Unix和Unix Like系统之上。现在几乎所有的操作系统都支持这个xWindow的运行。光有xwindow是不够的,这是一个协议,就像http服务器,http也是一个协议,所有遵守http协议开发的服务器都是http服务器,所有遵守x协议的服务器都叫x window server,所以x winwow server还需要client,这个客户端就是x协议下的应用,例如KDE,Gnome。这些client软件一般都是通过x11协议下的GTK和Qt图形库开发的,因为都遵守x协议,所以可以与x window server沟通,就像浏览器都可以和http服务器沟通一样。
[注:x11中11是x协议的版本号,目前是第11个版本]

x.org

Org顾名思义,是一个组织,他们致力于实现x11这套协议,并且基于这套协议,架构开发出了自己的x window server,就像apache开发了apache,是一个http服务器。xorg实现的这套xwindow在linux系统的图形界面中被广为接受,也是目前最流行的图形界面服务软件,当然除此以外也有其他组织和公司实现了这套x协议,比如Xfree86,Xnest,MOTIF等
理论上,任何公司,组织,个人都可以用计算机语言去实现一套xWindow服务系统,只需要遵守x11的协议,但是x.Org发布的这一套更加的有名,被Linux各发行版广为使用。苹果的Mac OS也是基于这个x协议的,并且mac的darwin内核内置了一个x window server,中和linux不太一样,linux没有把xwindow放在内核中。

GTK+ and Qt

这两个是GUI toolkits,这两个是软件库,类似c语言的stdio.h,win32,java里import的各种外部包,可以任开发者调用(应该是C/C++使用的库)去创建一些图形界面里面的控件,例如button,下拉菜单,窗口等。我记得JAVA里面也有类似AWT和Swing库。用这一套库开发出的图形空间将会有一套统一的风格和标准,这就是不同系统安装的不同软件有的时候会有相同的样式,因为他们可能使用了GTK或者QT的库。KDE默认使用Qt库开发,Gnome默认使用GTK+库开发,而这两套库又是基于X window server的,需要遵守x11协议,在xwindow server上运行,作为client应用实现的基础类库。接下来就要说说KDE和Gnome以及其他基于GTK和Qt开发的x软件。

KDE and Gnome

KDE 和 Gnome才是我们用户真正看到的图形界面,窗口管理器,当然他们还提供了例如菜单,软件列表,鼠标,桌面等控件,所以称他们为桌面环境更合适!他们属于x client级的应用,因为很多图形界面软件基于这些环境才能被管理,例如firefox,gimp等,桌面环境包含了大量的开发完成的桌面的控件,窗口,按钮,表单,动画等,除此以外,还有专门基于这两个桌面环境的软件,对于KDE,大部分的软件和控件都是基于QT库开发的,但也不是全部,GTK开发的软件同样可以运行在KDE环境中,但是有可能出现一些些小问题,崩溃等。而Gnome的大部分软件都是基于GTK+库开发,同样Qt开发的软件也可以运行于Gnome,这主要也归功于Gnome,KDE以及这些软件(firefox,gimp等)都是遵循x11的协议的client应用,他们具有兼容性,这里要强调,虽然KDE和gnome是桌面环境,窗口管理器,看似更庞大,更底层,但是对于x11协议来说,他们和在他们之上运行的窗口应用(例如firefox,gimp等)属于同级,都是基于x的client软件,他们只是为了方便管理图形界面下的多应用程序而生的。

其他环境

除了KDE和Gnome还有更多的桌面环境被广泛运用于Linux,之所以大家都听说这两个,是因为这两个桌面环境运用十分广泛,也可以说这两个软件用的人更多。其他的环境还有:

  1. XFCE-简单快速的桌面环境,基于GTK
  2. Cinnamon基于GTK
  3. MATE基于GTK
  4. LXDE基于GTK
  5. Trinity基于Qt

笔者搜索了一些关于桌面库的资料,发现,GTK的桌面环境多于Qt派,Qt几乎只有可怜的KDE一枝独秀,而且笔者也不太喜欢KDE,现在的KDE桌面环境一般是指KDE Plasma。Ubuntu有一个分支就是基于KDE的,有兴趣的童鞋可以安装Kubuntu体验一下,KDE的特色就是“花里胡哨”。

Unity

原来是ubuntu的默认桌面环境,基于gnome开发,ubuntu打算把他作为独立的桌面环境,但是后来这个项目挂了,估计是没有足够的人钱去开发了,现在ubuntu改用gnome3作为默认桌面环境,这让我非常伤心,只能说没有unity的ubuntu不是我爱的ubuntu,庆幸的是,由于gnome的高度可定制性,我将他充分个性化了。

其实,对于unity我有很多话想说,这是我最爱的桌面环境,记得,那是我第一个接触的Linux发行版,也是ubuntu第一次将unity对外公布,运用于版本11.04,那时的我还在上高中,身边的同学甚至不知道linux是什么,而我每天回家都会兴奋的打开我的ubuntu unity桌面,那时的我没有人能理解,唯独的快乐是深深的沉静在代码和定制linux的世界里。

那些年,爱折腾


Linux那些事——GTK+, Qt, Gnome, KDE, xWindow, xOrg区别的更多相关文章

  1. X11,GTK,QT,GNOME的区别与联系(UI工具总结)

    1,X11是X Window System Protocol, Version 11(RFC1013),是X server和X client之间的通信协议.X server是xfree86/xorg驱 ...

  2. linux桌面环境gnome,kde,xfce,lxde 使用比较(转)

    Linus Torvalds大神前几日在 Google+上表示,GNOME 3"无可容忍的凌乱",改投Xfce桌面环境.下面就GNOME, KDE, XFCE和 LXDE略作比较. ...

  3. [转帖]查看Linux用的桌面是GNOME、KDE或者其他

    http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome KDE 基于QT做的 已经越来越 ...

  4. 查看Linux用的桌面是GNOME、KDE或者其他(转)

    http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome 1) pgrep -l &quo ...

  5. Linux C 程序 GTK+图形界面编程(22)

    GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...

  6. Linux 虚拟串口及 Qt 串口通信实例

    Linux 虚拟串口及 Qt 串口通信实例 2011-06-22 17:49 佚名 互联网 字号:T | T Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪 ...

  7. Linux Debian 如何部署 Qt?

    Linux Debian 如何部署 Qt? 在这里以 HelloWorld 为例 目录结构如下: . ├── HelloWorld ├── HelloWorld.sh ├── imageformats ...

  8. 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点

    [Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...

  9. QT、QTE、qtopia区别

    QT.QTE.qtopia区别 Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序 ...

随机推荐

  1. nginx中rewrite flag

    rewrite  正则表达式  新URI  [flag]; [flag] 选项用于调控重写的行为,它的取值可能是: last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite ...

  2. java使用io流读取windows文件乱码问题

    出现原因: 在IDEA中,使用 FileReader 读取项目中的文本文件.由于IDEA的设置,都是默认的 UTF-8 编码,所以没有任何 问题. 但是,当读取Windows系统中创建的文本文件时,由 ...

  3. tensorflow object detection api android

    https://blog.csdn.net/weixin_40355324/article/details/80651350

  4. Spring-Boot 访问外部接口的几种方案总结

    一.简介 在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,针对这一需求目前存在着三种解决方案,下面将对这三种方案进行整理和说明. 二.Spring- ...

  5. 2019收藏盘点(编程语言/AI/面试/实用工具)

    2020.1.5更新 我看过的后面会加上评价 编程学习 java开源项目汇总: https://github.com/Snailclimb/awesome-java 大数据学习入门: https:// ...

  6. 描述符(\_\_get\_\_和\_\_set\_\_和\_\_delete\_\_)

    描述符(__get__和__set__和__delete__) 一.描述符 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),set(),delete()中的一个, ...

  7. Windows、Linux(Ubuntu)修改 pip 镜像源

    一.Windows 修改 pip 镜像源 1.win + R 打开运行,输入  %APPDATA% 2.按下回车,打开文件夹. 3.在该文件夹下,新建文件夹,命名 pip. 4.进入 pip 文件夹, ...

  8. 3.windows-oracle实战第三课 -表的管理

    oracle的核心 多表查询.存储过程.触发器  字符型: char  定义 最大2000字符,例如“char(10)  '小韩' 前4个字符放小韩,后添加6个空格补全,查询极快 varchar2(2 ...

  9. Oscar的拓扑笔记本

    目录 Euler characteristic Euler定理 引入:绝对值 度量空间 Example: 开集,闭集 Topological space 什么是拓扑 拓扑空间 例子: Exercise ...

  10. day57-mysql-五种约束和sql语句逻辑执行顺序

    二.sql语句逻辑执行顺序 () SELECT () DISTINCT <select_list> 去重复 () FROM <left_table> () <join_t ...