第19章 進一步介紹 uwm 和如何定制它
在第6章,你學到如何使用uwm 來完成基礎的視窗建構工作需求,而能以一個
舒服的方式使用視窗。現在我們繼續談視窗,集中於兩個主要的范圍:
1.此程式所提供的一些特別的特色,特別是:
·不使用選單,直接使用滑鼠建構視窗。
·我們尚未描述過的一些選單選擇。
·編輯現存表徵圖的標題。
2.如何定制uwm ,包含:
·對任何你所需的命令定義你自己的選單。
·將各種不同的視窗管理器功能系結到滑鼠按鈕和修飾鍵 (SHIFT,
CONTROL 等等)。
19.1 uwm 的新特色
現在我們來討論一些在先前介紹視窗管理器時,為了保持盡量地簡單,而省略
的標准的uwm 功能。
19.1.1 不使用uwm 的選單來管理視窗
直到目前,你仍然依賴著uwm 的選單來建構你的視窗 -- 移動它們、對它們重
定大小等等。如果所有的情況都使用選單,是相當慢的,所以uwm 提供你可直
接完成它任何命令的選項。
你可以使用滑鼠按鈕和修飾鍵,來指定你要執行的功能,和所要操作的視
窗。你現在應該已非常熟悉各種不同的視窗管理器功能和它們如何工作,所以
我們將很快地說明如何不使用選單來選擇這些功能。
Move:移動一個視窗
1.按下META鍵,保持按住。
2.指標位置所在的視窗將被移動。
3.用右按鈕,拖拽視窗到新的位置。
Resize:重定一個視窗的大小
1.按下META鍵,保持按住。
2.指標位置所在的視窗將被重定大小。
3.用中按鈕,拖拽視窗的外框到新的大小。
Lower:將一個視窗送到堆疊的底部
1.按下META鍵,保持按住。
2.將欲被送到堆疊的底部的視窗,碰觸一下左按鈕。
Raise:將一個視窗升到堆疊的頂端。
1.按下META鍵,保持按住。
2.將欲被送到堆疊的頂端的視窗,碰觸一下右按鈕。
Circulate up:將最底層被遮蔽的視窗升到最上層,你有兩種選擇:
1.按下META鍵,保持按住。
2.在根視窗上,碰觸一下右按鈕。
或
1.同時按下META和SHIFT 鍵,保持按住。
2.在螢幕上的任何地方,碰觸一下右按鈕。
Circulate Down:將最上層的視窗移到最底層,作法同Circulate Up,但
改為左按鈕。
Iconify:之前我們曾提過兩種形式的表徵圖化,一種是視窗曾經表徵圖
化過(已定義過表徵圖的位置) ,另一種為對 "新" 的視窗表徵圖化
。
表徵圖化一個新的視窗:
1.按下META鍵,保持按住。
2.將指標位置移至欲被表徵圖化的視窗。
3.按下LEFT按鈕,保持按住...
4. ... 拖拽表徵圖的外框到你所需的位置。
5.松開按鈕和META鍵。
注意它和Lower 操作程序的不同點,在此你是按下... 拖拽... 松開滑
鼠按鈕,而對Lower ,你只是碰觸一下按鈕。
表徵圖化一個曾經表徵圖化過的的視窗:
1.同時按下META和CTRL鍵,保持按住。
2.在你欲表徵圖化的視窗上,碰觸一下左按鈕。
(如果你對先前並未表徵圖化的視窗作這個操作,或經由resource結構
無法取得表徵圖的位置,表徵圖將出現在指標所在的位置)。
De-Iconify:將表徵圖還原為它的視窗 (在視窗原來的位置):
1.按下META鍵,保持按住。
2.在表徵圖上,碰觸一下中按鈕。
如果你覺得這些對滑鼠按鈕功能的結合十分笨拙且不易記憶,別擔心,很
多人都是如此。有更好的法子,剛才那些只是預設的設定,你可以完全由自己
來建構。在本章的後半部,我們將告訴你如何做。現在我們先來看一看,在標
准選單的一些功能和它們能做些什麽。
19.1.2 一些更多的選單選擇
這是一些我們在第6章中沒有解釋的標准的選單選擇。
Focus:讓你設定鍵盤的焦點(focus),也就是說,將鍵盤附屬於一個視窗
,所以不論螢幕上的指標在何處,鍵盤的輸入總是在同一個視窗。一
般鍵盤的輸入總是指向目前指標所在的視窗。
設定焦點到一個特定的視窗:選擇focus ,出現手指形游標,在你所
欲指定的視窗碰觸一下按鈕。
恢復正常:選擇focus ,在背景視窗上碰觸一下。
Restart:停止uwm ,重新啟動它,重新讀入建構檔 (下節說明) 且執行它
。在你改變建構檔且希 馬上執行新的設定時 (否則將等到你重新啟
動一個新的周期) 使用此選擇。
Freeze:暫停螢幕上所有的顯示,當你要對你的螢幕攝影時可以使用這個
選擇。欲重新恢復顯示,使用 ...
Unfreeze:重新恢復顯示,所有的視窗會立即更新。
Exit:中止uwm 。當你要殺掉uwm 時使用,例如在啟動一個不同的視窗管
理器之前。
Perferences 選單
我們在第6章提過,有兩種方法叫用uwm 的WindowOps選單 -- 在背景視
窗上按下中按鈕,或在按住META和SHIFT 兩個鍵的情況下,在任何地方碰觸一
下中按鈕。用第二種方法讓你呼叫出第二個選單,只要將指標移到WindowOps
選單的外邊,標頭為Preferences 的視窗就會出現。
在Preference中的選擇,只是一些xset程式中設定滑鼠和鍵盤的選項而已。
注意:Lock On 和 Lock Off選擇是和記錄有關的,可能會導致一個錯誤
的訊息在你的主控台視窗印出。
19.1.3 改變現存表徵圖上的標題
uwm 的預設表徵圖 -- 灰色的盒中有一個名稱 -- 如果你對同一個應用程式執
行數次拷貝後會有缺點,例如有三個xterm 的表徵圖,你無法明確的區分它們
。為了克服這點,uwm 允許你可以編輯表徵圖中的字串為你所需的任何字串。
(這只能在uwm 自己預設的表徵圖使用,例如你無法編輯在xclock的特定表徵
圖中的字串)。
欲編輯在一個表徵圖中的名稱:
1.將指標移至所欲編輯的表徵圖。
2.鍵入你所希 的任何文字。
3.你可以去掉文字,不論是先前存在或方才才輸入的,方法如下:
去掉前一個字元:按DELETE。
去掉整個名稱:按ctl-U。
19.2 定制uwm
uwm 具有高度的可建構性。你可以將整個范圍的三數和定義儲存在一個建構檔
中,當uwm 啟始時會將之讀入。我們前節曾經提過,你可以在中途改變建構檔
,藉著在WindowOps選單中Restart選項,告訴uwm 重新讀入它。
uwm 的建構檔
預設uwm 有兩個建構檔,其中之一為
/usr/lib/X11/uwm/system.uwmrc
通常由系統管理者設定,且第一個被讀入。另一個
$HOME/.uwmrc
是你自己的建構檔。兩個檔案均需要存在,uwm 硬性規定了預設設定。
注意:如果你用不正確的語法設定一個建構檔,當uwm 讀入時,你會得到
一個錯誤訊息像:
uwm: /usr/nmm/.uwmrc: 38: syntax error
uwm: Bad .uwmrc file...aborting
uwm 將不會啟動。當在一個新的周期啟動時,這沒有什麽大問題。然而,如果
你是在中途重新設定uwm ,你可以結束但沒有視窗管理器,且沒有xterm ,沒
有編輯視窗來編輯這個錯誤的檔案,無法啟始其它的視窗。如果此種情況發生
,你必需從其它的終端機或機器關閉X,或毀壞 (crash)你的系統。
uwm 的命令列選項
如果你不需要系統建構檔案,也不需要任何預設的設定,你可以藉著uwm 的命
令列選項 -b 抑制它們。
如果你要使用其它的檔案,就像兩個預設的建構檔一般,你可以用
-f filename 來指定它。
19.2.1 系結功能到鍵和按鈕
uwm 讓你定義當一個特定的滑鼠按鈕按下時,有某個功能會作用,例如當你在
一個視窗中碰觸一下中按鈕,它將被升到堆疊的頂層。這種系結結構和Toolkit
轉譯並沒有牽連,它完全由uwm 本身來完成。
為了讓這些結構更有用,你可以指定其它的條件來運用更多的功能,或許一個
修飾鍵 (像META) 需被按下,或許作用只發生在指標位於一個表徵圖上而非應
用程式視窗或背景視窗。我們已實際的看過這些例子:
此功能發生 ... 只有在這些 ... 只有指標在 ... 當這個
於... 修飾鍵被按下, 此種型態的視窗 滑鼠事件發
而且... ,而且... 生時
Resize META 一般視窗 按住中按鈕
且移動
WindowOps 沒有 背景視窗 按住中按鈕
選單
WindowOps META 和 沒有關系 按住中按鈕
選單 SHIFT
你藉著你的 .uwmrc(或其它的建構檔)所包含的系結規格來指定系結。規格
的格式和上面的表格類似,就像:
uwm-function = modifiers : window context : mouse events
( uwm 功能 = 修飾鍵 : 視窗的環境 : 滑鼠事件 )
這些元素為:
uwm 功能:uwm
-f filename 來指定它。
19.2.1 系結功能到鍵和按鈕
uwm 讓你定義當一個特定的滑鼠按鈕按下時,有某個功能會作用,例如當你在
一個視窗中碰觸一下中按鈕,它將被升到堆疊的頂層。這種系結結構和Toolkit
轉譯並沒有牽連,它完全由uwm 本身來完成。
為了讓這些結構更有用,你可以指定其它的條件來運用更多的功能,或許一個
修飾鍵 (像META) 需被按下,或許作用只發生在指標位於一個表徵圖上而非應
用程式視窗或背景視窗。我們已實際的看過這些例子:
此功能發生 ... 只有在這些 ... 只有指標在 ... 當這個
於... 修飾鍵被按下, 此種型態的視窗 滑鼠事件發
而且... ,而且... 生時
Resize META 一般視窗 按住中按鈕
且移動
WindowOps 沒有 背景視窗 按住中按鈕
選單
WindowOps META 和 沒有關系 按住中按鈕
選單 SHIFT
你藉著你的 .uwmrc(或其它的建構檔)所包含的系結規格來指定系結。規格
的格式和上面的表格類似,就像:
uwm-function = modifiers : window context : mouse events
( uwm 功能 = 修飾鍵 : 視窗的環境 : 滑鼠事件 )
這些元素為:
uwm 功能:uwm