視窗管理員 與 桌面系統


視窗管理員

有沒有注意到: 不管你開了那一個應用軟體 -- firefox 或 inkscapeDr. Geo, 他們的 標題列 (title bar) 和邊框 (frame) 長得都一樣? 這部分的程式碼, 顯然不屬於任何一個應用軟體, 而是共同屬於同一個 視窗管理員 (window manager)。 Window manager 所管的事, 包含:

  1. 標題列 (顯示/選單/按鈕) -- 所以比方說你的 firefox 的標題列, 中文變亂碼, 應該去查看 window manager 的設定, 而不是去查看 firefox 的設定。
  2. 視窗的移動/放大縮小
  3. 不必點選, 隨著滑鼠移動到那一個視窗, 那個視窗就自動彈跳起來 (這個功能通常叫做 auto-raise ; 有些 window manager 則把它和 focus-follows-mouse 功能一併處理) 還有許多其他此類關於 「視窗之間的優先順序」 相關的設定, 也都歸 window manager 管。
  4. 桌布背景圖案。
  5. 虛擬桌面 (virtual desktop) -- 彷彿你的螢幕被放大了好幾倍。
  6. ...

常見的 window managers 有:

  1. compiz : 炫麗的 3d/果凍/火焰/... 等等超多特效。 主流版本的 Linux (例如 ubuntu) 通常都搭載這個。
  2. kwin : KDE 桌面系統指定的 window manager。
  3. enlightenment : 這個 (還算是) 輕薄短小卻又有音效的 window manager, 曾經是我的最愛。 不知為何, 最近版本的 ubuntu 沒將它納入套件庫。
  4. openbox : 所有輕薄短小 window managers 裡面, 比較主流的一個, 且中文不必另外設定。
  5. icewm : 因為輕薄短小, 也曾是我的最愛。 中文需要設定一下。
  6. metacity, fluxbox, fvwm, fluxbox, sawfish, afterstep, ..., 族繁不及備載。 詳見 1, 2

沒有 Window Manager 的生活

到底什麼是 window manager? 講半天理論, 不如體驗一下沒有 window manager 的生活, 就很清楚了。 失去幸福的時候, 最能體會什麼叫做幸福 :-)

  1. 所有工作視窗的圖片/文件/... 請先存檔。 等一下我們要暴力跳出 X Window, 現在若不存檔, 等一下所有資料都會遺失!
  2. 隨便開兩三個視窗。 其中有一個要是終端機程式。
  3. 下指令: ps fx | less 找找看那一個 process 是你的 window manager。
  4. 把它作掉! kill 98765 這裡的數字當然不是照抄。

滑鼠還能動, 但就是沒辦法切換/移動/縮放任何一個視窗了! 只好用 ctrl-alt-backspace 暴力登出

桌面系統

Linux 上, 有兩大 桌面系統 (desktop environment): GNOME 與 KDE。 另外還有比較輕薄短小的 XFCE 與 LXDE 等等。 你在圖形介面上看到的所有東西, 只要不是 window manager 管的, 幾乎通通都歸 desktop environment 管。 例如拖曳或點選桌面物件時應出現的反應, 垃圾桶, ... 等等。

在 KDE 底下, 請把桌面騰出一些空間 (不要有完全放大佔據桌面的視窗), 然後試著把隸屬於 KDE 的這些 processes 逐一 kill 掉: korgac, klipper, knotify, kaccess, kdesktop, kicker。 看看何時桌面消失? 何時選單列不見?

各種排列組合

slax + KDE + icewm 你可以安裝很多套 window managers; 但每次登入視窗系統, 就是只能用一套, 而且一定要用一套。

至於 desktop environment, 可以完全不裝, 也可以裝好幾套。 每次登入視窗系統, 最多只能用一套。

像我來自古代, 只要給我任何一個 window manager, 即使沒有 desktop environment 也可以活得下去。

像右圖, 就是 (在隨身碟開機的 slax 底下) KDE 加 icewm 的組合。 上面的工作列, 是由 KDE 的 kicker 所負責的; 下面的工作列, 則隸屬於 icewm。

許多 window managers 都會特別配合 GNOME 或 KDE, 加強整合性。 例如安裝了 enlightenment 之後, 在登入模式裡面, 可能會出現 「enlightenment」 「G-enlightenment」 「K-enlightenment」 等三種模式。