第 19 章

69
1 著著著著著 © 著著著著著著著著著著 第 19 第 X Window 第第

Upload: uma-wagner

Post on 01-Jan-2016

48 views

Category:

Documents


2 download

DESCRIPTION

第 19 章. X Window 系統. 前言. 現今的作業系統絕大多數都提供了圖形化的介面 , 在 Linux 底下 , 使用的圖形介面是 X Window System 。透過 X Window System, 使用者可以如同在 Windows 一般 , 用滑鼠指指點點 , 輕鬆使用 Linux 。 此外 , X Window System 的 client/server 架構 , 更讓這個圖形介面系統有更多不同的發展。. 本章提要. 19-1 X Window 簡介 19-2 X Window 的架構及運作原理 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第  19  章

1著作權所有 © 旗標出版股份有限公司

第 19 章X Window 系統

Page 2: 第  19  章

2

前言 現今的作業系統絕大多數都提供了圖形化

的介面 , 在 Linux 底下 , 使用的圖形介面是 X Window System 。透過 X Window System, 使用者可以如同在 Windows 一般 , 用滑鼠指指點點 , 輕鬆使用 Linux 。

此外 , X Window System 的 client/server 架構 , 更讓這個圖形介面系統有更多不同的發展。

Page 3: 第  19  章

3

本章提要 19-1 X Window 簡介 19-2 X Window 的架構及運作原理 19-3 視窗環境簡介

Page 4: 第  19  章

4

19-1 X Window 簡介 圖形使用者介面的理念 , 創始於全錄 (Xero

x) 公司的實驗室 , 最早出現在 1970 年代末期 , 但第一個將這理念普及化的公司則是蘋果電腦。

X.Org 基金會 X Window 的稱呼

Page 5: 第  19  章

5

X.Org 基金會 X Window System 出現於 1984 年 , 由麻

省理工學院與 DEC (DigitalEquipment Corporation) 共同進行雅典娜 (Athena) 計畫開發 , 後來則成為 Unix 環境圖形介面的標準。

Page 6: 第  19  章

6

X.Org 基金會 隨著個人電腦的普及 , Intel x86 架構的機器

日益增多 , 為了在 x86 架構的平台上發展 X Window System, 1992 年 4 名相關研究人員成立了 XFree86 計畫 ("86" 為 x86 架構的意思 , 實際上其支援多種作業平台 ), 而其推出的 X WindowSystem 被所有 Linux 發行版共同採用 , 成為 Linux 的標準圖形介面。

Page 7: 第  19  章

7

X.Org 基金會 不過在 2003 年底時 , 由於 XFree86 變更

其授權的內容 , 引發許多人質疑新授權是否符合自由軟體的精神 , 同時更造成內部團隊因理念不合而分裂。

Page 8: 第  19  章

8

X.Org 基金會 隨後在 2004 年 1 月 , 出走的 XFree86 成

員與 X 協會 (X Consortium) 合作 , 成立X.Org 基金會 , 也推出了可以在 x86 平台上運作的 X Window System 。依筆者撰文時的情勢而言 , X.Org 基金會的 X Window System 獲得了較多 Linux 發行版的支持 , 有機會成為 Linux 圖形介面未來的主流。

目前 X.Org 基金會的 XWindow System 的最新版本為 X11R6.7 。

Page 9: 第  19  章

9

X Window 的稱呼 X Window System 的稱呼有下列 3 種:

X 或 X Window :這是最常被使用的兩個名字 , 可視為是 X Window System 的簡稱。

X11 或 X11R6 : X11 指的是 X Window System 的第 11 版 , 而 X11R6 則是 X Window System 的第 11 版 / 第 6 發行版。目前最新的版本為 X11R6.7 。

X Window System :這是正式的稱呼。

Page 10: 第  19  章

10

19-2 X Window 的架構及 運作原理 X Window System 採用 X client 與 X serve

r 的架構 , 但這與一般架設伺服器所稱的 client/server 架構不大一樣。

