X Window研究筆記(17)
17.X Window 視窗管理器
很多人不知道視窗管理器是怎麼回事。他們認為 GNOME 和 KDE 就是視窗管理器,認為視窗管理器就是能夠提供一個工具條,能夠配置桌面背景,能夠設定很多菜單的東西。當然這種了解是不準确的,那什麼是視窗管理器呢?根據EWMH(freedesktop.org)的要求,視窗管理器的基本功能有以下這些:
- 模态視窗(Modality)。一般用來實作模态對話框,所謂模态對話框,就是具有這樣特性的對話框,除非你把它關掉,否則無法切換回到它的父視窗上。
- 大桌面(Large Desktop)。顯示器的大小是有限的,比如顯示器的分辨率為1024x768,那麼傳統的桌面就隻能這麼大一點。視窗管理器可以實作一個邏輯上的大桌面,較顯示器的實體分辨率,擁有更大的顯示範圍。當然你在某個時刻隻能看到桌面的一部分,這部分也稱為viewport,通過變換viewport可以看到桌面的其它區域。
- 固定視窗(Sticky windows)。固定視窗要求視窗的位置被固定到顯示器的實體位置, viewport的變換對它的位置都沒有影響。
- 虛拟桌面(Virtual Desktops)。同時打開的視窗太多時,可以把這些視窗分成不同的組,同一時刻隻顯示其中一組的視窗,每一組視窗就是一個虛拟桌面。
- 任務條(Taskbars)、分頁器(Pagers) 。顯示目前所有的打開的視窗,并且可以在這些視窗之間切換。
- 視窗棧序(Z-Order) 。就是視窗之間的上下關系。
- 保留區域(reserve space)。讓某個視窗獨占某塊靠邊的區域,比如任務條,一般都獨占桌面最下面的一長條區域。
- 視窗狀态(Window State) 。視窗有最大化、最小化、全屏等的狀态,這些由視窗管理器負責管理。當然,上層應用也可以調用視窗管理器提供的函數,來改變視窗的狀态。
- 視窗裝飾。在unix下,GUI的慣例是,視窗的标題和四周的邊框,都稱為裝飾,這些裝飾的顯示是由視窗管理器負責的。這樣的好處時,應用程式無須做任何修改,僅通過配置視窗管理器,就可以得到風格各異的顯示效果。
- 視窗協定。這主要用于實作視窗僵死狀态檢測,視窗之間的同步處理等功能。
這些都是視窗管理器的基本職責。關于視窗管理更全面的職責和協定可以參考freedesktop上的規範,關于視窗管理的實作可以參考matchbox-window-manager的代碼。
(待續)