歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux入門學習教程:X Window究竟是什麼

Linux入門學習教程:X Window究竟是什麼

日期:2017/2/28 14:22:18   编辑:Linux教程

  大名鼎鼎的X Window大家肯定不陌生。都知道它是Unix/Linux下面的窗口系統,也都知道它基於Server/Clinet架構。在網上隨便搜一搜,也可以找到不少X Window的介紹。有不少文章為了給用戶留一個直觀的印象,往往先讓系統進入純文本界面,然後使用startx來啟動圖形界面,或者直接使用X來啟動X Server,再然後運行一個xterm來做示范。我覺得以上這些文章對X Window的理解有限,不夠深入,而且也不夠新。所以,我這裡寫一篇《X Window究竟是什麼》,以最新的Ubuntu-14.04 Desktop為例,展示如何學習X Window。

  先說一點題外話。在上一篇《打造屬於自己的Vim》發表後,評論中有人讓共享一下配置文件。當時我說:配置文件又不長,自己照著圖片敲一下代碼嘛。結果這個“照著圖片敲代碼”的事情我今天自己干了一遍,好在沒花多少時間,幾分鐘而已。原因是因為我今天折騰X Window的時候,把系統給掛掉了,然後重裝系統,然後,就只好再設置一遍Vim了。

了解自己機器上的X Window

  X Window其實是一種規范,它有很多不同的實現,在Linux系統下最流行的是實現Xorg和XFree86,微軟Windows系統下也有X Window的實現,蘋果的Mac也是X Window的一種。要了解自己機器上運行的X Window究竟是哪一個,可以使用查看進程的ps命令,如下圖:

  從上圖可以看出,Ubuntu 14.04使用的X Window是Xorg。如果使用ps -ef命令,還可以看到Xorg運行時的命令行參數。

  想了解X Window,下面這些文檔需要看一遍先:

  下面來說一下也許是眾所周知的基礎知識:X Window是一個分層的架構,它分為Serve和Client。X Server負責圖形界面的顯示,(也負責用戶的輸入),而Client程序需要連接到X Server,然後請求X Server繪制圖形界面,同時從X Server接受用戶的輸入。在桌面系統上,X Server和Client程序往往安裝在同一台機器上,日常使用基本感覺不到它是分層的。但是很顯然,X Server和Client也可以分別運行在不同的機器上,在一台機器上運行程序,而在另外一台機器上顯示圖形界面。

  X Window中的Server和Client的概念和我們平時接觸到的“Server/Client”概念剛好相反。很多熟悉Internet原理的人,第一次接觸X Window的這兩個概念都會搞錯。比如,我在一台本地機器上運行Ubuntu 14.04桌面版,而在另外一台遠程機器上運行CentOS 5.10(純字符界面),當我用ssh從Ubuntu連接到CentOS的時候,Ubuntu是Client,而CentOS是Server。在X Window中,Server偏偏是我面前的這台Ubuntu,X Server運行在Ubuntu上。我可以在CentOS中運行GVim,但是窗口顯示在Ubuntu中,這時,GVim是一個Client程序,它在遠程機器上運行,而它的窗口顯示在本地。

理解display和虛擬控制台

  前面提到網上很多介紹X Window的文章都是先讓系統進入字符界面,然後手動啟動一個X Server。其實這完全沒有必要,因為在同一台機器上完全可以運行多個X Server,只需要讓每個X Server的display不同即可。那麼display究竟是什麼?

  在X Window中,可以通過hostname:display_number.screen_number來指定一個屏幕。可以這樣理解:一台計算機可以有多個display,一個display可以有多個屏幕。所以,display相當於是計算機配備的一套輸入輸出設備,一般情況下,一台電腦只配一套鍵盤鼠標和一個顯示器,特殊情況下,可以配多個顯示器。

  現在問題出來了,我的電腦只有一套鍵盤鼠標和一個顯示器,也就是只有一個display,那又怎麼能運行多個X Server呢?那是因為在Linux中,還有虛擬控制台這樣的高級特性。只需要同時按下Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虛擬控制台中進行切換。在Ubuntu 14.04中,虛擬控制台1到6運行的getty,也就是字符界面,虛擬控制台7運行的是Xorg。(Fedora中不一樣,虛擬控制台1運行的是圖形界面,其它的是字符界面。)

  我們可以直接運行X Server程序來啟動X Server。/usr/bin/X和Xorg都是X Server程序。其實/usr/bin/X是Xorg的符號鏈接,用哪一個都是一樣的。

  啟動X Server的時候可以指定display參數,因為可以省略掉hostname和screen_number,所以可以用:0,:1這樣的格式來指定display。在我的機器上,本來就有一個X Server在運行,display :0已經被占用了,所以我使用sudo X :1 -retro來在display :1上再運行一個X Server,如下圖:

  其中的-retro參數是為了讓X Server的背景顯示為斜紋,否則背景為純黑色,那就看不出來是否啟動了X Server。啟動X Server後的效果如下圖:

  按Ctrl+Alt+F7回到display :0,再用ps命令看一下,會發現系統中有兩個Xorg在運行,一個運行在虛擬控制台7,一個運行在虛擬控制台8。如下圖:

  在新啟動的X Server中運行一個GVim看看效果。運行GVim時,使用-display :1參數指定窗口顯示在新啟動的X Server上,使用-geometry參數指定窗口的大小和位置。然後按Ctrl+Alt+F8切換虛擬控制台,看效果。命令見上圖,程序運行效果見下圖:

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-02/114175p2.htm

Copyright © Linux教程網 All Rights Reserved