第5章 啟動和關閉退出X
在本章, 我們將學到:
.如何在自己的機器上啟動X.
.如何在視窗上做一些基本操作.
.如何關閉退出X.
我們在此假設你的系統管理者已經在你的系統上裝設好了X, 事實上即使不曾用過或不熟悉X, 裝設X也不會很困難. 因此如果你有必要自己裝設X, 本書的附錄將給你一些提示.
在還未開始前, 我們需要先知道已裝設好的X, 它的執行程式在那裡,M99v 版預設的目錄為 /usr/bin/X11,但很多地方是用 /usr/local/bin 或/usr/local/bin/X11, 當你知道了之後, 把它加到你的搜尋路徑 (search path) 裡, 如果你使用 C-Shell, 可以在你的.login檔 (或者可能是.cshrc 檔) 設定路徑, 如果你使用Bourne Shell, 則在.profile檔中設定. 例如,
在.login檔中使用C-Shell 的命令列設定路徑:
set path = (. /usr/local/bin/X11 /usr/UCb /usr/bin /bin)
如果你不設定路徑, X將無法正常啟動, 當你設好之後, 為了確定起見,先logout再login 一次, 檢查路徑是否設定正確 (用 echo $PATH 指令).
5.1 啟動X
在你的顯示器啟動X,鍵入命令:
xinit
則會依序發生:
1. 你的整個螢幕會被設定成灰色。
2. 一個巨大的 "X" 游標出現(見圖 5 - 1 )
┌————————————————┐
│ p48 fig 5.1 │
│ │
│ │
│ │
│圖 5 - 1 大的 "X" 游標 │
└————————————————┘
你可以用滑鼠將它在螢幕上移動,但按滑鼠按鈕或鍵盤都對它無影響。
3. 一個xterm 終端機模擬器的視窗出現在螢幕左上角,當游標移到這個視窗時,會改變成本文游標,(見圖 5 - 2),xterm 准備接受你的命令。
┌————————————————┐
│ │
│ p48 fig 5.2 │
│ │
│ │
│ │
│圖 5 - 2 xterm 的本文游標 │
└————————————————┘
系統啟動的畫面見圖 5 - 3。X現在已被啟動,你可以把xterm 這個視窗當成一個普通的終端機來使用,執行一些普通的指令,不過它最大的價值在讓你可以開始執行其它的X程式,我們將於稍後告訴你,現在先來讓你了解一下X的啟始動作做了些什麽。
┌————————————————┐
│ │
│ p49 fig 5.3 │
│ │
│ │
│ │
│圖 5 - 3 系統啟動的畫面 │
└————————————————┘
5.1.1 xinit 的內部操作:
首先, xinit 啟動Xserver程式在你的顯示器上執行, server建立一個它自己的根視窗, 並把視窗的背景色設定成灰色, 把游標設定成一個大 "X".
在server執行的期間, server一直控制著鍵盤及滑鼠, 這就是你能在螢幕上移動游標的原因, 但是因為目前沒有任何client程式要求告知鍵盤和滑鼠 "事件",所以server只是追蹤滑鼠游標的移動, 而所有其它的鍵盤或滑鼠輸入雖然都經過server處理但均被放棄, ( 因為沒有client程式有興趣 ),這就是按鍵盤或滑鼠按鈕沒有反應的原因.
接下來, xinit 啟動xterm 程式執行, xterm 對server而言是一個client程式, xterm 要求server建立一個視窗, 而且保持告知在這個視窗中的滑鼠和鍵盤事件, xterm 設定在視窗中執行一個shell , 當指標移至視窗之內便准備接受輸入.
鍵盤輸入被送至shell 就如同在一部真的終端機上輸入一般, 從shell( 及其副程式 )的輸出藉著xterm 顯示在視窗上, xterm 也接受滑鼠輸入,使得你能設定不同的程式操作參數和進行本文的剪貼 (cut and paste ) .
你可以觀察到系統執行這些動作的步驟, 例如當在系統啟動後, 在xterm視窗內執行 ps a 命令:
PID TT STAT TIME COMMAND
1900 C0 S 0:00 xinit
1901 C0 S 0:01 X:0
1902 C0 S 0:01 xterm -geometry +1+1 -n login -display unix:0 -c
1903 p1 S 0:00 -sh (csh)
1904 p1 R 0:00 ps
以上的顯示說明xinit 在主控台(console )顯示器上被啟動,它初始化server,X顯示為零。接著xterm 在一個虛擬(pseudo)的終端機上執行,xterm 啟動一個shell 執行,使得它能處理你在xterm 視窗所下的命令。最後,我們執
行ps命令產生上述的列表。
我們將在第8章討論更多的xterm 細節, 從現在起, 我們假設xterm 被視為一個DEC VT102 的終端機, 我們把重點轉移到系統啟動之後, 我們能做些什麽.
5.2 如何執行一些X程式
你目前有一個X server 控制的顯示器,一個叫xterm 的client程式,允許你輸入命令,本節告訴你如何執行其它的X程式。
因為X的client程式和X server 完全獨立,所以不需要特別的動作啟動它們,你可以像執行一般的程式一樣執行它們。但是這些client程式需要確實知道它們用的是那一個顯示器。實際上因為xterm 一開始設定了DISPLAY 環境變數,給定了它使用的顯示器名稱,而其它的client程式用此當作預設顯示器,因此你不需多做其它的事。
5.2.1 如何執行X的時鐘,xclock
我們用X的時鐘當作一個簡單的范例,先確定指標停在xterm 視窗中,然後輸入命令:
xclock
一個小的時鐘影像出現在螢幕左上角,覆蓋了第一個視窗一部份,如圖 5 - 4
┌————————————————┐
│ │
│ p51 fig 5.4 │
│ │
│ │
│圖 5 - 4 xclock 啟動後的畫面 │
└————————————————┘
現在有三個問題要克服:
第一個問題:由於xterm 這個 "終端機" 已經有一個程式(xclock)在執行,所以我們無法再輸入其它的命令,該怎麽辦?
唯一的辦法就是停掉xclock,但當你按下ctrl-c或DEL 鍵時,xclock便會消失,要克服這種狀況,你需要非同步(asynchronously)執行xclock,用命令:
xclock &
則目前xterm 至少能接受你輸入其它的命令。
第二個問題:如何中止xclock?
X server 本身沒有提供直接的介面中止應用程式,但是有一個叫xkill的client程式可讓你殺掉應用程式,在xterm 視窗內輸入xkill 命令便可啟動這個程式,xkill 會顯示一個覆蓋性的方形游標(draped box cursor ),見圖5-5 ,移動這個游標到任何你想殺掉的應用程式的視窗中,碰觸左按鈕,應用程式的視窗會消失且應用程式和xkill 會一起結束,你也會得到如下的訊息:
xkill:killing creator of resource 0x40004d
XIO:fatal IO error 32 (Broken pipe) on X server "unix:0.0"
after 207 requests (178 known processed) with 0 events remain-
ing.
The connection was probably broken by a server shutdown or kill-
client.
┌—————————————————┐
│ │
│ p52 fig 5.5 │
│ │
│ │
│圖 5 - 5 xkill的覆蓋性的方形游標 │
└—————————————————┘
如果為了某些緣故你無法進到應用程式的視窗內用xkill 中止它,你通常可以用UNIX的辦法:找出process 的ID,然後殺掉它,例如:
$ps a grep xclock
1907 p2 I 0:00 xclock
1909 p2 S 0:00 grep xclock
$kill 1907
[1] Terminated xclock
$
第三個問題:如何避免時鐘和xterm 視窗重疊?
這個問題換個問法是:你如何安排應用程式視窗的位置?
你可以用前一章說明過的 "geometry" 的參數來解決,例如輸入命令:
xclock -geometry 200x300+400+500 &
這個命令告訴xclock建一個寬200 高300 個像素的視窗,位於螢幕左上角右邊400 個像素,下邊500 個像素。
以上的三個問題都解決了,下一章會介紹更巧妙的解決方法。
使用彩色
如果你擁有彩色顯示器,那麽不妨以xclock進行你指定和使用彩色的實驗,xclock有數種選項做彩色識別:
-bg color 設定背景顏色
-fg color 設定前景顏色
-hd color 設定時鐘指針的顏色
-hl color 設定時鐘指針邊線的顏色
輸入指令:
xclock -bg turquoise -fg red -hd magenta
你可以看到一個彩色的鐘,稍後我們會再說明顏色的正確使用名稱。
xclock啟動之後,便不再需要和使用者交談(interaction ),下一節我們將介紹另一個需要從鍵盤和滑鼠輸入的小程式。
5.2.2 xcalc - 桌上型計算器
xcalc 是一個X的計算器,移動指標到xterm 視窗,輸入命令:
xcalc - geometry +700+500 &
一個像TI-30 型計算器的視窗出現了(如圖 5 - 6),你可以用滑鼠或鍵盤
來操作它。
┌————————————————┐
│ │
│ p54 fig
xcalc - geometry +700+500 &
一個像TI-30 型計算器的視窗出現了(如圖 5 - 6),你可以用滑鼠或鍵盤
來操作它。
┌————————————————┐
│ │
│ p54 fig