歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

X Window 系統使用指南--9


第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章) 中告訴你如何找到一個指定視窗的
識別碼).
(這些選項在 xwd 指南頁內沒有描述)
使用這些選項的好處是你不必使用滑鼠去指定你感興趣的視窗. 因為有時
候在傾印的同時,滑鼠必須出現在某個特定的地方執行某項特定的功能,例如:
呼叫一個突現式選單, 或使一個命令按鈕出現你想要的狀態. 舉例來說:欲儲存
圖 6-1的螢幕影像, 滑鼠必須被使用以突現uwn 選單,因而造成你沒有辦法同時
使用滑鼠去指定 xwd 的目標. 下面是如何捕捉一個影像的步驟 :
1. 在一個 xterm 視窗, 鍵入命令
sleep 10.xwd -root > uwmfile
在捕捉影像之前, 給你自己時間使螢幕進入你要的狀態.
2. 移動指標至背景視窗上.
3. 按下滑鼠中間按鈕, 出現 WindoeOps 選單, 並保持按下不松開 ...
4. ... 等一下, 直到 xwd 響鈴一次告訴你開始, 完成則響鈴二次. 然後
放松按鈕.
相同的方法 (技巧) 被用於捕捉第8章所述之 xterm 選單, 請注意必須
使用明確的視窗識別碼. (在 "資訊與狀態程式" 那一章 (第12章) 中將再一
次提到)
9.2.2 放大螢幕視窗影像 - Xmag
xmag 容許你快拍 (snapshot) 任何螢幕的影像, 並以任意倍數放大他們. 最
簡單的方法為采用交談方式指定你感興趣的區域:
1. 啟動程式 (用 xmag 命令) : xmag 顯示一個閃動的矩形外框.
2. 將矩形框安置到你想要的地方上.
3. 碰觸任何按鈕 : xmag 快拍矩形框內的區域, 並顯示一個清新的視窗
外框, 裡面正顯示放大的 (enlarged) 快拍影像.
4. 仿照在第6章啟動 xclock 後所采用的方法一樣使用指標與按鈕放置
外框. (例如 : 碰觸滑鼠左按鈕將視窗安置在指標目前所在的位置)
5. xmag 在你剛安放的視窗內, 重繪放大的影像.
你現在可以選擇底下任一動作:
. 你可以按 Q 或 q 或 CTRL-C,接著指定 xmag 視窗內的選項, 跳出 xmag.
. 你可以按滑鼠中間按鈕或左按鈕以移開目前放大的視窗, xmag 再次顯示
出它的閃爍矩形, 所以你可以放大螢幕上另一個區域.
. 按下滑鼠左按鈕 : xmag 顯示出在指標下的像素座標, 即像素的號碼 (它
是一個該像素顏色的內部表示法), 以及像素的 RGB 值, 亦即像素顏色的
紅, 綠, 藍成分. 當你移動指標, 這些顯示隨著更新, 直到你放松按鈕.
程式記錄快拍影像只是為了立即再顯示 -- 沒有任何方法可以取得它以便傾印
影像至一個檔案.
xmag 的命令列選項
預設的操作方法被一些方式限制住 -- 你必須以交談方式指定被放大的區
域, 區域的形狀與大小被固定, 放大率都是 5. 但事實上你可以使用命令列選
項改變上述所有的特性 :
指定不同的放大率 : -mag num, 放大影像 num 倍 (num 須為整數). 例
如 : -mag 2, 將產生一個為原來兩倍寬與兩倍高的影像.
指定大小與放大區域的位置 : 使用 -source geomspec. 例如 :
-source 300x100 + 450 + 762
xmag 不提示任何訊息, 但將直接跳到它顯示放大視窗外框的步驟, 假
如 geomspec 只有位置部分, 則大小部分預設為 64x64.
僅指定放大區域的大小 : 使用 -source geomspec, geomspec 僅由大小
部分組成, 就像
-source 300x100
xmag 將顯示一個閃爍的 300x100 的矩形外框, 等你定位與碰觸按鈕.
9.2.3 儲存一部分螢幕的影像
xwd 僅對單一, 完整視窗操作. 假如想補捉一個視窗的某部分, 或某些視
窗一起,你必須采用兩階段處理 :
1. 使用 xmag 程式選擇你要的區域, 並在一個單一視窗 (亦即 xmag 本
身) 顯示它.
2. 用 xwd 傾印 xmag 視窗至一個檔案. (假如你想傾印與最初一樣大小
的影像, 別忘了指定 -mag 1 給 xmg.)
9.2.4 顯示一個先前傾印的影像 - xwud
xwud "反傾印" (undumps)一個先前曾經被傾印至一個檔案的影像, 也就是
再次將影像顯示於螢幕上.預設的作法是它從標准輸入讀入傾印檔, 所以反傾印
一個你想要檔案類似:
xwud < screenpic
xwud 顯示閃爍的視窗外框, 准備讓你使用視窗管理器. 當你已安置好它
, 影像即被顯示. 當然你可以利用視窗管理器移動視窗, 重定大小, 表徵圖化
, ...等, 就如同其他任何視窗一般.
注意 : 在指南頁內提到的 -inverse 可能無法正常運作。
9.2.5 列印先前傾印的影像 - xpr
xpr 能夠轉譯一個先前曾傾印的影像為可送至硬拷貝印表機列印的格式. 它
支援各種不同的印表機 - Postscript, DEC LN03 與 LA100, 以及 IBM PP3812.
由於預設是寫到標准輸出, 所以典型的用法應該是 :
xpr -device ln03 < screenpic | lpr
xpr 的命令列選項
xpr 接受數個選項, 包括控制影像在紙上的位置, 大小與配置, 和指定輸
出的印表機型式 :
指定印表機型式 : 使用 -device type, 這裡的 type 是指 ln03, la100,
ps (Postscript) 或 pp (指 PP3812).
控制影像的大小 : 由於預設 xpr 以最大的尺寸列印影像, 你可以用
-width num 或 -height num 指定最大的寬度或高度, num 的單
位為 inch (不必是整數).
對影像標刻度 : 你可以使用 -scale num 對影像標刻度, num 為整數.
作法與 xmag 的 -mag 選項類似, 但大小可能扭曲, 因為印表機可
能有不同的解析度, 亦即每個 inch 有不同的點 (像素) 數, 例如 :
-scale 2 表示每個螢幕像素被印表機印成 2x2 點的方形, 所以假
如你的螢幕為 75 dpi 且你的印表機為 300 dpi, 列印影像僅為螢
幕影像大小的一半 (75x2/300 = 0.5).
加影像標題 : 使用 -header string 或 -trailer string 分別將一文字
字串印在影像的上面或下面.
利用單一操作命令傾印與列印一個視窗 - xdpr
xdpr 是一個使用 xwd 傾印視窗影像, 接著使用 xpr 格式化列印影像, 最後
使用 lpr 印出影像的一個程式. 它接受所有這三種程式的命令列選項 (事實
上 xdpr是一個 shell描述, 它將上述三種程式包裝在一起以便使用。它真正
的工作為檢查命令列上的各個選項且傳送它們給適當的程式)
9.3 結論/摘要
在本章中你已見過一些可幫助你處理日常的工作小程式, 和一些特殊的工
具以記錄和重新 (建立) 產生螢幕影像. 擁有這些工具你開始得到視窗系統的
優點並開始使用它的圖形能力.
下一章我們繼續以相同的方向看一些普通的公用程式, 看它們如何利用視
窗系統去簡化操作與增強使用介面.
Copyright © Linux教程網 All Rights Reserved