第9章 方便的程式和視窗相關的工具
到目前為止我們已經涵蓋了使用系統的基本元素, 有了 xterm功能, 你開始從視窗系統獲得看得見的優點. 在本章我們描述一些小程式, 開始去充分使用系統並使你的工作更方便.
這章先提出 "案頭附屬品" (desk Accessory) 的方便程式, 接著介紹捕捉(capturing)、恢復 (restoring) 與列印螢幕影像的一組工具.
9.1 方便的程式
本節所描述的一些程式功能雖屬次要, 但是卻可以使你工作得更方便輕松.有些我們曾經提過 -- xclock 與 xcalc -- 但在這裡將更有組織地描述, 我們將看一些可以顯示目前機器負載和告訴你有郵件送達等功能的新程式.
9.1.1 一個類比或數位時鐘 - xclock
在第5章中我們用 xclock 為范例程式, 它有下列命令列選項 :
指定視窗初始大小與位置 : 用 -geometry geomspec.
設定背景色 : 用 -bg colour.
設定前景色 : 用 -fg colour.
設定指針的顏色 : 用 -hd colour.
指針邊緣高亮度 : 用 -hl colour, 以高亮度 colour 顏色為指針的邊緣.
其他有用的選項 :
使用數位時鐘 : -digital, 告訴 xclock 使用一個 24 小時的數字型時鐘, 以取代預設的類比型, 如圖 9 - 1.
設定 "時鐘-滴答" 頻率 : -update num, 使時鐘每 num 秒更新顯示一次. 處於指針狀態下, 若 num 小於 30 秒則以一個鑽石形秒針每num 秒移動一次, 如圖 9 - 2. (預設值為 60 秒)
設定半小時鐘聲 : -chime, 每半小時整使終端機鈴響一次, 每一個小時整鈴響兩次.
┌————————————————┐
│ p98. fig 9 - 1 │
│ │
│ │
│ 圖 9 - 1 數字型時鐘 │
└————————————————┘
┌————————————————┐
│ p98. fig 9 - 2 │
│ │
│ │
│ 圖 9 - 2 具有鑽石形秒針的指針型│
│ 時鐘 │
└————————————————┘
9.1.2 一個桌上型計算器 - xcalc
這是另一個我們曾經用過的程式. 我們用過的命令列選項如下 :
指定視窗初始大小與位置 : -geometry geomspec.
設定背景色 : -bg colour.
設定前景色 : -fg colour.
其他選項 :
指定計算尺 (slide-rule) 模式 : -analog, 執行程式模擬一個計算尺 (圖 9 - 3) 取代電子式計算器. 這實在很稀奇, 但一些更進一步的指令包含於下面, 因為它不包含在指南頁內.
指定 HP-10C 型計算器 : -rpn (代表反波蘭記數法 (Reverse Polish Notation)), 告訴 xcalc 模擬 HP-10C 型計算器 (如圖 9 - 4).
各種計算器模式的更深入的指令說明包含於指南頁. (無論你處於那一個模式, 當你將它表徵圖化時, 其表徵圖都是圖 9 - 5 的樣子.
┌——————————————————┐
│ p99. fig 9 - 3 │
│ │
│ │
│ 圖 9 - 3 類比的 xcalc 是一個計算尺 │
└——————————————————┘
┌——————————————————┐
│ p99. fig 9 - 4 │
│ │
│ │
│ 圖 9 - 4 反波蘭記數法 xcalc 計算器 │
└——————————————————┘
┌————————————————┐
│ p99. fig 9 - 5 │
│ │
│ │
│ 圖 9 - 5 xcalc 表徵圖 │
└————————————————┘
使用計算尺
使用滑鼠按鈕操作計算尺. 當滑鼠指標進入視窗內, 指標變成手型游標.
定位滑尺 - 左端 : 移動指標進入滑尺區, 定位至你想要的地方,碰觸左按鈕,滑尺左端跳至指標位置.
定位滑尺 - 右端 : 與設定左端一樣, 但碰觸右按鈕.
定位計算尺的游標 : 定位指標至你想要的尺體位置, 並碰觸左按鈕
: 尺的游標跳至指標位置.
滑動滑動棒 (slide-bar) : 定位游標至滑尺, 按下中間按鈕, 並保持按著 ... 拖拽滑尺到你要的位置, 然後放松按鈕.
將尺的長度變為兩倍 : 在尺體上碰觸中間按鈕.
將尺的長度變為一半 : 在尺體上碰觸右按鈕.
注意 : 假如你以左或右按鈕拖拽, 將會有奇怪的事情發生.
9.1.3 顯示機器的負載平均 - xload
xload 顯示系統平均負載 (在執行伫列裡的平均工作數目) 的柱狀圖 ,它會定期地更新. 典型的輸出如圖 9 - 6a, xload 的表徵圖如 9 - 6b.
┌———————————————————┐
│ p100. fig 9 - 6 │
│ │
│ │
│ 圖 9 - 6 xload 的正常視窗與表徵圖視窗│
└———————————————————┘
9.1.4 郵件通知程式 - xbiff
xbiff 是一個監視你的郵件檔與讓你知道何時有郵件到達的小程式. 它顯示一個郵箱的圖案; 當沒有新郵件時郵箱的旗子是向下的 (圖 9 - 7a). 當有新郵件進來時, xbiff 響鈴, 豎起旗子, 並使圖案變成反相顯示 (圖 9 - 7b).
你可以在 xbiff 視窗上碰觸任何滑鼠按鈕, 強迫旗子放下.
xbiff 接受一般對色彩的命令列選項 (-bg, -fg, -bd) 與對視窗特性的命令列選項(-display, -geometry, -bw). 其他包括 :
指定檢查郵件頻率 : -update num, 告訴 xbiff 每 num 秒檢查郵箱一次, 看是否有新的郵件到達. (預設值為 60 秒)
指定一個特定郵件檔 : -file filename, 使 xbiff 檢查在 filename 內的郵件, 取代預設名稱的檔. 預設名稱為 /usr/spool/mail/username, 其中username為你的登錄名稱 (login name)。
xbiff 特有的 -file 選項, 對網路上的郵件被集中處理和你的郵箱由另外的機器處理等兩方面非常有用. 下面的命令讓你執行某個郵件機器(比如說mars) 上的 xbiff程式, 查看你的郵箱, 並將顯示送回你自己的機器venus:
rsh mars xbiff -file /var/spool/mail/smith -display venus:0 &
┌—————————————————┐
│ p101. fig 9 - 7 │
│ │
│ 圖 9 - 7 xbiff 郵件監視視窗的兩種│
│ 狀態 │
└—————————————————┘
9.2 儲存, 顯示與列印螢幕影像
X是一個圖形系統, 而你將用它在視窗內顯示文字與圖形. 經常X視窗的使用者會想要捕捉螢幕上的某些影像, 以便稍後你可以重新顯示它, 或送至硬拷貝(hard-copy)裝置列印. 下面的小節將描述這些功能.
9.2.1 儲存一個視窗的影像 - xwd
xwd 傾印 (dump) 一個視窗的影像到一個檔案. 這個檔案稍後可以被其他程式處理 (例如列印一個硬拷貝).
使用 xwd 有許多種不同方法. 你可以明確地指定一個輸出檔 (使用命令列選項-out name), 或者使用 xwd 傾印影像到標准輸出. 你也可以明確地指定想傾印的視窗, 或可以讓 xwd "提示" 你一下.
讓我們拿最簡單的一個例子 : 於 xterm 下以下列命令啟動程式
xwd > outfile
只要 xwd 啟動, 游標便會變成 "十字線" (cross hairs) 狀, 見圖 9 - 8. 移動指標進入你想要傾印的視窗, 並碰觸任何按鈕 : xwd 響一次鈴表示它已經開始記錄視窗影像, 且在它完成時響兩次鈴. 然後游標恢復正常.
┌————————————————┐
│ p102. fig 9 - 8 │
│ │
│ │
│ 圖 9 - 8 十字線形游標 │
└————————————————┘
注意 1 : 假如你試圖傾印在螢幕上不完整的視窗, 程式可能失敗並在你的控制台 xterm 視窗內顯示出一長串的錯誤訊息 (假如你有一個控制台的話).
注意 2 : 被捕捉的影像是你真正在螢幕上的視窗邊界內所看到的, 特別的是,假如視窗的某部分被另一個視窗覆蓋, 傾印的影像將展現視窗涵蓋的可見部分以及遮蔽視窗重疊的部分. (例如 : 圖 9 - 9 展示一個被 xman 覆蓋的一個xterm 視窗的傾印結果) 這似乎是一個不方便的功能, 但有它的優點 :若想要獲得整個螢幕的傾印影像, 只要對根視窗執行 xwd 即可; 就如同你在螢幕上看到被覆蓋的根視窗一樣, 用這個方法你可以得到完整螢幕的圖片.
┌—————————————————┐
│ p102. fig 9 - 9 │
│ │
│ │
│ 圖 9 - 9 一個被重疊視窗的傾印結果│
└—————————————————┘
如何指定被傾印的視窗
有兩種方法可以透過命令列選項告訴 xwd 要傾印那一個視窗.
-root : 傾印根視窗. 例如 : 想得到螢幕的一個完整圖片, 使用命令 :
xwd -root > screenpic
-id win-id : 傾印視窗識別碼為 win-id 的視窗. (每個由 X server 建立的視窗皆有一個唯一的視窗識別碼 : 它只是一個識別視窗的號碼. 我們將在 "資訊與狀態程式 " (Information and status program)那一章 (第12章) 中告訴你