X窗口系统中,每一个視窗都包含在另一个窗口中,这个视窗对它来说称之为父窗口。这使视窗间形成了一个等级制度根窗口在这个等级制度中的最顶级,它与屏幕一样大,其他所有窗口都是它的后代。

窗口区:1是根窗口,覆盖了整个屏幕;2和3是顶级窗口;4和5都是2的子窗口。

由于每一个窗口都覆盖了父窗口的一部分,所以其他窗口均在根窗口之上显示。因此,根窗口只能在其他窗口之后显示一部分。换一种说法,根窗口构成了屏幕的背景,通过一些方法(比如xsetroot或是X视频扩展英语X video extension程序)可以将一张图片设置作为電腦壁紙

根窗口的直系后代被称为顶级窗口,这些窗口通常包含了装饰框架和一个标题栏(实际都是由窗口管理器添加)。顶级窗口一般是图形用户界面中的普通窗口,而非顶级窗口一般用于按钮、文本框等控件

根窗口的属性有时会被作为客户端间通信的一种基本手段。举个例子,剪切缓冲区英语X Window selection是根窗口用于复制一个窗口中选中的部分到另一个窗口的属性,DWM窗口管理器会将根窗口的名字显示在状态区,X资源英语X resources也会在执行时存储到根窗口的一个属性。

虚拟根窗口

SWM英语swm窗口管理器引入了虚拟根窗口。从X协议角度看,这是一个普通的窗口。但是,X視窗管理器会将所有窗口的父级从真实根窗口替换为虚拟根窗口。虚拟根窗口主要供虚拟窗口管理器使用,用于提供如用户可切换的多个虚拟桌面

其他客户端(与窗口管理器相比)有可能使用虚拟根窗口,此时可以在真实根窗口的直系子项中找到名为__SWM_VROOT的窗口属性,其中有该窗口的标识符。在技术上,很多工程使用宏去查找作为包含vroot.h的根窗口。

Freedesktop.org窗口管理器规范要求真实根窗口有一个名为_NET_VIRTUAL_ROOTS的属性来包含一个作为虚拟根窗口的窗口列表;目前在_NET_CURRENT_DESKTOP属性中能找到的活动虚拟根窗口。

虚拟根窗口常被SWM、TVTWM英语tvtwmAMIWM英语amiwmEnlightenment窗口管理器使用。其他诸如KDE的系统使用一个虚拟背景窗口(比如包含各图标),但没有将其他窗口重分配给此窗口。X屏幕保护英语XScreenSaver也使用虚拟根窗口:当屏幕保护被激活时,该程序创建一个虚拟根窗口,并放置在其他所有窗口上,以及调用其模块来找到该虚拟根窗口并在其中绘制。

使用根窗口的实用工具

参见

扩展链接