ウィンドウ配置に関しては色々と考慮しなければならないことが多い。
フルスクリーン/最大化
フルスクリーンと最大化は似ているが異なる。共通している点は「ウィンドウを可能な範囲内いっぱいに表示する」という点だが、この「可能な範囲」がそれぞれの場合で異なっている。
フルスクリーン
- こちらの方が単純で、本当に画面全体に広げる
- ウィンドウの装飾(タイトルバーとか枠)は除去する
最大化
- 基本的に画面全体に広げるが、タスクバーやdockがある場合は被らないようにする
- ウインドウの装飾は残す(枠については除くWMもある)
ウィンドウを広げてよい範囲という意味では、タイル化も最大化に近い(単にウィンドウ数が1かそれ以上かという違い)。
_NET_WM_STRUT
上述の通り、最大化/タイル化の際にはタスクバーやdockの類を避けないといけない。そのためにはそれらのウィンドウが画面上のどの領域を占めているのかについての情報が必要で、それを表すプロパティがEWMHの_NET_WM_STRUT(_PARTIAL)である。_PARTIALの方が後から出てきたもので、より詳しい指定が可能となっている。そのため、_NET_WM__STRUT_PARTIALがある場合は_NET_WM_STRUTを無視しなければならない。
_NET_WM_STRUT_PARTIALはこんな感じになっている。