リペアレンティング型ウィンドウマネージャ

リペアレンティング型ウィンドウマネージャは、X Window Systemウィンドウマネージャで、他のすべてのウィンドウを取り込むものである。

X Window Systemでは、すべてのウィンドウに対して親 (ペアレント) ウィンドウとなるルートウィンドウまたは別のウィンドウのいずれかが存在する。ルートウィンドウの子であるウィンドウは、トップレベルウィンドウ (top-level window) という。トップレベルウィンドウが作成されると、リペアレンティング型ウィンドウマネージャはそのウィンドウに対してさらに専用のウィンドウを新しく作成して親とする。こうすることで、ウィンドウマネージャはウィンドウをウィンドウ装飾やタイトルバーで装飾することや、たとえば仮想ウィンドウマネージャが必要とするウィンドウ操作の高度な制御が可能になる。

厳密には、リペアレンティング型ウィンドウマネージャはトップレベルウィンドウがマッピングされた (可視化を試みた) 時に通知を受けるようXサーバに登録される。そのようなイベントが発生すると、ウィンドウマネージャはフレームウィンドウを作成し、また大抵の場合でタイトルバーウィンドウも作成する。続いてフレームウィンドウはメインウィンドウとタイトルバーウィンドウの両方の親となる。ボタンやウィンドウタイトル等の他の装飾も作成される場合があるが、これらについては通常、タイトルバーウィンドウが親となる。[1]

uwmウィンドウマネージャ等の初期のウィンドウマネージャはリペアレンティング型ではなかったものの、モダンなウィンドウマネージャは実質的にすべてリペアレンティング型である。例外はdwmcwm、PLWM、ratpoison、stumpwm、そしてxmonadであるが、これらのウィンドウマネージャが典型的なウィンドウ装飾を一切使用しないためである。また、Compizはバージョン0.9.0まで装飾を別に作成していたが、これ以降はリペアレンティング型ウィンドウマネージャとなり、ノンコンポジットモードでも動作するようになった。

出典 編集