根窗口
在X窗口系統中,每一個視窗都包含在另一個窗口中,這個視窗對它來說稱之為父窗口。這使視窗間形成了一個等級制度。根窗口在這個等級制度中的最頂級,它與屏幕一樣大,其他所有窗口都是它的後代。
由於每一個窗口都覆蓋了父窗口的一部分,所以其他窗口均在根窗口之上顯示。因此,根窗口只能在其他窗口之後顯示一部分。換一種說法,根窗口構成了屏幕的背景,通過一些方法(比如xsetroot
或是X視頻擴展程序)可以將一張圖片設置作為電腦壁紙。
根窗口的直系後代被稱為頂級窗口,這些窗口通常包含了裝飾框架和一個標題欄(實際都是由窗口管理器添加)。頂級窗口一般是圖形用戶界面中的普通窗口,而非頂級窗口一般用於按鈕、文本框等控件。
根窗口的屬性有時會被作為客戶端間通信的一種基本手段。舉個例子,剪切緩衝區是根窗口用於複製一個窗口中選中的部分到另一個窗口的屬性,DWM窗口管理器會將根窗口的名字顯示在狀態區,X資源也會在執行時存儲到根窗口的一個屬性。
虛擬根窗口
[編輯]SWM窗口管理器引入了虛擬根窗口。從X協議角度看,這是一個普通的窗口。但是,X視窗管理器會將所有窗口的父級從真實根窗口替換為虛擬根窗口。虛擬根窗口主要供虛擬窗口管理器使用,用於提供如用戶可切換的多個虛擬桌面。
其他客戶端(與窗口管理器相比)有可能使用虛擬根窗口,此時可以在真實根窗口的直系子項中找到名為__SWM_VROOT
的窗口屬性,其中有該窗口的標識符。在技術上,很多工程使用宏去查找作為包含vroot.h
的根窗口。
Freedesktop.org窗口管理器規範要求真實根窗口有一個名為_NET_VIRTUAL_ROOTS
的屬性來包含一個作為虛擬根窗口的窗口列表;目前在_NET_CURRENT_DESKTOP
屬性中能找到的活動虛擬根窗口。
虛擬根窗口常被SWM、TVTWM、AMIWM和Enlightenment窗口管理器使用。其他諸如KDE的系統使用一個虛擬背景窗口(比如包含各圖標),但沒有將其他窗口重分配給此窗口。X屏幕保護也使用虛擬根窗口:當屏幕保護被激活時,該程序創建一個虛擬根窗口,並放置在其他所有窗口上,以及調用其模塊來找到該虛擬根窗口並在其中繪製。
使用根窗口的實用工具
[編輯]參見
[編輯]擴展鏈接
[編輯]- Extended Window Manager Hints (頁面存檔備份,存於網際網路檔案館),freedesktop.org提供
- toon_root.c,一個XPenguins的源文件,包含了各種有關窗口管理器的虛擬根/桌面窗口的信息