Linux圖形界面:X,X11,XFREE,WM,KDE,GNOME的關係

關於linux圖形界面的基本知識
不少LINUX初學者分不清楚linux和X之間,X和Xfree86之間,X和KDE,GNOME等之間是什麼關係.經常混淆概念,我想以比較易於理解 的方式說明一下X,X11,XFREE,WM,KDE,GNOME等之間的關係.因爲本人水平有限可能存在錯誤,請高手指正.    

一,linux自己沒有圖形界面,linux如今的圖形界面的實現只是linux下的應用程序實現的.    
圖形界面並非linux的一部分,linux只是一個基於命令行的操做系統,linux和Xfree的關係就至關於當年的DOS和WINDOWS3.0 同樣,windows3.0不是獨立的操做系統,它只是DOS的擴充,是DOS下的應用程序級別的系統,不是獨立的操做系統,一樣XFree只是 linux   下的一個應用程序而已.不是系統的一部分,可是X的存在能夠方便用戶使用電腦.WINDOWS95及之後的版本就不同了,他們的圖形界面是操做系統的一 部分,圖形界面在系統內核中就實現了,沒有了圖形界面windows就不成爲windows了,但linux卻不同,沒有圖形界面linux仍是   linux,不少裝linux的WEB服務器就根本不裝X服務器.這也WINDOWS和linux的重要區別之一.    

二,X是協議,不是具體的某個軟件:    
X   是協議,就像HTTP協議,IP協議同樣.這個概念不少初學者甚至學習LINUX有必定時間的人都混淆,一個基於X的應用程序須要運行並顯示內容時他就聯 接到X服務器,開始用X協議和服務器交談.好比一個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協議來比較:    
協議是HTTP   (hyper   text   transmission   protocol)    
實現這個協議的經常使用服務器有:apache   IIS   等    
請求這些服務器傳輸文件的客戶有:IE   ,MOZILLA   ,NETSCAPE等.    
協議是X    
實現這個協議的經常使用服務器有Xfree86   ,Xorg   ,Xnest等    
請求這些服務器來完成顯示任務的客戶:全部的X應用程序.    
只不過HTTP協議的服務器和客戶端一般都在兩臺不一樣的電腦(服務器和客戶機)之間來實現,因此通常人對這個比較容易理解.而X協議的服務器和客戶端程序 一般在同一臺電腦上,所以不少用戶都感到對此很難理解.既然是協議,那麼確定和平臺無關的,所以可讓X應用程序顯示在任何裝有X服務器的遠程計算機上. 甚至顯示在裝有Xnest服務器的windows系統上.只不過在大多數狀況下,X應用程序都用本機的X服務器,而後X服務器將顯示結果輸出到本機的顯示 器.這也是不少人不理解X是一種協議的緣由.    

四,X和X11R6又是什麼關係?    
不知道初學者有沒有注意到/usr/X11R6這個目錄,這是XFree的默認安裝目錄    
X11R6   其實是   X   Protocol   version   11   Release   6    
(X協議第11版第六次發行)的意思,就是說目前用的X協議是第11版的,而後通過了6次小的修正.不一樣版本的X協議是不能通訊的.就象咱們如今IPV4和IPV6不能通訊同樣,不過不用擔憂,如今的X服務器軟件和X應用程序都遵循X11R6.    
另外XFree86   3.3.6   XFree86   4.3.6   等這些版本是實現X協議的軟件XFree86的版本號.這是初學者常常高混淆的概念.    
協議版本和實現協議的軟件的版本--這兩個概念的區別你分清楚了嗎?    

五,X服務器和WM(window   manager   窗口管理器)之間是什麼關係.    
平時你們起動圖形界面是怎麼啓動的呢?    
若是你是一開己就進入圖形界面那就太遺憾了.應爲你錯過了瞭解X服務器起動過程的好時機.不過不要緊.你打開一個XTERM輸入:    
init   3    
就能夠安全的回到字符界面.    
好了,等作完如下實驗你就徹底明白X和WM(window   manager   窗口管理器)之間是什麼關係了.    
先輸入如下命令:    
#startx    
起動圖形界面,你看到的是一個和平時使用同樣的完整的圖形界面操做環境.    
你能夠最大化,最小化,移動,關閉窗口等.    
按ctrl+alt+backspace反回字符界面.    
輸入:    
#xinit    
再次啓動圖形界面,你看到了什麼,你看到一個XTERM.並且不能移動.可是你能夠在這個XTERM中輸入命令打開X應用程序,若是我輸入:    
#mozilla    
打開瀏覽器,你看到的瀏覽器和平時有什麼不一樣嗎?他在屏幕中間,不能移動,不能最小化,不能最大化,沒有邊框.    
爲何一樣一個X應用程序會有這樣的不一樣呢?由於咱們用startx起動圖形界面的時候同時也啓動了一個WM(即窗口管理器),若是你用KDE就起動了KDE,若是你用GNOME就起動了GNOME.可是你用xinit起動圖形界面的時候卻沒有起動WM.    
如今你明白窗口管理器的做用了嗎?他的做用就是最大化,最小化,移動,關閉窗口等.而這些不是X服務器來負責完成的.    
若是你用xinit起動圖形界面並在xterm中輸入twm,看看會有什麼?    
xterm被加上了一個邊框,你能夠經過這個邊框移動,最大化,最小化這個xterm,twm就是XFree86中自帶的窗口管理器,是一個比較簡陋的最簡單的窗口管理器,可是他具備窗口管理器的所有特徵.    
若是你不輸入twm而輸入gnome-session就能夠起動GNOME    
或者輸入startkde起動KDE.    
經過以上的實驗你就能夠清楚的明白他們之間的關係.    
 
六,關於KDE和GNOME    
KDE   和GNOME是LINUX裏最經常使用的圖形界面操做環境,他們不只僅是一個窗口管理器那麼簡單,   KDE是K   Desktop   Environment   的縮寫.他不只是一個窗口管理器,還有不少配套的應用軟件和方便使用的桌面環境,好比任務欄,開始菜單,桌面圖標等等.    
GNOME是GNU   Network   Object   Model   Environment   的縮寫.和KDE同樣,也是一個功能強大的綜合環境.    
另外在其它UNIX系統中,經常使用CDE做爲這樣一個環境.    
其它的小型窗口管理器有:    
window   maker,after   step,blackbox,fvwm,fvwm2,等等都是經常使用的優秀窗口管理器.REDHAT9中有   window   maker   可是默認不安裝,你們能夠裝來試試.只要xinit再wmaker&就能夠用windowmaker了.    
七,linux圖形界面層次關係總結    
linux自己--> X服務器 <-[經過X協議交談]-> 窗口管理器(綜合桌面環境)--> X應用程序.linux

相關文章
相關標籤/搜索