在一般伺服器的 client/server 中 , 我們稱提供服務的一方為 server ( 例如 SQL server 、WWW server 或 FTP server) , 而使用服務的一方為 client 。因此通常使用者是在 client 端操作 , 以存取 server 端的資源:

Page 11: 第  19  章

11

X Window 的架構及運作原理

在 X Window System 中 , X client 是應用程式執行所在的一方 , 而 X server 是顯示應用程式視窗的一方:

Page 12: 第  19  章

12

X Window 的架構及運作原理

那麼此架構中 , X client 與 X server 是如何分工及溝通的呢?以下我們將分別說明。

Page 13: 第  19  章

13

X Window 的架構及運作原理 X Window System 的 client/server 架構 X Window System 架構的優點

Page 14: 第  19  章

14

X Window System 的 client/server 架構 X Window System 採用了 client/server 模

式 , 其組成可分為 X server 、 Xclient 與 X protocol 等 3 部分 , 以下分別說明它們的角色與關係。 X server :處理輸入輸出訊息 X client :執行應用程式大部分的運算功能 X protocol : X server 與 X client 的溝通管道 本尊與分身?

Page 15: 第  19  章

15

X server :處理輸入輸出訊息 X server 主要是控制輸出及輸入設備的程式 ,

並維護相關資源 ( 如顏色、字型等 ) 。 它接受輸入設備 ( 如滑鼠、鍵盤 ) 的訊息 , 並將這些訊息傳送給 X client 。

而 X client 所傳來的訊息 , 也由 X server 負責輸出到輸出設備 (螢幕 ) 上。

Page 16: 第  19  章

16

X server :處理輸入輸出訊息

Page 17: 第  19  章

17

X server :處理輸入輸出訊息 X server 傳遞給 X client 的訊息稱之為 Ev

ent, 主要是有關於鍵盤輸入 , 滑鼠移動或按下 , 和視窗狀態異動 ( 如視窗顯示的區域有所變化 ) 的訊息。

而 Xclient 傳送給 X server 的訊息則稱為 Request, 主要是要求 X server 建立視窗、更改視窗大小位置、或在視窗上繪圖或輸出文字。

Page 18: 第  19  章

18

X server :處理輸入輸出訊息要請您注意的是 , X server 僅傳遞輸入設備

所輸入的訊息 , 但並不加以解釋 , 解釋的工作由 X client 負責。

也就是說 , 當使用者按下鍵盤按鍵 , 或移動、按下滑鼠時 , X server 只將使用者按了哪些鍵、將滑鼠從哪裡移動到哪裡的訊息 ,用 Event 傳遞給 X client, 由 X client 去解釋這些動作的意義。

Page 19: 第  19  章

19

X server :處理輸入輸出訊息 而由於現今的作業系統都具有多工的機制 ,

因此 X server 能同時接受多個 X client 的 Request 。這也意謂著我們可在 X Window System 的視窗環境中執行多個 X client 應用程式 , 而每個應用程式也都可以擁有自己的視窗 , 並同時間被執行。

例如您可以開啟一個視窗執行郵件程式來寫情書 , 而另一個視窗用來播放 MP3 音樂。

Page 20: 第  19  章

20

X server :處理輸入輸出訊息

Page 21: 第  19  章

21

X server :處理輸入輸出訊息 由於 X server 主要是負責螢幕的輸出 , 所

以也常被稱為顯示伺服器 (Display Server) , 與顯示卡的支援與否息息相關。

因此當我們使用較新的顯示卡 ( 或其他輸出入硬體 ), 卻發現原來的 X server 無法支援時 , 就需要安裝新版本的 X server 來配合:

Page 22: 第  19  章

22

X server :處理輸入輸出訊息

Page 23: 第  19  章

23

X client :執行應用程式 大部分的運算功能 X client 主要是負責應用程式運算處理的部

