Linux那些事——GTK+, Qt, Gnome, KDE, xWindow, xOrg区别
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,之所以大家都听说这两个,是因为这两个桌面环境运用十分广泛,也可以说这两个软件用的人更多。其他的环境还有:
- XFCE-简单快速的桌面环境,基于GTK
- Cinnamon基于GTK
- MATE基于GTK
- LXDE基于GTK
- 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区别的更多相关文章
- X11,GTK,QT,GNOME的区别与联系(UI工具总结)
1,X11是X Window System Protocol, Version 11(RFC1013),是X server和X client之间的通信协议.X server是xfree86/xorg驱 ...
- linux桌面环境gnome,kde,xfce,lxde 使用比较(转)
Linus Torvalds大神前几日在 Google+上表示,GNOME 3"无可容忍的凌乱",改投Xfce桌面环境.下面就GNOME, KDE, XFCE和 LXDE略作比较. ...
- [转帖]查看Linux用的桌面是GNOME、KDE或者其他
http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome KDE 基于QT做的 已经越来越 ...
- 查看Linux用的桌面是GNOME、KDE或者其他(转)
http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome 1) pgrep -l &quo ...
- Linux C 程序 GTK+图形界面编程(22)
GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...
- Linux 虚拟串口及 Qt 串口通信实例
Linux 虚拟串口及 Qt 串口通信实例 2011-06-22 17:49 佚名 互联网 字号:T | T Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪 ...
- Linux Debian 如何部署 Qt?
Linux Debian 如何部署 Qt? 在这里以 HelloWorld 为例 目录结构如下: . ├── HelloWorld ├── HelloWorld.sh ├── imageformats ...
- 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点
[Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...
- QT、QTE、qtopia区别
QT.QTE.qtopia区别 Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序 ...
随机推荐
- uwsgi Import Error: No module named 'encodings'
https://serverfault.com/questions/558427/uwsgi-import-error-no-module-named-encodings I don't know i ...
- CodeForces 1292A NEKO's Maze Game(思维)
#include <stdio.h> #include <string.h> #include <iostream> #include <string> ...
- Struts 2 的常规配置
Struts 2 的默认配置文件是struts.xml,该文件应该放在Web应用的类加载路径下,通常就是放在WEB-INF/classes路径下. struts.xml文件的最大作用是配置Action ...
- mysql 不停机 短时间锁表 备份 主备同步 新增备份机器
刷新数据 [root@localhost ~]# mysql -e 'flush tables with read lock;' 锁表刷新表数据 [root@localhost ~]# mys ...
- js字符串相关要点
不要创建string对象,它会拖慢执行速度,并可能产生其他副作用. var x = "John"; var y = new String("John"); (x ...
- Tarjan算法:求解无向连通图图的割点(关节点)与桥(割边)
1. 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point).一个没有关节点的 ...
- php获取客户IP
获取客户真实IP,保存到数据库建议转整 function getIp(){ $ip = ''; if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip = $_SERV ...
- debian8.8安装谷歌浏览器
第一步:下载: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb //32位 wget h ...
- debian8.8更新源
##163源 deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http://mirrors.163.com/deb ...
- 腾讯云 Serverless 首发 1ms 计费粒度,立省 70% 费用
云函数 SCF 采用按需付费的方式,并首次发布 1ms 计费粒度,真正实现按使用多少计算能力来计费. 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的 ...