X Windows與GNOME,KDE的關係

接觸linux有一段時間了,最近在嘗試debian,下了CD1之後不知道怎麼進不了圖形界面,在網上google了半天,原來自己沒有裝GNOME,也就是桌面環境,安裝的時候碰到幾個概念沒搞清:X Window是什麼?X,X11,以及XFree86跟GNOME,KDE之間都是什麼關係,最後終於在一個論壇上找到一個結果,感覺說的很有道理,回帖者也都認爲是正解,所以把內容轉載過來,希望能夠對有同樣疑問的人有所幫助:
 
關於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,看看會有什麼?    
發佈了22 篇原創文章 · 獲贊 0 · 訪問量 6712
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章