分:如信件處理程式收發電子郵件的程式部分 , 與資料庫程式處理資料的程式部分。如前面所述 , X client 並不接受使用者輸入的訊息 , 這些輸入訊息由 X server 接受後 , 以 Event 的形式傳遞給 X client 。而 X client 針對所收到的 Event 進行程式運算後 , 如需要輸出到螢幕上 , 或更改畫面的顯示外觀 , 再發出 Request 傳送給 X server :

Page 24: 第  19  章

24

X client :執行應用程式 大部分的運算功能

Page 25: 第  19  章

25

X client :執行應用程式 大部分的運算功能雖然在一般的情況下 , 我們都在同一台電

腦執行 X client 與 X server 。但 X client 與 X server 也可以分別在不同的電腦上執行 , 使用者可將遠端電腦執行的應用程式顯示在本地電腦的螢幕上 , 程式開發者完全不需要為此重新撰寫及編譯 X client 應用程式。

也因為在 X Window System 的架構中 , X client 是與硬體無關的 , 所以更換顯示卡等硬體時 , 不需重新編寫 X client 程式。

Page 26: 第  19  章

26

X protocol : X server 與 X client 的溝通管道 在人類社會裏 , 人跟人之間要能互相溝通

及傳達訊息 , 需要有共通的語言。既然 X client 與 X server 要在 X Window

System 裏相互傳遞訊息 , 他們也同樣需要一個共通的語言 , 那就是 - X protocol (X 協定 ) :

Page 27: 第  19  章

27

X protocol : X server 與 X client 的溝通管道 依 X client 與 X server 相對位置的不同 ,

可將 X protocol 分為以下二種情況: X client 與 X server 在同一台電腦:此為最常見的情況 , X client 與 X server利用系統內部已有的溝通機制來傳遞訊息。如共用記憶體 (shared memory) 、 Pipes 、 Unix Sockets... 等方式。

Page 28: 第  19  章

28

X protocol : X server 與 X client 的溝通管道

X client 與 X server 在不同電腦: X client 與 X server 之間的通訊透過外部網路相連。這兩台電腦不需要有相同的硬體平台及作業系統 , 也不限定要架設在何種網路環境之上 , 只要它們能用 X protocol 相互溝通即可。 X protocol支援了現今常用的通訊網路協定如 TCP/IP 、 OSI 、 DECnet... 等;而在硬體層 (Physical Level) 協定方面 , 也支援了乙太網路、 Token Ring 、X.25 、序列埠 ... 等。

Page 29: 第  19  章

29

X protocol : X server 與 X client 的溝通管道

基於 X Window System 網路架構的特性 , X client 可以跟 X server 分別在不同的電腦上執行 , 因此可在本地電腦執行 X server, 而在遠端執行 X client 。

Page 30: 第  19  章

30

X protocol : X server 與 X client 的溝通管道 此時使用者透過本地的滑鼠及鍵盤下達操

作命令 , 然後由本地的 X server 將使用者的操作訊息傳送給遠端的 X client 。

X client 針對使用者的動作及需求運算後 , 將要顯示的結果透過網路傳回給本地的 X server 。

最後 X server再將結果顯示到螢幕上:

Page 31: 第  19  章

31

X protocol : X server 與 X client 的溝通管道

Page 32: 第  19  章

32

X protocol : X server 與 X client 的溝通管道

1. 使用者透過滑鼠及鍵盤對 X server 下達操作命令。

2. X server 利用 Event 傳送使用者操作訊息給 X client 。

3. X client 進行程式運算。4. X client 利用 Request 傳回所要顯示的結果。5. X server 將結果顯示在螢幕上。

Page 33: 第  19  章

33

本尊與分身?宗教上的神明常有本尊與分身的能力 , 分身四處遠遊及顯像 , 接受各地信徒的祈求;本尊則在其居處思考處理的方式。仔細想想 , 這種運作方式是不是跟 X Window System 的運作原理很像呢?

X server 如同分身負責顯示及接受使用者的輸入訊息 , X client 則像本尊處理程式運算的部分:

Page 34: 第  19  章

34

本尊與分身?

Page 35: 第  19  章

35

X Window System 架構的優點 X Window System 將 X client 與 X server

分開來 , 其優點有以下幾點。整合不同的作業平台:妥善利用網路上的硬體資源:妥善利用網路上的軟體資源適合教學等具特殊需求的工作環境 透過網路執行 X Window System 真的比較有效率嗎?

方便程式開發者的網路通透性

Page 36: 第  19  章

36

整合不同的作業平台: 由於 X Window System 並不限制所能執行

的硬體平台及作業系統 , 而 X client 與 X server 也不需要在同一部電腦才能互相溝通。因此我們可將 Xclient 與 X server 移植到不同硬體平台及作業系統 , 並在不同的作業平台上分別執行。利用這點 , 可充分地整合現有的各種作業平台。尤其在一個具有多作業平台的機構裏 , 此種架構特別有用:

Page 37: 第  19  章

37

整合不同的作業平台:

Page 38: 第  19  章

38

整合不同的作業平台:既然 X Window System 不受所執行的作業

平台限制 , 因此我們也可以在 MS Windows 上安裝 X server, 以接受遠端 Linux 主機的 X client 所傳送過來的 Request :

Page 39: 第  19  章

39

整合不同的作業平台:

Page 40: 第  19  章

40

妥善利用網路上的硬體資源: 由於 X server 只負責螢幕顯示 , 及接受使

用者的輸入訊息 , 工作負荷量不大 , 因此我們可將執行效能較差電腦當成 X server 顯示之用。

相反的 , 由於 Xclient 需要負擔應用程式大部分運算的功能 , 所以需要功能較強的電腦來執行:

Page 41: 第  19  章

41

妥善利用網路上的硬體資源:

Page 42: 第  19  章

42

妥善利用網路上的硬體資源:當然我們也可以同時在不同的遠端電腦分

別執行 X client 應用程式 , 然後將這些結果全部輸出到本地電腦的螢幕上:

Page 43: 第  19  章

43

妥善利用網路上的硬體資源:甚至 , 可以同時在遠端及本地電腦執行不

同的 X client 應用程式 , 並將這些結果全部顯示在本地電腦的螢幕上:

Page 44: 第  19  章

44

妥善利用網路上的硬體資源: X Window System 的 client/server 架構 ,

使我們可以在遠端執行 X client 的應用程式 , 然後將結果顯示在本地電腦的螢幕上。

利用此特性 , 對於那些本地電腦沒有的軟體 ( 可能因為授權因素 , 或此軟體根本沒有本地電腦作業系統的版本 ), 可以透過網路在遠端執行 , 使得軟體資源能充分利用:

Page 45: 第  19  章

45

妥善利用網路上的硬體資源:

Page 46: 第  19  章

46

適合教學等具特殊需求 的工作環境 X client/server 的架構在某些特殊場合裏特

別有用。 例如在公司或學校裏 , 系統管理者想要同時

存取多台電腦;或者在教學環境裏 , 老師可將教學內容直接顯示在學生的螢幕上 , 而學生也可以將學習結果傳回到老師的螢幕:

Page 47: 第  19  章

47

適合教學等具特殊需求 的工作環境

Page 48: 第  19  章

48

透過網路執行 X Window System 真的比較有效率嗎?能在遠端執行 X client 是 X Window Syste

m 的的一個重要特色 , 您或許會懷疑透過網路來執行 X client 真的會提升程式執行效率嗎?

一般而言在下列條件下 , 在遠端執行 X client 將有明顯的效率提升:網路頻寬較大。遠端電腦有較好的硬體配備 , 如較快的 CPU 、

更多的記憶體 , 更大磁碟空間 ... 等。

Page 49: 第  19  章

49

透過網路執行 X Window System 真的比較有效率嗎?

遠端電腦是閒置的 , 或本地電腦工作負擔較重。 所執行的程式需要較多的運算時間 , 並且不需要常常將結果輸出到在螢幕上。如果程式的輸出結果是個影像圖 , 此時只能用點陣圖的方式傳送 Request, 無法以物件方式傳送 , 就不適合在遠端執行。

