linux GTK、KDE、Gnome、XWindows 圖形界面區(qū)別是什么
Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。Linux圖形界面是許多應(yīng)用程序的可視化與實現(xiàn),這篇文章主要介紹了GTK、KDE、Gnome、XWindows 圖形界面,需要的朋友可以參考下
具體介紹
一、linux圖形界面的實現(xiàn)只是linux下的應(yīng)用程序?qū)崿F(xiàn)
圖形界面(GUI)并不是linux的一部分,linux只是一個基于命令行的操作系統(tǒng),linux和Xfree的關(guān)系就相當(dāng)于當(dāng)年的DOS和Windows 3.0一樣,Windows 3.0不是獨(dú)立的操作系統(tǒng),它只是DOS的擴(kuò)充,是DOS下的應(yīng)用程序級別(GUI)的系統(tǒng),不是獨(dú)立的操作系統(tǒng)。同樣XFree只是linux下的一個應(yīng)用程序而已,不是系統(tǒng)的一部分,但是X的存在可以方便用戶使用電腦。Windows 95及以后的版本就不一樣了,他們的圖形界面是操作系統(tǒng)的一部分,圖形界面在系統(tǒng)內(nèi)核中就實現(xiàn)了,沒有了圖形界面windows就不成為windows了,但linux卻不一樣,沒有圖形界面linux還是linux,很多裝linux的WEB服務(wù)器就根本不裝X服務(wù)器。這也WINDOWS和linux的重要區(qū)別之一.
二、X是協(xié)議,不是具體的某個軟件
X是協(xié)議,就像HTTP協(xié)議、IP協(xié)議一樣。因為輸入設(shè)備和顯示設(shè)備不是同一個設(shè)備,而且他們需要相互配合,進(jìn)行畫面顯示,所以需要一個交互協(xié)議,建立他們直接的溝通橋梁。
X協(xié)議主要有X應(yīng)用程序和X服務(wù)器組成,如:我需要劃個圓,X應(yīng)用程序告訴X服務(wù)器在屏幕的什么地方用什么顏色畫一個多大的圓,而具體的"畫"的動作,比如這個圓如何生成,用什么顯卡的驅(qū)動程序去指揮顯卡完成等等工作是由X服務(wù)器來完成的.
X服務(wù)器還負(fù)責(zé)捕捉鍵盤和鼠標(biāo)的動作,假設(shè)X服務(wù)器捕捉到鼠標(biāo)的左鍵被按下了,他就告訴X應(yīng)用程序:親愛的應(yīng)用程序先生,我發(fā)現(xiàn)鼠標(biāo)被按下了,您有什么指示嗎?如果X應(yīng)用程序被設(shè)計成當(dāng)按下鼠標(biāo)左健后再在屏幕上畫一個正方形的話,X應(yīng)用程序就對X服務(wù)器說:請再畫一個正方形,當(dāng)然他會告訴服務(wù)器在什么地方用什么顏色畫多大的正方形,但不關(guān)心具體怎么畫——那是服務(wù)器的事情。
三、X和XFree86的關(guān)系
有了協(xié)議,就需要具體的軟件來實現(xiàn)這個協(xié)議,就好比我們有了交通法規(guī)就需要交警去根據(jù)法規(guī)維護(hù)交通秩序一樣。Xfree86就是這樣一個去根據(jù)法規(guī)實現(xiàn)協(xié)議的"交警",他按照X協(xié)議的規(guī)定來完成X應(yīng)用程序提交的在屏幕上顯示的任務(wù).當(dāng)然不僅僅是某個特定的交警才可以去維護(hù)和實現(xiàn)這個法規(guī),比如還可以由交通協(xié)管員來實現(xiàn)交通法規(guī),必要的時候警察也可以介入,當(dāng)然前提是他們都要懂得交通法規(guī),也就是要懂得協(xié)議,所以實現(xiàn)X協(xié)議的軟件也并不只有XFree86,XFree86只是實現(xiàn)X協(xié)議的一個免費(fèi)X服務(wù)器軟件。商業(yè)上常用MOTIF,現(xiàn)在還有XORG,還有很多很小的由愛好者寫的小的X服務(wù)器軟件,甚至可以在Windows上有X服務(wù)器運(yùn)行,這樣你可以在linux系統(tǒng)上運(yùn)行一個X應(yīng)用程序然后在另一臺windows系統(tǒng)上顯示,多么神奇!你可以用google找到這樣的X服務(wù)器軟件,只不過在LINUX上最常用的是XFree86(現(xiàn)在的linux發(fā)行版都用Xorg了)順便說一句,蘋果電腦的圖形界面用的也是X協(xié)議,而且被認(rèn)為是做的最好的X協(xié)議圖形界面,并且他對X協(xié)議的實施是做在系統(tǒng)內(nèi)核里的,所以性能明顯好很多,這就是為什么很多大型三維圖形設(shè)計軟件都是在蘋果平臺上的原因。
為了便于理解拿HTTP協(xié)議來比較:
1)協(xié)議是HTTP(hyper text transmission protocol)
實現(xiàn)這個協(xié)議的常用服務(wù)器有:apacheIIS 等
請求這些服務(wù)器傳輸文件的客戶有:IE、MOZILLA、NETSCAPE等
2)協(xié)議是X
實現(xiàn)這個協(xié)議的常用服務(wù)器有:Xfree86、Xorg、Xnest等
請求這些服務(wù)器來完成顯示任務(wù)的客戶:所有的X應(yīng)用程序.
只不過HTTP協(xié)議的服務(wù)器和客戶端通常都在兩臺不同的電腦(服務(wù)器和客戶機(jī))之間來實現(xiàn),所以一般人對這個比較容易理解。而X協(xié)議的服務(wù)器和客戶端程序通常在同一臺電腦上,因此很多用戶都感到對此很難理解,既然是協(xié)議,那么肯定和平臺無關(guān)的,因此可以讓X應(yīng)用程序顯示在任何裝有X服務(wù)器的遠(yuǎn)程計算機(jī)上,甚至顯示在裝有Xnest服務(wù)器的windows系統(tǒng)上。只不過在大多數(shù)情況下,X應(yīng)用程序都用本機(jī)的X服務(wù)器,然后X服務(wù)器將顯示結(jié)果輸出到本機(jī)的顯示器,這也是很多人不理解X是一種協(xié)議的原因.
四、X、X11、X11R6又是什么關(guān)系?
不知道初學(xué)者有沒有注意到/usr/X11R6這個目錄,這是XFree的默認(rèn)安裝目錄
X11R6實際上是XProtocol version 11 Release6(X協(xié)議第11版第六次發(fā)行)的意思,就是說目前用的X協(xié)議是第11版的,然后經(jīng)過了6次小的修正。不同版本的X協(xié)議是不能通信的,就象我們現(xiàn)在IPV4和IPV6不能通信一樣,不過不用擔(dān)心,現(xiàn)在的X服務(wù)器軟件和X應(yīng)用程序都遵循X11R6.
另外XFree86 3.3.6、XFree86 4.3.6等這些版本是實現(xiàn)X協(xié)議的軟件XFree86的版本號.這是初學(xué)者經(jīng)常高混淆的概念.
協(xié)議版本和實現(xiàn)協(xié)議的軟件的版本——這兩個概念的區(qū)別你分清楚了嗎?
五、WM(Window Manager)窗口管理器
窗口管理器的作用就是實現(xiàn)窗口的最大化、最小化、移動、關(guān)閉等,而這些不是X服務(wù)器來負(fù)責(zé)完成的。如果不窗口管理器,X應(yīng)用程序仍可以啟動,但它就在屏幕中間,不能移動、不能最小化、不能最大化、沒有邊框。
Xfree86自帶了一個簡單的窗口管理器:twm,同時窗口管理器還有GNOME和KDE等。為了更方便的了解窗口管理器的作用,我們可以做以下測試(因我使用的是ubuntu,無法確認(rèn)以下操作和命令的正確性,請有條件的朋友測試以下并給與指正)。
1、系統(tǒng)(有界面的Linux)啟動后,進(jìn)入圖形進(jìn)面,我們打開一個XTERM,輸入init3就可以安全的回到字符界面.
2、再輸入#startx又返回到圖形界面,你看到的是一個和平時使用一樣的完整的圖形界面操作環(huán)境,你可以最大化、最小化、移動、關(guān)閉窗口等。
3、我們還是再次進(jìn)入字符界面,按ctrl+alt+backspace反回字符界面,輸入:#xinit(注:與第二步的命令startx不同),再次啟動圖形界面,你看到了什么,你看到一個XTERM.而且不能移動.但是你可以在這個XTERM中輸入命令打開X應(yīng)用程序,如果我輸入:#mozilla。打開瀏覽器,你看到的瀏覽器和平時有什么不同嗎?他在屏幕中間,不能移動、不能最小化、不能最大化、沒有邊框。
為什么同樣一個X應(yīng)用程序會有這樣的不同呢?因為我們用startx啟動圖形界面的時候同時也啟動了一個默認(rèn)的WM(即窗口管理器),如果你用KDE就起動了KDE,如果你用GNOME就起動了GNOME,但是你用xinit起動圖形界面的時候卻沒有起動WM.
4、如果你用xinit起動圖形界面并在xterm中輸入twm,看看會有什么?xterm被加上了一個邊框,你可以通過這個邊框移動、最大化、最小化這個xterm,twm就是XFree86中自帶的窗口管理器,是一個比較簡陋的最簡單的窗口管理器,但是他具有窗口管理器的全部特征.
5、如果你不輸入twm而輸入gnome-session就可以起動GNOME或者輸入startkde起動KDE.
通過以上的實驗?zāi)憔涂梢郧宄拿靼姿麄冎g的關(guān)系,另其它的小型窗口管理器有:
windowmaker、after step、blackbox、fvwm、fvwm2等等都是常用的優(yōu)秀窗口管理器。REDHAT9中有windowmaker 但是默認(rèn)不安裝,大家可以裝來試試.只要xinit再wmaker&就可以用windowmaker了.
六、X協(xié)議的Client端有時誰實現(xiàn)的呢?
XFree86是X協(xié)議的服務(wù)器軟件(注以軟件的形式實現(xiàn)),但Client端更多的是方便程序員更方便的使用X協(xié)議與服務(wù)器端的XFree86交互,故就產(chǎn)生了一個Xlib庫,封裝了X協(xié)議內(nèi)容,如果你還覺得直接使用Xlib不方便,于是就產(chǎn)生了QT和GTK,對Xlib進(jìn)一步封裝,提供了很多控件,可以可視化的使用X協(xié)議更方便程序員的開發(fā)。
Xlib、QT、GTK直接關(guān)系如下圖:
QT是直接使用xlib庫的,GTK不能直接使用xlib,而是使用更低層的函數(shù)庫GDK和Glib。這種結(jié)構(gòu)使得Gtk可以更方便地移植到其它系統(tǒng)上,或使用與XWindows系統(tǒng)無關(guān)的圖形庫。
七、KDE、GNOME、QT和GTK直接關(guān)系
KDE和GNOME是窗口管理器,啟動他們后我們進(jìn)入了可視化操作(圖形界面),既然需要顯示圖形,自然少不了與X協(xié)議的服務(wù)器軟件打交道,既然QT和GTK進(jìn)一步封裝了X協(xié)議,并且他們提供了更為豐富的窗口及控制機(jī)制,于是在QT基礎(chǔ)上實現(xiàn)的窗口管理器叫KDE,在GTK基礎(chǔ)上實現(xiàn)的窗口管理器叫GNOME.
再次提示:KDE和GNOME并不只是窗口管理器,同時提供了桌面、菜單等等。
KDE和Gnome都是桌面環(huán)境中的一種,用的庫不一樣,可以是KDE,Gnome,還可以是XFCE、LXDE等
kde用的qt庫,但是qt庫不是免費(fèi)的,在基于qt的軟件版權(quán)上面會有一些問題。于是就有人開發(fā)出了gnome,用的是gtk庫,這個庫沒有qt庫在版權(quán)上的問題。
(qt庫和gtk庫就相當(dāng)于windows下的MFC庫)
補(bǔ)充:Linux基本命令
1.ls命令:
格式::ls [選項] [目錄或文件]
功能:對于目錄,列出該目錄下的所有子目錄與文件;對于文件,列出文件名以及其他信息。
常用選項:
-a :列出目錄下的所有文件,包括以 . 開頭的隱含文件。
-d :將目錄像文件一樣顯示,而不是顯示其他文件。
-i :輸出文件的i節(jié)點(diǎn)的索引信息。
-k :以k字節(jié)的形式表示文件的大小。
-l :列出文件的詳細(xì)信息。
-n :用數(shù)字的UID,GID代替名稱。
-F : 在每個文件名后面附上一個字符以說明該文件的類型,“*”表示可執(zhí)行的普通文 件;“/”表示目錄;“@”表示符號鏈接;“l”表示FIFOS;“=”表示套接字。
2.cd命令
格式:cd [目錄名稱]
常用選項:
cd .. 返回上一級目錄。
cd ../.. 將當(dāng)前目錄向上移動兩級。
cd - 返回最近訪問目錄。
3.pwd命令
格式: pwd
功能:顯示出當(dāng)前工作目錄的絕對路徑。
相關(guān)閱讀:Linux主要特性
完全兼容POSIX1.0標(biāo)準(zhǔn)
這使得可以在Linux下通過相應(yīng)的模擬器運(yùn)行常見的DOS、Windows的程序。這為用戶從Windows轉(zhuǎn)到Linux奠定了基礎(chǔ)。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運(yùn)行,這一點(diǎn)就消除了他們的疑慮。
多用戶、多任務(wù)
Linux支持多用戶,各個用戶對于自己的文件設(shè)備有自己特殊的權(quán)利,保證了各用戶之間互不影響。多任務(wù)則是現(xiàn)在電腦最主要的一個特點(diǎn),Linux可以使多個程序同時并獨(dú)立地運(yùn)行。
良好的界面
Linux同時具有字符界面和圖形界面。在字符界面用戶可以通過鍵盤輸入相應(yīng)的指令來進(jìn)行操作。它同時也提供了類似Windows圖形界面的X-Window系統(tǒng),用戶可以使用鼠標(biāo)對其進(jìn)行操作。在X-Window環(huán)境中就和在Windows中相似,可以說是一個Linux版的Windows。
支持多種平臺
Linux可以運(yùn)行在多種硬件平臺上,如具有x86、680x0、SPARC、Alpha等處理器的平臺。此外Linux還是一種嵌入式操作系統(tǒng),可以運(yùn)行在掌上電腦、機(jī)頂盒或游戲機(jī)上。2001年1月份發(fā)布的Linux 2.4版內(nèi)核已經(jīng)能夠完全支持Intel 64位芯片架構(gòu)。同時Linux也支持多處理器技術(shù)。多個處理器同時工作,使系統(tǒng)性能大大提高。
同一個linux有不同版本的桌面,你可以都試試,就能感覺到kde和gnome的不一樣了,比如 ubuntu 是gnome桌面,Kubuntu的就是kde桌面
linux圖形界面相關(guān)文章: