天天看點

unix/linux中圖形界面那些事

  我們知道unix/linux剛開始的時候是沒有圖形界面的,随着時代的發展,排版、制圖、多媒體應用越來越普遍了,這些需求都需要用到圖形界面(Graphical User Interface)。為此,MIT在1984年開發出了X window system,X在字母表中是W(indows)的下一個字母,寓意“下一代GUI”的意思。目前為止,unix/linux上幾乎所有的發行版都采用X window system來作為自己的圖形界面,它已經成為事實上的unix/linux圖形界面标準。

  X window system,又名X,X11(現在主要的X window system大都基于其第11個版本),是一個能夠跨網絡和作業系統平台的圖形界面。開發者在開發x時就希望,這個視窗界面不要與硬體有強烈的相關性,這是因為如果與硬體的相關性高,那就等于開發一個作業系統了,如此一來其應用性就要受到限制。故此,x是一套軟體體系,而不是作業系統中的組成部分,就像浏覽器不是作業系統的組成部分一樣(當然微軟在與網景幹仗時可不管這些)。

X的軟體架構

unix/linux中圖形界面那些事

  如上圖所示,X使用伺服器-用戶端模型:每個需要顯示圖形界面的主機都要運作一個x server,它負責主機中各個與圖形界面有關硬體裝置的管理,如在顯示器中顯示輸出,從滑鼠、鍵盤接受輸入等。同時與不同的用戶端程式(x client)通信,x client指那些需要圖形界面的應用程式,如浏覽器、終端、視訊播放器等。這裡需要解釋一下,這裡的server,client術語是從應用的角度而不是以使用者的角度來說的:X server利用自己對硬體的掌控為應用提供顯示界面以及處理輸入輸出等服務,是以說它是伺服器端,而各種應用需要使用x server提供的這些服務,他們就是用戶端了。

  x server和x client之間所使用的通信協定對網絡來說是透明的,是以client和server可以運作在相同機器上,也可以運作在不同機器上,甚至機器本身的硬體架構和作業系統也可以不一樣(如windows上的xmanager就是一個x server,它可以遠端連接配接linux上的主機為linux上的x client提供服務,有興趣的童鞋可以試下)。

   說完了x的軟體架構,下面我們就來說說x中其他幾個概念。

1. X Display Manager(XDM)

  display manager,又稱login manager,是linux在boot程序完成之後啟動的一個用于使用者身份認證的圖形界面,相當于文本模式下啟動時讓我們輸入使用者名和密碼的shell。比較常見的有GNOME的gdm,KDE的kdm等。

  

unix/linux中圖形界面那些事

  display manager可以在本地也可以在遠端主機上啟動。如果在本地啟動,display manager接下來會把x server也啟動起來,這樣就可以在開機時顯示如上圖所示的圖形界面了。

  如果display manager已經在遠端啟動了,我們在本地需要連接配接到遠端的display manager上去,這時x server就用使用XDMCP(X Display Manager Control Protocol)協定連接配接到遠端的display manager,請求開啟一個會話,這樣在本地也就出現了如上圖所示畫面,如果身份認證通過,display manager就退居二線,剩下的就是本地的x server與遠端的x client之間互相交流了:我們通過x server(鍵盤、滑鼠等輸入裝置)把我們的要求發給x client(x client與display manager 運作在同一台機器上),x client運作得到結果并将結果傳回給x server,x server再通過自己管理的輸出裝置如顯示屏等把結果顯示出來,如此種種可以參看下圖。

unix/linux中圖形界面那些事

  我們可以發現,在第二種情況下,x server就相當于圖形化界面的telnet用戶端,而display manager 相當于圖形化界面的telnet服務端,不是麼?:-)

2. GNOME,KDE......

  GNOME和KDE都是運作在unix/linux作業系統之上的一個桌面環境,其中GNOME是基于GTK+ toolkit的(KDE是基于Qt toolkit的),它個性化了自己的界面風格,非常容易辨認,而且由于界面比較nice,已經是最近桌面系統的主流,它主要包括兩大類:

  1.GNOME桌面環境,它包括了一些圖形使用者界面的實作細則,和一些核心圖形界面應用如浏覽器等。

  2.GNOME開發平台,它是一個為linux桌面及移動圖形應用開發者提供的擴充平台,包括相應庫檔案以及開發API等。

  上文所說的GDM就是GNOME的一部分,一旦GDM通過了身份認證請求,它就會啟動GNOME為使用者提供圖形化界面了,當然我們也可以從文本模式中通過startx指令來啟動GNOME。

 3. GNOME與X的差別與聯系

  關于GNOME與X之間的關系,這裡有一篇文章介紹的非常清楚,現摘抄一部分如下,我就不畫蛇添足了:

X11 is the window system. Gnome is a desktop environment. The difference is that Gnome works through X11. Gnome and X11 run on Linux, though, not Windows. 

Basically, X11 is what displays everything. It's the graphical shell that connects you to the operating system. None of the applications you run ever send anything directly to the screen - they need to tell X11 what they want to display and let it do the work for them. 

X11 draws and moves windows and responds to input from the keyboard and mouse. That's pretty much it. Everything else is taken care of by the desktop environment. What that means is that the look and feel of the windows and the way those windows behave are all decided by which desktop environment you're using (Gnome, KDE, XFCE, etc.). 

The desktop environments all have their own graphics libraries (reusable chunks of code) that they use, along with APIs (Application Programming Interfaces) which allow programmers to use those libraries when they create GUI applications. This way programmers don't have to recreate commonly used functions and elements from scratch, and the whole operating system has a more standardized look. 

參考連結:http://en.wikipedia.org/wiki/X_Window_System

     http://en.wikipedia.org/wiki/X_display_manager_(program_type)

     https://wiki.archlinux.org/index.php/Display_Manager

       https://wiki.debian.org/DisplayManager

     http://en.wikipedia.org/wiki/GNOME

     http://stackoverflow.com/questions/17251293/what-is-the-relationship-between-x11-and-gnome 

作者:beanmoon

出處:http://www.cnblogs.com/beanmoon/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。

該文章也同時釋出在我的獨立部落格中-豆月部落格。