Page 50: 第  19  章

50

方便程式開發者的網路通透性 在一般的系統裏 , 如果要將單機版的程式改成能在網路環境執行 , 程式開發者需要為網路版的軟體改寫程式 , 並重新編譯。

Page 51: 第  19  章

51

方便程式開發者的網路通透性然而在 X Window System 裏 , 程式開發者不需要

更改程式碼 , 就能讓程式可以在單機執行 , 也可以在網路環境裏的 X client 執行;而使用者也不需要知道應用程式實際執行的地方是在本地或遠端 , 甚至也感覺不出差異點 , 這就是 X Window System 具有的網路通透性 (Network Transparency) 。

若需要更多 X Windows 的訊息 , 可參考 XFree86 的網站 http://www.xfree86.org, 也可以至 http://www.opengroup.org/tech/desktop/x-window-system 參閱相關資料。

Page 52: 第  19  章

52

19-3 視窗環境簡介雖然 X Window System 提供所有 Unix 系

統一個標準的圖形作業環境 , 卻沒有界定該如何管理出現在畫面中的視窗 , 因此在 Linux 上便逐漸發展出多種視窗管理程式及桌面環境 , 以提供各式各樣的視窗環境。

簡單的說 , 視窗管理程式提供使用者使用 X Window System 的介面 , 也是一種 X client 。

Page 53: 第  19  章

53

視窗環境簡介 視窗管理程式桌面環境 如何進入 X Window 執行 startx 指令的小技巧

Page 54: 第  19  章

54

視窗管理程式顧名思義 , 視窗管理程式 (Window Manage

r) 就是 『用來管理視窗的程式』 , 舉凡視窗與使用者間的互動作業 ( 如開啟、關閉或移動視窗等 ), 以及視窗所呈現出來的外觀樣式 ( 視窗之標題列、選單、按鈕與邊框等等 ), 都歸視窗管理程式所掌控。

Page 55: 第  19  章

55

視窗管理程式 我們在前一節中說過 , X Window System 本身僅提供建立介面的準則 , 比如說開啟新視窗、回應透過標準輸入設備 ( 如鍵盤或滑鼠 ) 所輸入的資料 ... 等 , 但並不包含操作視窗的使用者介面。

Page 56: 第  19  章

56

視窗管理程式 視窗管理程式則剛好與其相輔相成 , 它負責管理所有出現在畫面上的視窗 , 畫面上看得見的任何圖形 , 都歸視窗管理程式負責。

X Window System 與視窗管理程式二者架構起圖形使用者介面 , 並能依照使用者的使用習慣或喜好 , 隨時更換操作介面 , 讓使用者在便利的作業環境下愉快地工作。

Page 57: 第  19  章

57

視窗管理程式 TWM 視窗管理程式是目前大多數 Linux

發行版會內建的一個視窗管理程式 , 其優點在於輕巧簡便 , 與稍後要介紹的桌面環境相較 , 雖然沒有美觀、絢麗的畫面 , 但可大幅節省系統資源。

Page 58: 第  19  章

58

桌面環境雖然視窗管理程式決定視窗所呈現的外觀 , 並掌控與使用者間的互動作業。

不過舉凡桌布、圖示、字體、色彩的設定 , 以及檔案與系統的管理等等 , 在操作上都不方便。例如:使用者雖可依喜好修改選項、管理檔案和系統 , 但是卻需要採用手動方式自行編修設定檔;檔案與系統的管理有輔助的工具 , 但操作介面大多過於簡陋 , 便利性十分有限 , 導致作業效率大打折扣。

Page 59: 第  19  章

59

桌面環境 有鑑於此 , 一些組織開始替 X Window Syst

em 撰寫各類系統工具與公用程式 , 讓使用者能夠透過這些工具程式 , 以簡便的方式完成更改設定、管理系統、監控網路等工作。

這些程式逐漸被一一收集、組合起來 , 形成完整的工具套件:

