視窗經理簡介

基本的 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

移動視窗的位置

利用下列的步驟可以移動一個視窗:
  1. 將滑鼠指標移至 menu bar 上,按下滑鼠左按鈕,這時指標的外觀由``箭頭'' 變成``交叉箭頭'',同時螢幕左上角會出現一組數字,顯示欲移動視窗左上角 目前的直角座標(X Xindow 中的座標原點是螢幕的左上角)。
  2. 繼續按住滑鼠按鈕不要鬆開,移動滑鼠的位置,這時會有一個和原來視窗 大小形狀完全相同的三乘三的``隱形''方格出現,這個方格代表著視窗的新位置。 在移動滑鼠的同時,螢幕左上角表示視窗座標的數字也會隨著改變。
  3. 將視窗移到適當的位置後,鬆開滑鼠按鈕,視窗就會在新的位置出現如圖10。
  4. 圖 10 將圖 9 中的 xterm 移到新的位置

利用上述移動視窗的技巧,我們也可以將重疊的視窗分開,或者將一個以上的 視窗重疊在一起。

縮放視窗

在 X Window 中我們可以藉由視窗經理對視窗作一維或二維的縮放, 將視窗變寬或是變窄,變高或是變矮,以下便是操作的步驟:

圖像化及反圖像化

有時因為同時在螢幕上開啟了幾個視窗,會使螢幕顯得擁擠而不方便。 這時一個解決的方法是結束掉一些不再使用的視窗。如果有些視窗雖然現在 並未使用,但不久之後又會用到,將它結束顯然不是一個很好的方法。於是 視窗經理提供了另一項解決之道 --- 圖像化。
所謂圖像化是將暫時用不到的視窗縮小成一個代表這個視窗的``圖像'' --- 通常是一個小圖案。當要再使用這個視窗時我們就可以將它``反圖像化'' --- 恢復成原來的視窗。圖像化及反圖像化的方法如下:
  1. 將滑鼠指標移至欲縮放視窗左上角之圖像化按鈕 (iconify button) 上,這時指標的外觀由``箭頭''變成一隻手的形狀。
  2. 圖 12 圖像化按鈕
  3. 按下滑鼠左按鈕,視窗就被圖像化了。圖 13 便是 xterm 的圖像。有些軟體 在設計時就已經設計了預設的圖像,但不論軟體本身是否有預設的圖像,我們 都可以另行將軟體的圖像設計成各式各樣美麗的圖案。
  4. 圖 13 xterm 的圖像
  5. 要將一個已經圖像化的視窗反圖像化,只需將滑鼠移至圖像上,再按下 滑鼠的左按鈕。圖像就會還原成與圖像化之前大小位置完全一樣的視窗。

彈跳式選單

為了提供一個更親和的使用者介面,目前的視窗經理大都具有跳彈式 選單的功能。利用跳彈式選單,使用者甚至可以不用鍵盤輸入任何文字或命令, 而完成他所要完成的工作。以下是跳彈式選單的操作方式:
  • 將滑鼠指標移至根視窗的任何位置。
  • 按下滑鼠的右按鈕並一直按著,螢幕上就會跳彈出一個選單 Windows 如圖 14。
  • 圖 14 跳彈式選單 Windows
  • 保持按下的滑鼠鈕,將指標在選單中上下移動,當指標移動到某一個 項目上時,該項目便會反白如圖 15。
  • 圖 15 在選單中移動指標 這時有二種可能,如果該項目是一個可執行的命令,只要鬆開按鈕就可以執行 該命令;如果該項目是一個``次選單'' (選項右端有一個``選單圖像''者),那麼將 滑鼠指標沿著反白的區域向右移,螢幕上就會出現次選單如圖 16。 圖 16 次選單 圖 17 透過多層選單執行 xeyes
  • 視窗經理中的選單是一種``階層式''的設計。也就是說次選單下還可以有 次選單。我們可以利用前述的選項技巧來選擇多層選單下的項目。例如我們要 自彈跳式選單中執行 xeyes,可以透過多層選單來完成這個動作如圖 17。這時 只要鬆開滑鼠按鈕就可以執行 xeyes。
  • 介紹完彈跳式選單的功用及操作之後,我們來看看幾個選單中的基本選項。 在結束彈跳式選單的討論之前,還有一點必需要注意的是:在不同的視窗經理下 選單中相同功能的選項名稱會有所不同。表 1 中所列的便是幾種常用的視窗經理 中選項名稱對照表。
    表 1 各種常用的視窗經理之選項名稱對照表
    Behavior OPEN LOOK OPEN LOOK twm(ctwm)
    Iconify window Close MinimizeIconify
    De-iconify windowOpen Restore-
    Exit applicationQuit CloseKill
    Make window full height
    of screen
    Full size- Zoom Vertical
    Make window full height
    and width of screen
    -Maximize Zoom full
    Restore window to normal Restore sizeRestore -
    Push window behind othersBack LowerLower

    虛擬工作區間

    虛擬工作區間原本是屬於工作區經理 (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)。各種視窗經理啟始檔的格式及詳細內容,請自行參閱 各視窗經理的說明頁,在此不多加贅述。 圖 21 Occupy All