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的世界里。
那些年,愛折騰