X Window 入門
中央研究院計算中心
ASPAC 計劃 [email protected]
技術報告: 94025
May 25,1994
--------------------------------------------------------------------------------
版權聲明
進入 X Window 的世界
啟動 X Window
X Window 的外觀及專有名詞
幾個簡單的 X 軟體。
結束 X Window
視窗經理簡介
什麼是視窗經理
啟動視窗經理
移動視窗的位置
縮放視窗
圖像化及反圖像化
彈跳式選單
虛擬工作區間
X Window 系統的基本概念
X Window 的特色
X Window 與網路
Client-Server 架構
X Window 的基本成分
X Server
X Client
X Server 與 Client 之間如何交互作用
X Window 上的資源
字型
使用字型前的準備
字型的儲存
顏色
X Window 的標準顏色規格
顏色名稱
預設資源
改變資源的預設值
一些 X Window 上的基本應用軟體
xterm
xman
Window 下的 editors
Emacs
xcoral
aXe
xmailtool
xload
xbiff
xv
gnuplot
xdm
xdm 的工作週期
Xsession
Chooser
啟動 X Window
在介紹 X Window 的架構及詳細內容之前,讓我們先看看如何啟動及結束
一個 X Window系統,以便使大家對 X Window 先有一個全盤的概念。
假設 X Window 已由系統管理者安裝在你的系統上,並且在你的機器上執行
xdm (xdm 的內容將在往後加以介紹。)。那麼這時你的螢幕會顯示如圖 1 的畫面。
基本上我們可以把 X Window 想像成一張辦公桌,根視窗就是這張
辦公桌的桌面,每一個視窗都是辦公桌上的一份文件或一項設備。除了
根視窗以外我們可以將任何一個視窗擺在螢幕上任意的位置,也可以
重疊放置,遮住其它視窗的全部或一部分。根視窗則永遠是位於最底層。
視窗是 X Window 中相當重要的一部分,大部分 X Window 下的工作
都是在視窗中完成,接下來就讓我們來看看一個視窗的主要組成。
圖 5 一個典型的視窗
圖 5 是將圖 4 左上角的 xterm 加以放大。在圖中視窗上端深色長條形的
區域我們稱之為 menu bar。 menu bar 上通常包含了這個視窗的名稱,
例如此處的``console'';包含了一個``圖像化按鈕'' (iconify button -- 位於
圖 5 menu bar的最左端);及一個``調整大小按鈕'' (resize button -- 位於
圖 5 menu bar的最右端。除了這些以外,大部分的視窗經理在 menu bar
下還提供了下拉式選單(pull down menu)。
視窗周圍有一個邊 (bourder) 將視窗所包括的區域加以界定。menu bar
和 bourder所圍起的區域就是視窗的工作區,大部分 X Window 軟體的
工作是在這個區域完成。
視窗經理簡介
基本的 X Window 系統只提供了很簡單的視窗環境。這個環境中的視窗
不能移動位置,不能改變大小及形狀,也無法被圖像化。這個環境中的視窗
甚至不能改變堆疊的次序,也就是說萬一一個視窗被其它的視窗遮住了,
我們就沒有辦法對這個視窗下任何的命令。當然,基本的 X Window 也無法
提供一些方便使用者的功能,如彈跳式選單 (pop up menu) 等。
雖然 X Window 系統並不具備上述的功能,但 X Window 系統上
各式各樣的視窗經理軟體補足了這一點。而也就因為 X Window 將這些功能
留給視窗經理來成,使得 XWindow 系統具有了更大的彈性發展空間。
現在就讓我們來看看視窗經理的內容。
什麼是視窗經理
視窗經理簡單的說是一個 X Window 的管理程式。它是介於 X 應用軟體和
X 伺服器(X server) 之間,負責控制每一個 X 視窗在螢幕上的特性和動作,
提供一個良好的使用者介面。視窗經理的基本功能如下:
重新啟動視窗經理。實際上執行的動作是將原來執行中的視窗經理結束,
然後再啟動一個新的視窗經理(X Window 不准在一個 X Server 下同時執行一個
以上的視窗經理。)。
在結束彈跳式選單的討論之前,還有一點必需要注意的是:在不同的視窗經理下
選單中相同功能的選項名稱會有所不同。表 1 中所列的便是幾種常用的視窗經理
中選項名稱對照表。
表 1 各種常用的視窗經理之選項名稱對照表 Behavior OPEN LOOK OPEN LOOK twm(ctwm) Iconify window Close Minimize Iconify De-iconify window Open Restore - Exit application Quit Close Kill Make window full heightof screen Full size - Zoom Vertical Make window full heightand width of screen - Maximize Zoom full Restore window to normal Restore size Restore - Push window behind others Back Lower Lower
在對 X Window 的使用有了一點認識之後,我們接著來討一些 XWindow
系統的基本概念。
和其它的視窗系統比較起來,X Window 具有以下幾項特色:
網路通透性 (network transparancy) 所謂網路通透性就是使用者可以將同一網路上其它機器執行的應用 程式結果同時輸出在自己所在機器 (區域) 的螢幕上如圖 22 所示,就如同程式是在自己所在的機器上執行一般。X Window 可以在同一 螢幕上同時使用數個來自不同機器的程式。更重要的是這種特性不受 機器架構的影響,所使用的系統可以是不同的廠牌,不同的硬體架構 甚至不同的作業系統。 圖 22 X Window 可以同時顯示遠方和區域的程式輸出
系統的彈性 (flexibility) X Window 系統只基本上只是一個協定 (X prorocal),它定義了 X Window必需具備的功能和通訊方式,只要是合乎 X Protocal 定義的視窗系統,都可以稱之為X Window。因此 X Window 系統軟體只提供了一些很基本的功能,而將大部分的彈性空間留給了 X 的程式設計師和使用者。例如使用者可以使用不同的視窗經理,定義不同風格的使用者介面,因為這些都不是定義在 X Window 的系統中。也就因為 X Window系統留下的高度彈性,我們可以在不同的機器上見到外觀全然不同的 X Window。
高度的可攜性 (portability) X Window 並不是作業系統的一部分,對於作業系統而言 X Window 只是一個應用軟體,所以 X Window 可以很容易的被安裝在其它的系統中。事實上今天幾乎所有使用 UNIX 作業系統的機器都安裝了 X Window。
階層性的視窗 (window heirarchy) X Window 的設計融合了物件導向 (object oriented) 的觀念。在 X Window 中的每個``單元''如捲動棒 (scroll bar),按鈕等都可以視為一個小的``視窗''(或者是一個``物件'')(在 X Window 中另外有一個專有名詞 --- widget。有關widget 的詳細說明,請參照 O'Reily 出版的 ``X Toolkit Intrinsics ProgrammingManual'' 及其它相關書籍。)。當 X 程式設計師在設計應用程式時就不需要再設計這些視窗,而可以用小的視窗組合而 產生大的視窗。這就是視窗的階層性。這簡化了 X Window應用程式的設計流程,也使得所設計出的每個 X 軟體可以具有相同的基本特性。
原始程式可免費取得 X Window 的原始程式可以透過 Internet 或其它的方法免費取得,因此它是一個很好的研究對象。也因為它可以免費取得,使得 X Window 被廣泛的使用在各種機器上,幾乎已經成為 UNIX 系統下的視窗標準。
X Window 與網路
這幾年來電腦網路的快速發展,帶給我們一個與從前全然不同的環境。
X Window系統就針對了今日強大的網路系統加以設計,大大的提昇了
系統的效能,同時也擴充了系統的應用範圍。雖然也可以將所有
X Window 的工作在同一台機器上完成,但這就無法充分顯現 X Window
的威力。現在就讓我們來看看 X Window 是怎樣利用網路的。
分散式處理
前面曾經提到在 X Window 中可以在一個終端機上同時執行數個不同的
遠方程式,這項功能頗為符合今日分散式處理的要求。
X11R5 增加了一項``字型伺服器'' (font server) 的功能,它的基本概念是
將字型分散儲存在網路上的機器中,每個 X server 都可以透過網路取得
所需要的字型。不必像X11R4 及以前版本的 X Window,每個 X server
都需要儲存一套字型。
圖 23 不使用 font server --- 每個 X server 都必需儲存一套字型
圖 24 使用 font server --- X server 可以透過網路取得字型
圖 23 及圖 24 對是否使用 font server 的分別作了一個清楚的說明。
在圖 23 中每個X server 都必需從自己的字型資料庫中取得字型。
而圖 24 則顯示在使用 font server的情況下,X server 不一定要自己
儲存字型。它可以使用自己儲存的字型,透過網路取得字型,或者是
同時使用本地及遠方的字型。
Font server 的架構是非常具有彈性的,每個 X server 除了可讀取自己
的字型資料庫之外,還可以連接到一個或是多個 font server 如圖 25
所示。此外 font server還可以作階層式的配置,例如圖 26 中即是
X server 透過 font server 1 取得 fontserver 2 中的字型。
圖 25 一個 X server 可以連接到一個以上的 font server
圖 26 階層式的 font server
font server 充分發揮了網路的的功效,使用 font server 具有以下的優點:
但 font server 也有著它先天上的缺點,那就是無可避免的會造成網路
交通量的增加,降低了網路的整體效率,這一點是需要再改進的
(有關 font server 的詳細內容請參考 font server 的 man pages 及
X Consoutium 的 ``The X Font Services Protocol''。)。
X Server:它控制了所有的 X 資源 (X resources),也控制實體的
顯示器及輸出入裝置。它同時負責處理一切由 client 所傳來的 X 事件
(X event)。
Client:除了 X Server 以外的所有 X 程式。一般我們在 X Window
下所執行的所有應用程式,都是屬於 X client。
通訊通道 (communication channel):介於 X Server 及 client 之間,
包含了實體的網路裝置及通訊協定。
圖 27 就是以上三個基本成分之間的關係。
圖 27 X 的基本成分
X Server
X Server 控制了實體的顯示器和輸出入裝置如鍵盤和滑鼠等。它的
主要工作有資源的管理及控制,事件的處理,錯誤訊息的處理等。
所謂的 X 資源主要包括了色彩,字型等。在 X Window 中這些都由
X Server來取得與使用,因此減輕了 client 的負擔,也使得 X Window
的可攜性更高。有關 X資源的詳細討論,將在下一節中加以介紹。
X Server 取得資源後便會依照 client 的要求加以回應,通常是
將其顯示在螢幕上,例如使用不同的字型,改變顏色等。
在 X Window 中如滑鼠的移動、鍵盤的輸入、視窗是否被覆蓋等
動作的變化我們稱之為 X事件。X Server 第二項重要的工作就是將這些
發生的事件通知 client,client才能根據這些訊息作出適當的反應。
另一個 X Server 的任務是錯誤訊息的處理。諸如當 X Server 無法
完成 client 的請求,或者是系統有錯誤的狀況發生,X Server 也都會將
這些訊息告訴 client。
一般我們啟動 X Window 即是啟動 X Server,然後再根據需要執行
client程式。我們經常使用的 X terminal 實際上也就是一個專門執行
X Server的機器,它所有的 client 都是來自遠方的 host。同樣的,我們
在 PC 上執行一個 XWindow 模擬器 (emulator) 也就是執行一個 X Server
,這就是為什麼安裝一個 XWindow 模擬器的同時也得安裝字型、色彩等
資源的原因。
X Client
Client 就是 X Window 中的應用程式,它會要求 X Server 執行
各種特定的動作,如``將視窗背景顏色改成綠色''等等。很多其它視窗中
屬於系統的功能在 X Window 中都只是一個 client,例如前面提到過的
視窗經理,以及桌面經理 (desktop manager),檔案經理(file manager)
等。由於 X Window 系統的這種特殊架構,使得軟體發展者有了更大的
彈性空間。
X Server 與 Client 之間如何交互作用
為了更清楚的說明 X Server 和 client 之間的交互作用,
我們用以下的例子做一個說明。圖 28-1 至 28-4 就是在 ctwm 中
圖像化的 ``分解動作''。
最後我們以圖 29 說明 X Server 和 client 之間的關係。
圖 28-1 滑鼠移至圖像化按鈕上。此時 X Server 將這個 X 事件通知 client。
圖 28-2 按下圖像化按鈕。此時 X Server 將這個 X 事件通知 client。
圖 28-3 client 請求 X Server 執行圖像畫的動作,將螢幕重畫。
圖 28-4 X Server 通知 client 工作完成。
圖 29 X Server 和 client 的關係。
--------------------------------------------------------------------------------
X Window 上的資源
X Window 的資源所指的是一些在使用 X 程式時可以加以設定
的特性,如字型、顏色、游標、鍵盤種類\ldots 等,甚至還包括其它一些
程式設計者自行設定的資源型態。在這一節中僅以一班最常使用到的
二種資源 --- 字型和顏色 --- 為例,對 X Window 的資源做一個簡單的
介紹。
X Window 系統中有數千個不同的應用程式,可以處裡各種我們需要的
工作。其中更有許多實用的軟體和 X Window 一樣是屬於免費的公用軟體。
這一節中我們將介紹一些較常使用或者是較為有趣的公用軟體。
這一節的目的並不是詳細說明各軟體的用法及內容,只是藉由這些軟體
的介紹對 X Window 做進一步的探討。如果想對這些軟體有更深一層的
暸解,請參閱相關書籍。
X Window 公用軟體中目前仍沒有 WYSIWYG(What You See
Is What You Get) 的editor。商用軟體則有功能強大的 Frame Maker
可供使用。--------------------------------------------------------------------------------
xmailtool
Email 是 internet 使用者最常使用的工具之一。為了使讀寫 email 的工作
更為便利,於是有人在 X Window 下發展了 email 的使用者介面
--- xmailtool。
在 xterm 中輸入
% xmailtool &
螢幕上會出現圖 45 的 xmailtool 視窗。
圖 49 沒有 email--------------------------------------------------------------------------------
xv
xv 是一個功能非常強大的影像處理 (image processing) 軟體,它可以
接受多種不同規格的圖型檔如 gif87、gif89、jpeg、tiff、PostScript
...... 等。
xv並且提供了親和的交談式 (interactive) 介面,使用者可以很容易的
藉由 xv觀察圖型檔,並且對圖型做各種特輸效果的處理。
在 xterm 中輸入
% xv &
螢幕上就會出現如圖 50 的 xv 標題視窗。
圖 50 xv 的標題視窗
將滑鼠指標移到圖 50 的視窗上,按一下滑鼠的右按鈕,螢幕上就會
出現 xv的控制視窗如圖 51。
圖 51 xv 的控制視窗
現在讓我們來看看如何用 xv 來觀察一個圖形。首先用滑鼠將
xv控制視窗右側的 Load 按鈕,螢幕上會出現另一個如圖 52 的
xv load 視窗。
圖 52 xv load 視窗
xv load 視窗的左半部主要是一個顯示目前目錄中檔案名稱的子視窗。
我們可以利用捲動棒捲動子視窗中的內容,尋找我們所需要的檔案。
如果所需的檔案不在目前的目錄中,可以利用子視窗上方的
``更換目錄按鈕''更換到適當的目錄。
我們利用前述的技巧尋找到了所需要的檔案如圖 53。現在將滑鼠
指標移到該檔案的上方,連續按滑鼠左按鈕二下, xv 就會將該圖形檔的
畫面顯示在螢幕上如圖 54。
圖 53 在 xv load 視窗中尋找到所需要的檔案
圖 54 顯示圖形檔的內容
在讀取圖形檔的過程中 xv 會自動判定圖形是屬於那一種格式,然後
使用適當的algorithm 加以解讀。
xv 可以對圖形的色彩加以處理。將滑鼠指標移至 xv 控制視窗中,選擇
右側的 ColEdit (color edit) 按鈕,螢幕上會出現圖 55 的 xv color edit 視窗。
圖 55 xv color edit 視窗
如果覺得圖 54 的色調暗了一點, xv 可以將它調亮。
在 xv color edit
視窗的左下角有一個 Brite 按鈕,每按一次 xv 會將目前顯示的圖形調亮
一點,按愈多次則色調愈亮。圖 56 即是將圖 54 調亮後的結果。
xv 還有許許多多其它的功能,例如將圖形放大、縮小、旋轉、
映射(morror) .... 等。並且能將圖形做多種的特殊處理如油畫效果、浮雕
效果等。
xv 的詳細內容涉及許多有關影像處理的專業知識,在此就不再多加以介紹。
使用完 xv 後在 xv 控制視窗中選擇 Quit 就可以將 xv 結束。
if [ -f $startup ]; then
if [ -x $startup ]; then
exec $startup
else
exec /bin/sh $startup
fi
else
if [ -f $resources ]; then
xrdb -load $resources
fi
xset fp+ /usr/X11R5/lib/X11/fonts/chinese/
ctwm &
exec xterm -fn 8x16 -geometry 80x24+0+0 -ls
fi
這段內容主要的作用是在進入 X Window 時載入資源設定、設定中文
字型的目錄、啟動視窗經理 ctwm 及啟動一個 xterm。
X Window 的簡介就到此結束。希望經過這些說明之後,可以使
大家對 X Window 有一個基本的認識,也希望大家會喜歡 X Window。
--------------------------------------------------------------------------------