Page 60: 第  19  章

60

桌面環境小從簡易的文書編輯軟體、使用者帳號管

理、磁碟空間限制、網路設定與管理、 E-mail 程式、多媒體播放、遊戲、看圖程式 ... 等等 , 大到影像處理、甚至整套辦公室套裝軟體 , 應有盡有。這些程式的集合 , 就是一種桌面環境。

Page 61: 第  19  章

61

桌面環境 由於上述環境架構在以網路為主的 Unix

與 Linux 作業系統上 , 功能繁多且範圍廣大 , 因而有人稱作網路物件模型環境 , 我們在這裡通稱為桌面環境。每種桌面環境都有不同的特性和外觀 , 但其目的都是要讓使用者在操作上更得心應手。所以要採用哪一種桌面環境 , 視個人的習慣和喜好決定即可。

http://xwinman.org 提供了目前常見的視窗管理程式與桌面環境的列表與簡介。

Page 62: 第  19  章

62

桌面環境 目前在 Linux 上最常見到的桌面環境有以

下 2 種: K 桌面環境 (K Desktop Environment, KDE) :

KDE 有屬於自己的視窗管理程式、檔案管理員、網路工具程式、多媒體應用程式 ... 等。 KDE 在外觀上非常亮麗搶眼 , 鮮少有圖形介面能與之一較長短 , Mandrake Linux 預設的桌面環境即為 KDE 。有關 KDE 的相關資料可參考其官方網站 http://www.kde.org 。

Page 63: 第  19  章

63

桌面環境 GNOME 桌面環境 (GNU Network Object Model

Environment) :它不像 KDE 有許多量身訂做的工具程式 , GNOME 比較偏向整合既有的 XWindow System 應用程式 , 本身並不內建任何視窗管理程式 , 而是採用搭配其他視窗管理程式的方式 , 讓使用者得以在其中挑選最順手的一種來使用。 Fedora Core 發行版預設的桌面環境為 GNOME 。更進一步的資料請見其官方網站 http://www.gnome.org 。

Page 64: 第  19  章

64

桌面環境當然除了上述兩個重量級的桌面環境外 ,

也有較不耗費系統資源的選擇 , 例如 Xfce 就是一個輕量級的桌面環境。其所耗用的系統資源相當少 , 但是在簡約化的設計考量下 , 又不犧牲操作的上的方便及易用性。因此若您的電腦等級較低 ,又希望有一個方便有效率的桌面環境 , 則可以考慮試試看 Xfce 桌面環境 , 其官方網站為 http:// www.xfce.org 。

Page 65: 第  19  章

65

如何進入 X Window

依各發行版及安裝時所選擇的安裝項目不同 , 完成安裝後 , 預設可能直接進入圖形模式 , 也可能不啟動 X Window System 而進入文字模式的登入畫面。

開機後是否自動啟動 X Window System, 由 /etc/inittab 檔中 "id:5:initdefault:" 項目決定:

Page 66: 第  19  章

66

如何進入 X Window

Page 67: 第  19  章

67

如何進入 X Window

修改完 /etc/inittab 檔後 , 要記得重新開機 , 所作的設定才會生效。

若設定開機進入文字模式 , 那麼登入系統後要自行啟動 X WindowSystem ?很簡單 , 執行 startx 指令 , 或以 root 帳號執行 gdm 指令 ( 或 kdm 指令 )便可啟動 X Window System, 進入圖形模式。

Page 68: 第  19  章

68

如何進入 X Window

gdm 與 kdm 分別是 GNOME 及 KDE 桌面環境的登入管理程式。

如果執行 startx 指令卻無法成功啟動 X Window System, 請重新設定 X Window System 環境。

Page 69: 第  19  章

69

執行 startx 指令的小技巧 如果原本已經執行了 X Window System, 卻想啟動第 2 個 X Window System, 則可在文字模式下執行 startx 時 , 加上 "-- :1" 參數。依此類推 , 若想啟動第 3 個 X Window System, 則加上 "-- :2":