根視窗
在X Window系統中,每一個視窗都包含在另一個視窗中,這個視窗對它來說稱之為父視窗。這使視窗間形成了一個等級制度。根視窗在這個等級制度中的最頂級,它與螢幕一樣大,其他所有視窗都是它的後代。
由於每一個視窗都覆蓋了父視窗的一部分,所以其他視窗均在根視窗之上顯示。因此,根視窗只能在其他視窗之後顯示一部分。換一種說法,根視窗構成了螢幕的背景,通過一些方法(比如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的原始檔,包含了各種有關視窗管理員的虛擬根/桌面視窗的資訊