天天看點

X Window研究筆記(17)

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的代碼。

(待續)

繼續閱讀