
X Window Systemでは、ウィンドウとは画面上で描画が可能な領域のことです。[ 1 ]ルートウィンドウは画面全体を覆います。[ 1 ]作成されたすべてのウィンドウはルートウィンドウ内に含まれ、ルートウィンドウを最上位とする階層構造を形成します。他のすべてのウィンドウはルートウィンドウの子または子孫です。
各ウィンドウは親ウィンドウのその部分を覆うため、他のすべてのウィンドウはルートウィンドウの上に表示されます。結果として、ルートウィンドウは他のすべてのウィンドウの背後にある画面部分として表示されます。つまり、ルートウィンドウが画面の背景を形成します。ルートウィンドウの背景画像として画像を設定することで、画像を画面の壁紙xsetrootとして使用できます。これは、たとえば、またはxvプログラムを使用して行うことができます。
ルートウィンドウの直下の子ウィンドウは、トップレベルウィンドウと呼ばれます。これらのウィンドウは通常、装飾的なフレームとタイトルバー(実際にはウィンドウマネージャによって追加されます)で描画されます。トップレベルウィンドウは、非公式には、ほとんどのGUIの用語でいうところの通常のウィンドウです。トップレベルではないウィンドウは、ボタンやテキストボックスなどに使用されます。
ルートウィンドウのプロパティは、クライアント間の通信手段として基本的な形で利用されることがあります。例えば、カットバッファはルートウィンドウのプロパティであり、選択したテキストをあるウィンドウから別のウィンドウにコピーするために使用されます。また、dwmウィンドウマネージャは、ステータス領域にルートウィンドウの名前を表示します。Xリソースも、実行中にルートウィンドウのプロパティに格納されます。
swmウィンドウマネージャは仮想ルートウィンドウを導入しました。Xプロトコルの観点から見ると、これは通常のウィンドウです。しかし、仮想ルートウィンドウを使用するXウィンドウマネージャは、実際のルートウィンドウではなく、この仮想ルートウィンドウにすべてのウィンドウの親を再割り当てします。仮想ルートウィンドウは主に、親を再割り当てするウィンドウマネージャによって使用され、たとえば、ユーザーが切り替え可能な複数の仮想デスクトップを実現するために使用されます。
ウィンドウマネージャ以外のクライアントは、仮想ルートウィンドウを使用する必要がある場合があります。このウィンドウの識別子は、実際のルートウィンドウの直下の子にあるウィンドウプロパティ__SWM_VROOTで見つけることができます。技術的には、多くのプログラムは、という名前のインクルードファイルで再定義されたルートウィンドウを見つけるためのマクロを使用しますvroot.h。
freedesktopウィンドウマネージャの仕様では、実際のルートウィンドウのプロパティに、仮想ルートウィンドウとして機能しているウィンドウのリストを含めることが求められています。現在アクティブな仮想ルートウィンドウは、実際のルートウィンドウの_NET_VIRTUAL_ROOTSプロパティで確認できます。_NET_CURRENT_DESKTOP
仮想ルートウィンドウは、swm、tvtwm、amiwm、enlightenmentといったウィンドウマネージャで使用されます。KDEなどの他のシステムでは、仮想背景ウィンドウ(アイコンなどが含まれる)を使用しますが、他のウィンドウをこのウィンドウに再親付けすることはありません。仮想ルートウィンドウはXScreenSaverでも使用されます。スクリーンセーバがアクティブになると、このプログラムは仮想ルートウィンドウを作成し、他のすべてのウィンドウの上に配置し、仮想ルートウィンドウを見つけて描画するハック(モジュール)の1つを呼び出します。