IT用語集 › プログラミング › SubstructureRedirect

SubstructureRedirect

プログラミング Svenska → 更新: 2026-10-24

普通のクライアントをウィンドウマネージャに変えるX11のイベントマスク。サーバーは他のプログラムのウィンドウ要求を自分で実行せず、そのクライアントに引き渡す。

1987年のXプロトコルはウィンドウの置き場所を決めることを拒んだが、フックは残した。あるウィンドウ(実際にはルートウィンドウ)でSubstructureRedirectMaskを選択したクライアントには、他のクライアントがその子ウィンドウをマップ、移動、リサイズ、重ね替えしようとするたびに、MapRequest、ConfigureRequest、CirculateRequestイベントとして要求が回される。ウィンドウマネージャが要求を自分で(改変してもしなくても)実行するか、無視するまで、画面上では何も起きない。権力はすべてそこにある。ウィンドウに枠を付ける(リペアレンティング)、デスクトップに強制配置する、画面より大きくさせない、といった動作は、同じイベントへの異なる答えにすぎない。

サーバーが許すのは、1ウィンドウにつき1クライアントだけだ。2つ目のウィンドウマネージャがマスクを選択しようとするとBadAccessが返る。「another window manager is already running」というメッセージの出どころである。SubstructureNotifyMaskは、起きたことを通知するだけの受動的な兄弟だ。メニューやツールチップのようなOverride-redirectウィンドウは、この仕組み全体を迂回する。Waylandではコンポジタがサーバーそのものなので、同等の仕組みはない。ウィンドウマネージャが差し替えられる存在でなくなったのは、そのためだ。

← 用語集に戻る