unix/linux中圖形界面那些事

  咱們知道unix/linux剛開始的時候是沒有圖形界面的,隨着時代的發展,排版、製圖、多媒體應用愈來愈廣泛了,這些需求都須要用到圖形界面(Graphical User Interface)。爲此,MIT在1984年開發出了X window system,X在字母表中是W(indows)的下一個字母,寓意「下一代GUI」的意思。目前爲止,unix/linux上幾乎全部的發行版都採用X window system來做爲本身的圖形界面,它已經成爲事實上的unix/linux圖形界面標準。php

  X window system,又名X,X11(如今主要的X window system大都基於其第11個版本),是一個可以跨網絡和操做系統平臺的圖形界面。開發者在開發x時就但願,這個窗口界面不要與硬件有強烈的相關性,這是由於若是與硬件的相關性高,那就等於開發一個操做系統了,如此一來其應用性就要受到限制。故此,x是一套軟件體系,而不是操做系統中的組成部分,就像瀏覽器不是操做系統的組成部分同樣(固然微軟在與網景幹仗時可無論這些)。html

X的軟件架構

  如上圖所示,X使用服務器-客戶端模型:每一個須要顯示圖形界面的主機都要運行一個x server,它負責主機中各個與圖形界面有關硬件設備的管理,如在顯示器中顯示輸出,從鼠標、鍵盤接受輸入等。同時與不一樣的客戶端程序(x client)通訊,x client指那些須要圖形界面的應用程序,如瀏覽器、終端、視頻播放器等。這裏須要解釋一下,這裏的server,client術語是從應用的角度而不是以用戶的角度來講的:X server利用本身對硬件的掌控爲應用提供顯示界面以及處理輸入輸出等服務,因此說它是服務器端,而各類應用須要使用x server提供的這些服務,他們就是客戶端了。linux

  x server和x client之間所使用的通訊協議對網絡來講是透明的,因此client和server能夠運行在相同機器上,也能夠運行在不一樣機器上,甚至機器自己的硬件架構和操做系統也能夠不同(如windows上的xmanager就是一個x server,它能夠遠程鏈接linux上的主機爲linux上的x client提供服務,有興趣的童鞋能夠試下)。shell

   說完了x的軟件架構,下面咱們就來講說x中其餘幾個概念。windows

1. X Display Manager(XDM)

  display manager,又稱login manager,是linux在boot進程完成以後啓動的一個用於用戶身份認證的圖形界面,至關於文本模式下啓動時讓咱們輸入用戶名和密碼的shell。比較常見的有GNOME的gdm,KDE的kdm等。瀏覽器

  

  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再經過本身管理的輸出設備如顯示屏等把結果顯示出來,如此種種能夠參看下圖。網絡

  咱們能夠發現,在第二種狀況下,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 systemGnome 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. app

參考連接: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

相關文章
相關標籤/搜索