X Window 入門
http://phi.sinica.edu.tw/aspac/reports/94/94025/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一律以MIT XConsortium所發表的X Window,Version 11,Release 5 為準。)是目前在
UNIX作業系統下使用得最廣泛的視窗環境。它提供了良好的使用者介面(GUI),
具有良好的網路通透性 (network trans-parancy) 及高度的可攜性 (portability)。
而它獨有的client-server 架構更使得 X Window在資源管理及使用上的效率及
彈性大大的凌駕其他視窗系統之上。現在就讓我們一同進入 X-window 的世界。
--------------------------------------------------------------------------------
啟動 X Window
在介紹 X Window 的架構及詳細內容之前,讓我們先看看如何啟動及結束
一個 X Window系統,以便使大家對 X Window 先有一個全盤的概念。
假設 X Window 已由系統管理者安裝在你的系統上,並且在你的機器上執行
xdm (xdm 的內容將在往後加以介紹。)。那麼這時你的螢幕會顯示如圖 1 的畫面。
圖 1 xdm
螢幕上顯示游標的位置在 ``Login:'' 之後,這時輸入使用者的 username
如圖2。(這裡假設 username 為 ccchen)
圖 2 輸入 username
接著再輸入 password (password 的內容不會顯示在螢幕上),如果所輸入的
password正確無誤則成功的啟動了 X Window,否則螢幕上會出現
``Login incorrect''的字樣如圖 3。這時只要重覆前述的步驟,輸入正確的
username 及 password 即可。
圖 3 所輸入的 password 錯誤,螢幕上出現 ``Login incorrect'' 字樣
圖 4 便是成功啟動 X Window 後的畫面。
進入X window
--------------------------------------------------------------------------------
X Window 的外觀及專有名詞
現在讓我們來看看 X Window 的外觀及各部分的功能。雖然 X Window的
外觀會因為所使用的視窗經理 (window manager)(視窗經理的內容將在往後
加以介紹。)不同而有些微的差異,但是功能基本上是一樣的。這兒所舉例
的視窗經理是ctwm(color tab window manager)。
在圖 4 中螢幕左上角是一個 xterm(xterm的詳細內容將在往後加以介紹。)
,它的外觀就是一個典型的視窗(window)。螢幕下方的八個長方型格子是
工作區經理 (workspacemana-ger)(工作區經理的內容將會在視窗經理一節中
加以介紹。)。螢幕背景類似磚牆的部分則是根視窗 (root window)。
基本上我們可以把 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 軟體
接下來讓我們來看看幾個簡單的 X 軟體。
xclock
在xterm輸入:
% xclock &(本文中以 % 表示提示符號。)
這時螢幕上會出現一個小時鐘如圖 6。
圖 6 執行 xclock
xclock 這個軟體的功用就是在X Window 中開一個顯示目前時間的視窗,
它可以是指針鐘,也可以是數字鐘。
在上面的命令列末端有一個 & 符號是表示這個程式是在背景模式下執行。
因為我們不希望執行了 xclock 之後就不能在xterm 中執行其他的命令。
大部分的 X軟體都是在背景模式下執行的。
xeyes
在xterm 中輸入:
% xeyes &
螢幕上的輸出如圖 7。
圖 7 執行 xeyes
xeyes 是一個很有趣的 X 軟體,它會在螢幕上顯示一雙眼睛。這雙眼睛的
眼珠子會``追蹤''滑鼠的指標,當滑鼠的指標移動到那兒,它就會往那個
方向看。
xcalc
xcalc 是一個 X 的計算器程式,要啟動它可在xterm 中輸入:
% xcalc &
螢幕上出現如圖 8 的畫面。一個計算器視窗出現在螢幕上。這時你可以
利用滑鼠來``按''計算器上的每一個按鍵,就像使用一個真的計算器一樣。
圖 8 執行 xcalc
結束 X Window
要結束 X Window 很簡單,只要將指標移到啟動時的 xterm內,執行命令:
% logout
就可以了。
-------------------------------------------------------------------------------- 視窗經理簡介
基本的 X Window 系統只提供了很簡單的視窗環境。這個環境中的視窗
不能移動位置,不能改變大小及形狀,也無法被圖像化。這個環境中的視窗
甚至不能改變堆疊的次序,也就是說萬一一個視窗被其它的視窗遮住了,
我們就沒有辦法對這個視窗下任何的命令。當然,基本的 X Window 也無法
提供一些方便使用者的功能,如彈跳式選單 (pop up menu) 等。
雖然 X Window 系統並不具備上述的功能,但 X Window 系統上
各式各樣的視窗經理軟體補足了這一點。而也就因為 X Window 將這些功能
留給視窗經理來成,使得 XWindow 系統具有了更大的彈性發展空間。
現在就讓我們來看看視窗經理的內容。
什麼是視窗經理
視窗經理簡單的說是一個 X Window 的管理程式。它是介於 X 應用軟體和
X 伺服器(X server) 之間,負責控制每一個 X 視窗在螢幕上的特性和動作,
提供一個良好的使用者介面。視窗經理的基本功能如下:
建立應用程式視窗
移動視窗
縮放視窗
許多市面上的視窗經理軟體除了以上的基本功能之外,還提供了一些其它的
擴充功能:
圖像化及反圖像化 (de-iconify) 一個視窗
彈跳式選單
虛擬工作區間 (virtual workspace)
目前較受歡迎的視窗經理有 MIT 提供的twm (Tab Window Manager),Sun
發展的olwm (OPEN LOOK Window Manager) 及 OSF (Open Software Fundation)
發展的mwm (Motif Window Manager)。在本文中將以twm 的擴充版 ---
ctwm( 可以由 anonymous ftp 自ftp.x.org:/contrib/ctwm-3.0.tar.Z
取得。 )為範例說明各項視窗經理的功能。
啟動視窗經理
在大部分的系統中,只要進入 X Window 就會自動啟動視窗經理。如果你的系統
沒有預設的視窗經理,而你想要啟動ctwm,可以在xterm 中輸入:
ctwm &
當ctwm 啟動完成後,每一個視窗都被加上了邊及 menu bar,就如同圖 9 中
所顯示的一樣。
圖 9 啟動ctwm
移動視窗的位置
利用下列的步驟可以移動一個視窗:
將滑鼠指標移至 menu bar 上,按下滑鼠左按鈕,這時指標的外觀由``箭頭''
變成``交叉箭頭'',同時螢幕左上角會出現一組數字,顯示欲移動視窗左上角
目前的直角座標(X Xindow 中的座標原點是螢幕的左上角)。
繼續按住滑鼠按鈕不要鬆開,移動滑鼠的位置,這時會有一個和原來視窗
大小形狀完全相同的三乘三的``隱形''方格出現,這個方格代表著視窗的新位置。
在移動滑鼠的同時,螢幕左上角表示視窗座標的數字也會隨著改變。
將視窗移到適當的位置後,鬆開滑鼠按鈕,視窗就會在新的位置出現如圖10。
圖 10 將圖 9 中的xterm 移到新的位置
利用上述移動視窗的技巧,我們也可以將重疊的視窗分開,或者將一個以上的
視窗重疊在一起。
縮放視窗
在 X Window 中我們可以藉由視窗經理對視窗作一維或二維的縮放,
將視窗變寬或是變窄,變高或是變矮,以下便是操作的步驟:
將滑鼠指標移至欲縮放視窗右上角之縮放按鈕 (resize button) 上。
按下滑鼠左按鈕,這時指標的外觀由``箭頭''變成``交叉箭頭'',同時會有
一個和原來視窗大小型狀完全相同的三乘三的``隱形''方格出現。此外螢幕
左上角會出現一組表示視窗長寬的數字。
圖 11 縮放按鈕
繼續按住滑鼠按鈕不要鬆開,移動滑鼠的位置。``隱形''方格的形狀及大小
會隨著滑鼠指標的位置而改變。例如將滑鼠指標垂直移動,視窗就會變高或
變矮;水平移動,視窗就會變寬或變窄;若是斜向移動,那麼就可同時改變
長寬的大小。而這時螢幕左上角表示視窗長寬大小的數字也會隨著滑鼠的移動
而改變。
當滑鼠移動到適當的位置後,鬆開按鈕,就完成了視窗的縮放。
--------------------------------------------------------------------------------
圖像化及反圖像化
有時因為同時在螢幕上開啟了幾個視窗,會使螢幕顯得擁擠而不方便。
這時一個解決的方法是結束掉一些不再使用的視窗。如果有些視窗雖然現在
並未使用,但不久之後又會用到,將它結束顯然不是一個很好的方法。於是
視窗經理提供了另一項解決之道 --- 圖像化。
所謂圖像化是將暫時用不到的視窗縮小成一個代表這個視窗的``圖像'' ---
通常是一個小圖案。當要再使用這個視窗時我們就可以將它``反圖像化''
--- 恢復成原來的視窗。圖像化及反圖像化的方法如下:
將滑鼠指標移至欲縮放視窗左上角之圖像化按鈕 (iconify button)
上,這時指標的外觀由``箭頭''變成一隻手的形狀。
圖 12 圖像化按鈕
按下滑鼠左按鈕,視窗就被圖像化了。圖 13 便是xterm 的圖像。有些軟體
在設計時就已經設計了預設的圖像,但不論軟體本身是否有預設的圖像,我們
都可以另行將軟體的圖像設計成各式各樣美麗的圖案。
圖 13xterm 的圖像
要將一個已經圖像化的視窗反圖像化,只需將滑鼠移至圖像上,再按下
滑鼠的左按鈕。圖像就會還原成與圖像化之前大小位置完全一樣的視窗。
彈跳式選單
為了提供一個更親和的使用者介面,目前的視窗經理大都具有跳彈式
選單的功能。利用跳彈式選單,使用者甚至可以不用鍵盤輸入任何文字或命令,
而完成他所要完成的工作。以下是跳彈式選單的操作方式:
將滑鼠指標移至根視窗的任何位置。
按下滑鼠的右按鈕並一直按著,螢幕上就會跳彈出一個選單 Windows 如圖 14。
圖 14 跳彈式選單 Windows
保持按下的滑鼠鈕,將指標在選單中上下移動,當指標移動到某一個
項目上時,該項目便會反白如圖 15。
圖 15 在選單中移動指標
這時有二種可能,如果該項目是一個可執行的命令,只要鬆開按鈕就可以執行
該命令;如果該項目是一個``次選單'' (選項右端有一個``選單圖像''者),那麼將
滑鼠指標沿著反白的區域向右移,螢幕上就會出現次選單如圖 16。
圖 16 次選單
圖 17 透過多層選單執行xeyes
視窗經理中的選單是一種``階層式''的設計。也就是說次選單下還可以有
次選單。我們可以利用前述的選項技巧來選擇多層選單下的項目。例如我們要
自彈跳式選單中執行 xeyes,可以透過多層選單來完成這個動作如圖 17。這時
只要鬆開滑鼠按鈕就可以執行xeyes。
介紹完彈跳式選單的功用及操作之後,我們來看看幾個選單中的基本選項。
Lower
這個選項的作用是將一個位於視窗堆疊中的視窗移至堆疊的最下層。用法是在
Windows 選單中選擇 Lower,這時滑鼠指標會變為一個大圓點。將這個圓點指
到所要移動之視窗的可見 (visible) 部分,再按一下滑鼠的左按鈕即可。如果所要
移動的視窗不在任何堆疊中,或者是已經處於堆疊的最下層,那麼這個命令
將沒有任何作用。
Raise
Raise 是 Lower 的反向動作,作用是將一個位於視窗堆疊中的視窗移至堆疊的
最上層。其用法與 Lower 相同。如果所要移動的視窗不在任何堆疊中,或者是
已經處於堆疊的最上層,那麼這個命令將沒有任何作用。
Exit
結束視窗經理 (注意!不是結束 X Window。)。
Restart
重新啟動視窗經理。實際上執行的動作是將原來執行中的視窗經理結束,
然後再啟動一個新的視窗經理(X Window 不准在一個 X Server 下同時執行一個
以上的視窗經理。)。
在結束彈跳式選單的討論之前,還有一點必需要注意的是:在不同的視窗經理下
選單中相同功能的選項名稱會有所不同。表 1 中所列的便是幾種常用的視窗經理
中選項名稱對照表。
表 1 各種常用的視窗經理之選項名稱對照表 BehaviorOPEN LOOKOPEN LOOK twm(ctwm)Iconify windowCloseMinimize IconifyDe-iconify window OpenRestore -Exit application QuitClose KillMake window full heightof screenFull size -Zoom VerticalMake window full heightand width of screen- MaximizeZoom fullRestore window to normalRestore size Restore-Push window behind others BackLower Lower
--------------------------------------------------------------------------------
虛擬工作區間
虛擬工作區間原本是屬於工作區經理 (work space manager) 的一項功能,
但是目前一些比較新的視窗經理如vuewm,olvwm 及ctwm 都加上了
這項實用的功能。
所謂虛擬工作區間,簡單的說就是將工作區擴充到螢幕可以看到的範圍
之外,不再受到實體的限制。讓我們用實例來對這個概念做更具體的說明。
在ctwm 螢幕的下方有一組八個長方型方塊的區域如圖 18,那就是ctwm
中工作區的切換鈕。每一個切換鈕上分別以數字 (或工作區名稱) 及顏色
加以區分。當啟動ctwm 時我們是位於第一個工作區。現在將滑鼠移到
工作區四的按鈕上按下滑鼠左按鈕,看看有什麼變化。
圖 18 工作區切換鈕
圖 19 切換工作區
螢幕產生了很大的變化如圖 19。背景變成了花朵的圖案,原本執行中的軟體
如 xterm 等都不見了。這是因為我們切換到了第四工作區,而原來所有執行中
的軟體是屬於第一工作區的緣故。切換鈕中的八個鈕分別代表了八個工作區,
我們可以在各工作區之間自由切換。當切換到另一個工作區時,原來執行中
的軟體並不會因此而中斷,只是無法在螢幕上顯示而已。
通常我們會將各虛擬工作區的背景,也就是根視窗的背景,設定成不同
的顏色及圖案以便於區別。但是這不是強制性的規定,使用者可以依自己的
喜好及需要加以選擇。
現在用滑鼠在彈跳式選單的 Windows 選單中選擇 Toggle workspace
選項,結果工作區按鈕變成如圖 20 所示。
圖 20 Toggle workspace
在圖 20 中我們可以看到各個按鈕的外觀變成和其代表的工作區背景相同
而目前所在的工作區則以黑色顯示。在代表工作區一的按鈕中我們可以看到
幾個白色的小方格,其中有一個上面寫著 `` xterm'',代表著在工作區一中
執行中的xterm等幾個軟體。
現在把滑鼠指標移到寫著 `` xterm'' 小方格上,按住滑鼠左按鈕不放,
將小方格``拖''到工作區四的工作區按鈕上再鬆開滑鼠按鈕。結果螢幕上
出現了xterm的視窗如圖 21。這表示我們可以經由滑鼠拖曳的動作,
輕易的將執行中的軟體由一個工作區移至另一個工作區。
圖 21將視窗由一個工作區移至另一個工作區
有時候我們需要的不只是將視窗由一個工作區移至另一個工作區,而是希望
在不同的工作區可以同時看到同一個執行中的軟體。例如我們就希望無論在
那一個工作區都可以看到 xclock。 ctwm 就可以達到這項要求。
假設我們希望在任何工作區中都顯示xcalc,首先以前述方法將xcalc
視窗移至目前的工作區中,接著在 Windows 彈跳視窗中選擇 Occupy All 選項,
此時滑鼠指標會變成一個大圓點。將大圓點移至xcalc 視窗可見的部分,
按下滑鼠左按鈕即可。這時原本工作區切換按鈕中代表xcalc 的小方格不見了
如圖22,而不論你切換到那一個工作區,都可以見到xcalc。
無論是使用那一種視窗經理,都可以自行對視窗經理的個種特性設定
啟始值。例如設定背景的圖案、自動啟始的軟體、圖像所使用的圖案、
彈跳式表單的內容、滑鼠按鍵的功用、工作區的數目.... 等。這些啟始值大多
是寫在使用者目錄 (home directory) 中的.*rc 檔 --- 如.ctwmrc (用於ctwm),
.mwmrc (用於mwm)。各種視窗經理啟始檔的格式及詳細內容,請自行參閱
各視窗經理的說明頁,在此不多加贅述。
圖 21Occupy All
-------------------------------------------------------------------------------- X Window 系統的基本概念
在對 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 中可以在一個終端機上同時執行數個不同的
遠方程式,這項功能頗為符合今日分散式處理的要求。
例如我們要執行一個複雜的科學運算軟體,如視覺效果 (visualization )
軟體,我們可以透過網路讓程式在遠方運算能力較強大的大型電腦或
超級電腦中執行,最後再將結果或圖形顯示在自己的終端機上。
另外一個例子是如果一個人要同時作幾件事,如編譯程式、科學運算及
文書處理。他可以將各個程式依不同的需要交由不同的遠方機器執行,
再將結果顯示在自己的終端機上。如此不但可以縮短執行的時間,
又可以同時監視每個程式執行的結果。
以上所提的都只是比較基本的分散處理的例子,我們也可以透過一些
功能較完備的平行分散處理工具來進一步發揮網路的功能。
至於如何透過網路來執行一個 X 程式呢?以下是幾個基本的步驟:
首先我們必需要``授權''遠方的機器將結果輸出在本地的終端機上。
要達成這項要求,必需在本地的終端機上輸入:
% xhost +hostname
其中 hostname 代表遠方機器的名稱,例如輸入:
% xhost +gate.sinica.edu.tw
即是授權將在 gate.sinica.edu.tw 上程式執行的結果顯示在本地的終端機上。
指定 X 程式的輸出螢幕。每個 X 程式都可以設定將其結果輸出到
某台機器的某個螢幕上,方法是在執行程式時使用 X 的標準參數-display
(或是-d)。例如要將xeyes 的執行結果輸出在 omega 的第零個螢幕上,
只要輸入:
% xeyes -displayomega :0 &
當然我們也可以將在本地機器執行的程式結果輸出到遠方的終端機上,
只是在一般的情況下這樣的用處不大罷了。
字型管理
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''。)。
--------------------------------------------------------------------------------
Client-Server 架構
X Window 的基本成分
X Window 和其它的視窗系統不同,它不是一個單一的軟體,而是由
以下三個基本成分所組成。
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程式也允許使用者選擇自己所喜好的字型。
以下是 X Window 字型的幾個特色:
可以是 fixed width 或者是 proportionally spaced。
可以有不同的大小尺寸。
可以適應不同的螢幕解析度。
可以用全名來存取,或者是例用 wild card 來存取。
可以依使用者的需要加入新的字型。
在 X Window 中字型是一種資源,由 X Server 負責存取,故 X 應用程式
不必處理字型存取的工作,只需要告訴 X Server 必要的訊息。
X Window 對字型的定義有一套標準格式,因此可以輕易的轉換成不同
機器上 X Server 所能瞭解的規格,具有高度的可攜性。
--------------------------------------------------------------------------------
使用字型前的準備
首先我們必需要知道系統中有那些字型,在xterm 中輸入:
%xlsfonts
螢幕上會出現如圖 30 的內容。xlsfonts 這個程式的功用就是列出所有
系統中可使用的字型名稱,包括全名和化名 (alias)。圖 30 中每一行
都是一個字型名稱,這兒所見到的都是 X Window 字型的全名。
圖 30 中每一個字型名稱都是一個長長的字串,它們是根據
X Window 的標準命名方式所定出來的。X Window 為了使字型名稱
與 X Server 不相關,並使得應用程式能夠自字型名稱中取得足夠的資訊,
定出了一個統一的命名標準。現在就讓我們來看看 X Window是怎樣定義
字型名稱。
圖 30xlsfont 列出系統中所有的字型名稱
圖 31 X Window 字型名稱的各成分
在 X Window 的定義中字型名稱的各個成分是以 ``-'' 符號分開,並可能
包含空白,大小寫在字型名稱中並沒有分別。圖 31 中顯示了一個標準的
X Window 字型名稱及其各個成分的意義,以下我們就針對各個成分
一一說明。
供應商名稱 (foundry):如此處的 adobe。
字型種類 (font family):常見的有 courier,times,helvetica\ldots
比重 (weight):表示字型的粗細程度,常見的有 bold,medium 和
light
傾斜度 (slant):常見的有三種型態,分別是 r (roman),i (italic)
和 o (oblique)。
字寬 (set width):表示在同一種字體中的字型寬窄程度。X Window
現有的字型大部分為 normal,少數為 semi condensed。
字元大小,以 pixels 為單位。
該字型的點尺寸 (points):以十分之一點為單位,一點約等於 1/72 英寸。
該字型水平及垂直的理想解析度。
字元之間的間格方式 (spacing):有 m (monospaced) --- 固定寬度,
p ---(proportional) --- 比例寬度及 c (character cell) 等三種方式。
該字型中所有字元的平均寬度 (average width)。
字集屬性 (character set)。
在使用 X 字型名稱時可以使用 wild card 來同時指定或引用一個以上的
字型,wildcard `` *'' 代表零個或多個任意的字元,wild card ``?'' 代表
任意一個字元。例如輸入下列命令:
% xlsfonts -fn "-*-courier-*-r-*-120-*"
會得到以下的結果輸出:
-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1
-adobe-courier-bold-r-normal--17-120-100-100-m-100-iso8859-1
-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1
-adobe-courier-medium-r-normal--17-120-100-100-m-100-iso8859-1
X Window 的字型名稱有一個最大的缺點,那就是名稱太長,使用起來
相當的不方便。為了解決這個困擾 X Window 提供了一個方法,那就是
可以為特定的字型取一個``化名''(alias)。例如字型名稱 ``12x24''
就相當於``-sony-fixed-medium-r-normal--24-170-100-100-c-120-iso8859-1''。
化名一般是沿用大家已經習慣的字型名稱,也可以由使用者自行設定。
如何設定化名的詳細內容將在下一小節中討論。
在使用字型之前的最後一步是得要看看字型檔中所包含的內容
是否合乎我們的需求。程式xfd 就是用來預視某個字型檔的內容,輸入:
%xfd -fn 12x24 &
螢幕上會出現字型檔 ``12x24'' 的內容如圖 32 。注意,圖 32 視窗上方
顯示了``12x24'' 字型的正式名稱。
圖 32 用xfd 預視字型內容
--------------------------------------------------------------------------------
字型的儲存
這一小節中將介紹一些較為技術性的內容,如 X Window 字型的格式,
儲存的位置,相關的檔案,字型的搜尋路徑及如何加入一個新的字型等。
X Window 中的字型最早都是以一個標準格式 --- *.bdf
(Bitmap Distribution Format)
檔存在。BDF 格式是以 ASCII 來表示字元的位元對應圖 (bitmap),而且
只包含可列印的字元,所以它是完全可以移植的。
定義 BDF 格式的好處除了可以輕易的將字型移植到不同的機器
上之外,也有利於 XWindow 系統未來的發展。如果新的 X Window
系統所使用的字型格式不同於以前的版本,只要利用轉換程式就可以使用
原有的字型。例如 X11R4 及以前的版本使用 SNF (ServerNatural Format)
格式的字型,X11R5 則使用 PCF (Portable Compiled Format)格式的字型,
只要使用 X Window 提供的bdftosnf 或bdftopcf 程式就可以將 *.bdf 檔
分別轉換成 *.snf 及 *.pcf 檔。大大減輕了發展新字型時的負擔。
X Window 的字型可以存放在系統中的任何位置,通常 X Window
系統的字型檔是位於以下幾個目錄中:
/usr/lib/X11/fonts/misc
/usr/lib/X11/fonts/75dpi
/usr/lib/X11/fonts/100dpi
各系統字型預設的儲存位置可能會有所不同,要知道該系統的字型儲存
位置(字型路徑),可以利用指令xset 查得。輸入:
%xset q
螢幕上會輸出如圖 33 的結果。其中 Font Path 一項的內容就是該系統的
字型路徑。
圖 33 用xset 查字型路徑
每個 X Window 的字型目錄包括三個部分:
字型檔。在 X11R4 及以前的版本中是 *.snf 檔,X11R5 中則是
*.snf 檔。
fonts.dir 檔。一個資料庫,將 *.snf 或 *.pcf 的檔名對應到 X 所使用
的字型名稱。這個檔案是由程式mkfontdir 所產生的
(例如要在 /usr/lib/X11/fonts/100dpi 中產生新的 fonts.dir 檔,
便執行:%mkfontdir /usr/lib/X11/fonts/100dpi。)
以下便是/usr/lib/X11/fonts/100dpi/fonts.dir 的部分內容:
200
couro08.pcf -adobe-courier-medium-o-normal--11-80-100-100-m-60-iso8859-1
couro18.pcf -adobe-courier-medium-o-normal--25-180-100-100-m-150-iso8859-1
couro14.pcf -adobe-courier-medium-o-normal--20-140-100-100-m-110-iso8859-1
couro12.pcf -adobe-courier-medium-o-normal--17-120-100-100-m-100-iso8859-1
couro24.pcf -adobe-courier-medium-o-normal--34-240-100-100-m-200-iso8859-1
couro10.pcf -adobe-courier-medium-o-normal--14-100-100-100-m-90-iso8859-1
lubb08.pcf -b&h-lucidabright-demibold-r-normal--11-80-100-100-p-66-iso8859-1
lubb18.pcf -b&h-lucidabright-demibold-r-normal--25-180-100-100-p-149-iso8859-1
lubb19.pcf -b&h-lucidabright-demibold-r-normal--26-190-100-100-p-155-iso8859-1
lubb12.pcf -b&h-lucidabright-demibold-r-normal--17-120-100-100-p-101-iso8859-1
fonts.alias 檔。用以對應 X 字型的正式名稱和它的化名。
以下便是/usr/lib/X11/fonts/misc/fonts.alias 的部分內容:
fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-1
5x7 -misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-1
5x8 -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso8859-1
6x9 -misc-fixed-medium-r-normal--9-90-75-75-c-60-iso8859-1
6x10 -misc-fixed-medium-r-normal--10-100-75-75-c-60-iso8859-1
6x12 -misc-fixed-medium-r-semicondensed--12-110-75-75-c-60-iso8859-1
6x13 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
6x13bold -misc-fixed-bold-r-semicondensed--13-120-75-75-c-60-iso8859-1
12x24 -sony-fixed-medium-r-normal--24-170-100-100-c-120-iso8859-1
至於 X Window 系統是怎樣知道字型儲存的位置呢?預設的字型路徑
是在編譯 Xwindow 時就已經設定好,而新增加的字型路徑就必需要
利用xset 指令將它加入系統中。例如安裝了新的中文字型於
/usr/lib/X11/fonts/chinese 目錄中,我們就必需執行:
%xset fp+ /usr/lib/X11/fonts/chinese/
這樣就將這個目錄加入字型的搜尋路徑中了。此時再使用 `` xset q'' 指令
就可發現 font path 一項中已經增加了 `` /usr/lib/X11/fonts/chinese/
這個目錄。
X server 取得一個字型的程序大致是這樣的:依照字型路徑依序在
每個字型目錄中尋找所需的字型,在每一個字型目錄中先檢查在
fonts.alias 中是否有相關的化名設定,再由fonts.dir 檔中找到所需的
字型檔,如果找不到再至下一個字型目錄中搜尋,直到找到所需的字型
或是所有的字型目錄都搜尋完畢為止。
最後我們來看看將一個新的字型加入系統的幾個步驟,
此處假設將新的字型置於目錄 newfont 中。
將*.snf 或*.pcf 檔移至目錄newfont 中。
%mkfontdir newfont
將適當的內容寫入newfont/fonts.alias 中。
%xset fp+ newfont
X Window 字型就介紹到此,接下來要介紹的是 X Window 中另外一項
重要的資源 ---顏色。
--------------------------------------------------------------------------------
顏色
在執行 X 軟體時我們常會指定某些部分的顏色為
red、blue、green、navy blue.....等 。X Window 如何認識這些顏色名稱?
而 X Window 中又有那些顏色名稱可供使用?本節中將對這些問題
一一加以探討。
X Window 的標準顏色規格
在 X Window 中顏色的標準規格是以 rgb 三原色來定義的,它的格式是
# << r >><< g >><< b >>
r、g、b 分別表示紅、綠、藍三原色的強度。以下是這個標準規格的法則:
必需以 # 字號開頭。
必需依序指定紅、綠、藍三個原色的強度。
必需指定所有的三個原色。
每個原色以一個十六進位的數字表示,包含一到四個位數。
ffff 表示該原色是在最高的強度,0 表示沒有這個原色的成分。例如:
#000000000000 代表黑色
#ffff0000ffff 代表紫色
每個原色可以是一到四位數,但三個原色必需要有相同的位數。
我們可以像使用顏色名稱一樣的使用上述的標準規格,例如:
%xterm -bg #ffff0000ffff
就是啟動一個背景為紫色的xterm。
顏色名稱
rgb 規格在使用上相當的不方便,一般人很難用它調出自己想要的顏色。
因此 X Window定義了一組顏色的名稱,所有 X Window 顏色名稱的定義
都寫在顏色資料庫 /usr/lib/X11/rgb.txt 中,這個檔案的部分內容如下:
255 250 250 snow
248 248 255 ghost white
248 248 255 ghostwhite
245 245 245 white smoke
245 245 245 whitesmoke
220 220 220 gainsboro
255 250 240 floral white
255 250 240 floralwhite
253 245 230 old lace
每一行中定義了顏色名稱和相對應的三原色強度 (此處以十進位數字表示)。
查看這個檔就知道 X Window 中有那些顏色名稱可用了。
預設資源
每個 X 軟體通常都有它的資源預設值,例如將背景設為白色,啟用
scroll bar 等。Xwindow 的使用者可以依自己的喜好對每個 X 軟體分別
設定屬於個人的資源預設值。系統管理者也可以設定系統的資源預設值。
這個可以``多重設定''的特性使得同一個軟體由不同的人執行時會有不同
的外觀,也使得 X Window 的畫面看起來更為變化多端。
X Window 的初學者會發現在自己的目錄下有一個.Xdefaults 檔,
其中紀載了一些奇奇怪怪的內容,那都是一些軟體資源的設定。
我們先就設定的格式加以介紹,然後再看看 X Server 是如何讀取這些
設定的。
X Window 資源設定的格式如下:
specification: value
其中 specification 是一個指定資源的字串,字串中的每一項以``.''區分,
字串的內容可能包含了程式的名稱或類別 (class),某些限制或 widget
的名稱,以及一個必需要有的資源名稱。value 則是資源的``值'',
如顏色名稱或字型名稱。以下就是一些資源設定的例子:
Xterm*cursercolor: gold
Xterm*font: 6x10
Xterm*scrollbar: on
Xterm*foreground: yellow
Xterm*color: red
*color: green
*foreground: blue
xbitmap.rowcolumn.quit.foregroung: white
在資源設定時我們可以使用 wild card,wild card `` *'' 代表任意的
零個或多個字元,``?'' 代表任意一個字元。如上列的
*color: green
就是表示在這個 X Window 下的所有軟體顏色都設定為綠色。
X Window 的資源設定有一個特性,那就是如果有一個以上的設定
是指定同一個特定的標的,那麼以指涉範圍較小的為優先。
如上列例子中的
Xterm*color: red
是將屬於 xterm 這個 class 的軟體設為紅色,
*color: green
則是將所有的軟體都設為綠色。那麼屬於 xterm 這個 class 的軟體仍然
是紅色,其它軟體則為綠色。上列例子中的最後一項
xbitmap.rowcolumn.quit.foregroung: white
就是一種最確定的設定法,其優先次序也是最高的。
改變資源的預設值
每一個 X 軟體在設計時都已經設定好所有所用的資源的預設值,然而
這些設定都可以加以更動,這一小節就讓我們看看 X Window 的使用者
如何重新設定這些資源。
在 X Window 中資源的設定可以由好幾種不同的方式完成,
最常見到也最為人所熟知的是將設定的內容寫在 $\sim$ /.Xdefaults 中,
以下便是幾種設定的方式:
在執行 X 軟體時以 command line option 的方式指定,例如
%xterm -bg blue &
即可將xterm 的背景設為藍色。
使用xrdb 程式將資源設定讀入,例如事先以經將資源設定的內容
寫在一個叫做abc 的檔案中,執行
%xrdb -merge abc
即可將abc 中的設定讀入系統(有關xrdb 的詳細內容,
請參考說明頁。)。
將資源設定的內容寫在 ~/.Xdefaults 檔中。
將資源設定的內容寫在$XAPPLRESDIR/class 中,其中環境變數
XAPPLRESDIR 可於 ~ /.cshrc 檔中設定,方法是在 ~.cshrc 中加入這一行:
setenv XAPPLRESDIRpathname
pathname 可以是系統中的任何路徑。
class 則是代表某一``類''程式的資源設定檔,每一類程式都有一個
個別的檔案對資源加以設定。
將資源設定的內容寫在/usr/lib/X11/app-defaults/class 中,這裡的
設定內容通常是在安裝 X 軟體時就已經自動寫入。
一個 X 軟體執行時會按照上述 1 至 5 的順序讀取資源的設定值,愈早
讀到的優先次序愈高。如果都沒有另行設定,就使用該軟體的預設值。
-------------------------------------------------------------------------------- 一些 X Window 上的基本應用軟體
X Window 系統中有數千個不同的應用程式,可以處裡各種我們需要的
工作。其中更有許多實用的軟體和 X Window 一樣是屬於免費的公用軟體。
這一節中我們將介紹一些較常使用或者是較為有趣的公用軟體。
這一節的目的並不是詳細說明各軟體的用法及內容,只是藉由這些軟體
的介紹對 X Window 做進一步的探討。如果想對這些軟體有更深一層的
暸解,請參閱相關書籍。
--------------------------------------------------------------------------------
xterm
xterm 可能是所有 X Window 使用者最常用到的 X 軟體。
它最主要的功能是模擬VT100 文字終端機,讓我們可以藉由xterm 執行
所有從前在文字模式 (textmode) 下所發展的軟體。此外xterm 也同時
支援了 Tektronix 4014 繪圖終端機的模式。
通常在啟動 X Window 時都會自動開啟一個xterm 供使用者輸入
命令之用,有些視窗經理則可以藉由彈跳式選單執行xterm。我們也可以
由一個xterm中啟動另一個xterm,只要輸入:
%xterm &
即可。此外xterm 有許多的 command line options 可以使用,例如我們
想開啟一個背景為黃色,有捲動棒 (scroll bar) 的xterm,輸入下列命令:
%xterm -bg yellow -sb &即可。現在螢幕上出現了一個新的xterm,
這個xterm 左端有一個捲動棒。試著任意在xterm 中輸入一些文字,
再將滑鼠指標移到捲動棒上,按按滑鼠左邊或右邊的按鈕, xterm 中的
文字內容就會隨著上下捲動。
xterm 另外一項常用到的功能就是 cut and paste。你可以利用這項
功能截取 xterm 中的任何一段文字,然後將它``貼''到游標所在的位置。
方法是先將滑鼠指標移到所要截取的文字前端,按下滑鼠左按鈕不放,
然後將滑鼠指標移到要截取的文字末端,再鬆開滑鼠按鈕。該段文字
就會被反白 (reverse) 如圖 34。這時再將游標移至想要``貼''入該段文字
的位置,按下滑鼠中間按鈕,該段文字就會被``貼''在游標所在的位置
如圖 35。cut and paste 不只在xterm 中可以使用,它也可以使用於
不同的 xterm 甚至一些不同的 X 軟體之間,是一項非常實用的功能。
如果在xterm 中同時按下 Ctrl (control) 鍵和滑鼠任一個按鈕,會
出現幾個不同的xterm 的彈跳式選單,選單中提供了一些xterm 功能
的選項如捲動棒的啟動與關閉等,可以依自己的需要加以選擇。
圖 34 被截取後的文字會呈現反白
圖 35 將截取的文字``貼''在游標所在的位置
要結束xterm 只要在xterm 中輸入exit 即可。現在不要結束 xterm,
以下幾個小節中我們將利用xterm 來執行其它的 X 軟體。
--------------------------------------------------------------------------------
xman
xman 和文字模式下的man 程式功能一樣,可以讓使用者查閱軟體
的說明頁(man pages),只是xman 提供了更為親和的使用者介面。
啟動xman,只要在xterm 中輸入
%xman &
螢幕上就會出現xman 的主選擇視窗如圖 36。
圖 36xman 的主選擇視窗
圖 37xman 的 help 視窗
用滑鼠在主選擇視窗中按下 manual page 按鈕,螢幕上出現xman
的 help 視窗如圖 37。
xman 的 help 視窗左上角有兩個按鈕,分別是 options 和 sections。
用滑鼠按下sections 按鈕螢幕上會出現一個下拉式選單,選單的內容如下:
Xman Sections
(1) User Commands
(2) System Calls
(3) Subroutines
(4) Devices
(5) File Formats
(6) Games
(7) Miscellaneous
(8) Sys. Administration
(l) Local
(n) New
這些就是 man pages 的分類,按住滑鼠按鈕不放,將指標移至
user commands上然後鬆開滑鼠按鈕,螢幕上會出現如圖 38 的內容。
圖 38 屬於user commands 類的所有程式名稱
這個視窗中所列的是所有屬於user commands 這一類程式或指令
的名稱。想要查看任何一個程式的說明頁,只要將滑鼠指標移至該名稱
的上方,按下滑鼠按鈕即可。如果該名稱不在視窗顯示範圍之內,可以
利用視窗左方的捲動棒捲動視窗。圖 39 就是程式
patch 的說明頁視窗。
圖 39 說明頁視窗
重覆使用這個方法就可以繼續查閱其它的說明頁。如果不知道程式究竟
屬於那一類,可以自下拉式選單 Options 中選取Search 選項。螢幕上
會出現如圖 40 的視窗。
圖 40 Search 視窗
在視窗中輸入所要查閱的程式名稱, xman 就會自動搜尋適當的說明頁。
當所有需要的說明頁都查閱完畢之後,只要在xman 主選擇視窗中按下
Quit 按鈕就可以離開xman。
--------------------------------------------------------------------------------
X Window 下的 editors
這一節中將要介紹幾個可以在 X Window 下執行的 editor:emacs、
xcoral 和 aXe。
Emacs
Emacs 是 FSF (Free Software Fundation) 所發展的一個功能強大的
編輯``環境''。它除了基本的編輯器的功能之外,還包含了 ftp、
檔案管理、shell mode、news reader、mail server..... 等功能。
更重要的是使用者可以依自己的需要任意擴充它的功能。此處僅針對
它編輯的基本功能加以介紹。
Emacs 以往最為人所垢病的一點是使用者要記憶許多的 key-binding,
這往往使得Emacs 的初學者為之怯步。新版 (19 版) 的Emacs 在
X Window 下執行時已經沒有了這個缺點,它提供了親和的下拉式選單,
大大的減輕了初學者的負擔。
啟動Emacs 只要在xterm 中輸入
%emacs &
圖 41Emacs 視窗
圖 41 就是Emacs 啟動後所出現的視窗。 Emacs 視窗上方有四個下拉
式選單的選項,幾乎所有的編輯功能都可以在選單中完成。
包括 cut and paste﹑search﹑opennew file﹑spell...... 等,用法和一般
視窗系統下的 editor 大同小異。離開 Emacs 只要從 File 選單中選擇
Exit Emacs 就可以了。--------------------------------------------------------------------------------
xcoral
圖 42 xcoral 視窗
在xterm 中輸入
%xcoral &
就可以啟動xcoral 如圖 42。 xcoral 的使用者介面設計使人覺得更為
親和,它看起來和其它視窗系統中的 editor 沒有二樣。使用者可以藉著
下拉式選單輕易的完成工作。熟悉Emacs 的使用者會發現xcoral 的
key-binding 和 Emacs 幾乎是完全一樣的。此外xcoral 和Emacs 一樣,
cut and paste是用 kill region 和 yank 的方式完成,不熟悉Emacs 的使用
者對這一點可能會較為不習慣。
xcoral 還有一點和Emacs 不同的是多了一個 font 選單,可以
選擇不同的螢幕字型, Emacs 是無法在使用中變換字型的。要離開
xcorel 只要在File 選單中選擇 Quit 即可。--------------------------------------------------------------------------------
aXe
aXe (a X Window editor) 是在 X Window 中另一個 editor 的選擇。
在 xterm 中輸入
%axe &
螢幕上就會出現如圖 43 的aXe 主選擇視窗。
圖 43aXe 主選擇視窗
在主選擇視窗中按下 edit 按鈕,螢幕上就會出現如圖 44 的aXe 視窗。
圖 44aXe 視窗
aXe 和一般視窗系統下的 editor 用法更為接近,它同樣也可以變換螢幕
字型,只是可供選擇的字型比xcoral 少。離開aXe 只要在主選擇視窗
中按下 Quit按鈕即可。
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 視窗。
圖 45xmailtool 視窗
如果這時 mail spool 中有新的 mail, xmailtool 會將其內容顯示在視窗
的下半段,視窗上段則會有所有 email 的 index。
讀完 email 後如果要回信只要按下 reply 按鈕,螢幕上就會出現
如圖 46 的 reply視窗。就如使用一般的 screen editor 一般,在這個視窗
中編寫 email,最後按下視窗左上方的 send 按鈕就完成了回信的工作。
圖 46 reply 視窗
其它 email 的功能如 compose、save、print 等也都有相對應的按鈕可供
選擇,使用者可以藉由這些按鈕輕易的完成所需的工作。按下 Quit 按鈕
即可離開xmailtool。--------------------------------------------------------------------------------
xload
xload 的功用是用來觀察目前所在的 host 的工作負載。在xterm 中輸入
%xload &
螢幕上就會出現顯示機器負載的xload 視窗如圖 47。
圖 47xload 視窗
xbiff
xbiff 的功用是在螢幕上顯示一個郵筒。當有 email 送達時郵筒的旗
子就會豎起,同時郵筒圖像會反白如圖 48。沒有 email 時郵筒旗子則會
倒下如圖 49。在 xterm 中輸入
%xbiff &
就可啟動xbiff。
圖 48 有 email 送達
圖 49 沒有 email--------------------------------------------------------------------------------
xv
xv 是一個功能非常強大的影像處理 (image processing) 軟體,它可以
接受多種不同規格的圖型檔如 gif87、gif89、jpeg、tiff、PostScript
...... 等。
xv並且提供了親和的交談式 (interactive) 介面,使用者可以很容易的
藉由xv觀察圖型檔,並且對圖型做各種特輸效果的處理。
在xterm 中輸入
%xv &
螢幕上就會出現如圖 50 的xv 標題視窗。
圖 50xv 的標題視窗
將滑鼠指標移到圖 50 的視窗上,按一下滑鼠的右按鈕,螢幕上就會
出現xv的控制視窗如圖 51。
圖 51xv 的控制視窗
現在讓我們來看看如何用xv 來觀察一個圖形。首先用滑鼠將
xv控制視窗右側的 Load 按鈕,螢幕上會出現另一個如圖 52 的
xv load 視窗。
圖 52xv load 視窗
xv load 視窗的左半部主要是一個顯示目前目錄中檔案名稱的子視窗。
我們可以利用捲動棒捲動子視窗中的內容,尋找我們所需要的檔案。
如果所需的檔案不在目前的目錄中,可以利用子視窗上方的
``更換目錄按鈕''更換到適當的目錄。
我們利用前述的技巧尋找到了所需要的檔案如圖 53。現在將滑鼠
指標移到該檔案的上方,連續按滑鼠左按鈕二下, xv 就會將該圖形檔的
畫面顯示在螢幕上如圖 54。
圖 53 在xv load 視窗中尋找到所需要的檔案
圖 54 顯示圖形檔的內容
在讀取圖形檔的過程中xv 會自動判定圖形是屬於那一種格式,然後
使用適當的algorithm 加以解讀。
xv 可以對圖形的色彩加以處理。將滑鼠指標移至xv 控制視窗中,選擇
右側的 ColEdit (color edit) 按鈕,螢幕上會出現圖 55 的xv color edit 視窗。
圖 55xv color edit 視窗
如果覺得圖 54 的色調暗了一點, xv 可以將它調亮。
在xv color edit
視窗的左下角有一個 Brite 按鈕,每按一次xv 會將目前顯示的圖形調亮
一點,按愈多次則色調愈亮。圖 56 即是將圖 54 調亮後的結果。
xv 還有許許多多其它的功能,例如將圖形放大、縮小、旋轉、
映射(morror) .... 等。並且能將圖形做多種的特殊處理如油畫效果、浮雕
效果等。
xv 的詳細內容涉及許多有關影像處理的專業知識,在此就不再多加以介紹。
使用完xv 後在xv 控制視窗中選擇 Quit 就可以將xv 結束。
圖 56 將圖 54 的圖形色調調亮
--------------------------------------------------------------------------------
gnuplot
gnuplot 可以很容易的畫出各種數學函數圖形,是一個對科學研究者非常有用的軟體。
使用 gnuplot 只要在 xterm 中輸入
% gnuplot
就可進入 gnuplot 模式如圖 57。圖 57 進入 gnuplot 模式提示符號也變成了
gnuplot>>
接著就可以輸入 gnuplot 的各種指令。例如要畫一個正絃曲線就輸入
gnuplot> plot sin(x) 輸出結果如圖 58 所示。圖 58 用 gnuplot 畫出正絃曲線輸入
gnuplot> quit
就可以結束 gnuplot。
除了以上所介紹的軟體之外,X Window 中還有許多其它實用的公用軟體。如 FTP 軟體 xftp 和 ftptool、用來在 internet 上尋找軟體的工具 xarchie、gopher 的 X Window 介面 xgopher、好用的除錯軟體 xxgdb 和 ups、繪圖軟體 xpaint、 xfig、 tgif....... 等。也由於這些實用的軟體,使得 X Window 愈來愈受到大家的喜愛。
-------------------------------------------------------------------------------- xdm
xdm (X Display Manager) 通常是 X Window 使用者第一個接觸到有關
X 的軟體。在使用者 login X Window 之前所見到的 login 螢幕 (圖 59)
就是由xdm產生的(有些系統管理者並沒有在系統上啟動xdm,而是
使用 xinit。由於xinit 的設定及使用頗為複雜,而且 X Consortium 將
不再繼續支援 xinit,故在此不對xinit 加以介紹。)。
圖 59xdm
xdm 早期主要是為 X terminal 所設計的,而現在幾乎所有的
X Window系統都使用xdm。 xdm 是一個 X client 程式,它的主要作用
是建立一個login 的螢幕,判定 password 的正確與否,及啟使 login 之後
的環境。更簡單的說,它是用來提供使用者一個更方便的 X Window 介面。
--------------------------------------------------------------------------------
xdm 的工作週期
xdm 的工作週期大致是這樣的:
啟動xdm, xdm 此時會在螢幕上顯示一個 login 視窗,準備接受
使用者的輸入。
使用者輸入 login name 及 password 後, xdm 會檢查所輸入的 password
是否正確,如果正確則繼續進行下一個步驟,否則再回到等待的狀態。
進入 X Window。
xdm 讀入 Xsession 檔的資料。
xdm 檢查是否有 ~/.xsession 檔,如果有則執行 ~/.xsession
檔中的內容,否則執行 Xsession 檔的內容。
離開 X Window,此時xdm 會自動啟動另一個新的xdm,開始
另一個週期。
Xsession
xdm 在執行的過程中會讀取並執行 Xsession 和 ~/.xsession 二個檔的內容,
這個工作的主要作用是設定 X Window 的啟始環境,如有那些 X 軟體被
啟動,使用那一個視窗經理等。
例如通常我們在啟動 X Window 時需要啟動一個視窗經理,需要有
一個xterm用來輸入命令。有時還想同時啟動xclock 和xbiff 以提供
我們一個更便利的環境,這些動作都可以寫在 Xsession 中。
Xsession 基本上只是一個 shell script,使用者可以將任何自己希望的
內容寫入其中,以下就是一個典型的 Xsession 的內容:
#!/bin/sh
#
#Xsession
#
startup=$HOME/.xsession
resources=$HOME/.Xresources
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。
由上列 Xsession 的內容中我們可以發現,如果存在有 ~/.xsession 檔,
則 xdm 會優先執行 $\sim$/.xsession 檔。因為 Xsession 的內容通常
視由系統管理者設定,$\sim$/.xsession 檔則是由使用者自行設定。
所以這種方式可以讓使用者有更大的彈性,設定自己所喜好的環境。--------------------------------------------------------------------------------
Chooser
X11R4 及以前版本的xdm 每一個 X terminal 都只能連接到一個固定的
host,這種方式在許多情形下很不方便。X11R5 於是提供了一個新的選擇
--- Chooser。使用Chooser 及xdm 時 X terminal 的啟始螢幕如圖 60。
圖 60 Chooser
這時使用者就可以從表列的 host 清單中選取適當的 host,不必在固定
於某台機器。其餘的使用步驟則與傳統的xdm 相同。
X Window 的簡介就到此結束。希望經過這些說明之後,可以使
大家對 X Window 有一個基本的認識,也希望大家會喜歡 X Window。
--------------------------------------------------------------------------------
页:
[1]