サイズ: 998
コメント:
|
← 2013-03-08 02:21:39時点のリビジョン4 ⇥
サイズ: 2938
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 16: | 行 16: |
タイトルバー再考 * いるのか * ウィンドウ名を表示するだけならバー/パネルの類でも可能かつ省スペース * バーをWMに組み込んでしまうと外部のものを使えなくなる * 組み込む方が実装は楽でオーバーヘッドも少ない * 「一つのことを行え」というUnix哲学的にはよくない * WMの付属品として、WMからは分離して別に作る * 使うかどうかはユーザに任せる * 無くてもWMは動作可能であることが望ましい * 少なくとも、他のものに変えても動作するようでないと分離する意味がない * 必然的に、連携はEWMHのプロパティを介して行うことになる * タイトルバーはウィンドウに追従するので、画面上部/下部に固定されるバーより分かりやすい * 「閉じる」ボタンのようなものを付けるならタイトルバーが適している WMを外部のバー/パネルと連携させるために最低限対応すべきと思われるEWMHのプロパティ ||プロパティ||内容||備考|| ||_NET_CLIENT_LIST||存在するクライアントのリスト(古いものが先頭)|||| ||_NET_CLIENT_LIST_STACKING||同上、ただしbottom-to-topのスタック順|||| ||_NET_NUMBER_OF_DESKTOPS||仮想デスクトップ数||これが設定されていないと動かないバー/パネルがある|| ||_NET_CURRENT_DESKTOP||現在のデスクトップ|||| ||_NET_ACTIVE_WINDOW||現在フォーカスを得ているウィンドウ|||| ||_NET_WM_DESKTOP||ウィンドウが属しているデスクトップ||これが設定されていないと動かないバー/パネルがある|| ||_NET_WM_STRUT||パネルが必要とする領域||最大化を正しく行うために必要|| ||_NET_WM_STRUT_PARTIAL||パネルが必要とする領域(上より細かい指定)||同上|| |
座標系について
- 各ウィンドウはそれぞれの座標系を持っている
- 原点は左上角、ウィンドウ枠の内側
- ウィンドウの座標はそのウィンドウの左上角の点の座標で表す
- こちらは枠の外側の角
- 子ウィンドウの座標は親ウィンドウの座標系における座標
- トップレベルウィンドウの座標は、ルートウィンドウの座標系においてのもの
- reparentすると座標系が変わる
ConfigureRequestの希望座標はルートウィンドウの座標系でやってくる
ConfigureNotifyを送るときはルートウィンドウの座標系を用いる
- ウィンドウの幅と高さに枠の幅は含まない
- リサイズ時は注意する
- XinearmaやRandR使用時はルートウィンドウが複数の物理モニタにまたがる可能性がある
- 画面上の原点とルートウィンドウの原点は必ずしも一致しない
タイトルバー再考
- いるのか
- ウィンドウ名を表示するだけならバー/パネルの類でも可能かつ省スペース
- バーをWMに組み込んでしまうと外部のものを使えなくなる
- 組み込む方が実装は楽でオーバーヘッドも少ない
- 「一つのことを行え」というUnix哲学的にはよくない
- WMの付属品として、WMからは分離して別に作る
- 使うかどうかはユーザに任せる
- 無くてもWMは動作可能であることが望ましい
- 少なくとも、他のものに変えても動作するようでないと分離する意味がない
- 必然的に、連携はEWMHのプロパティを介して行うことになる
- バーをWMに組み込んでしまうと外部のものを使えなくなる
- タイトルバーはウィンドウに追従するので、画面上部/下部に固定されるバーより分かりやすい
- 「閉じる」ボタンのようなものを付けるならタイトルバーが適している
WMを外部のバー/パネルと連携させるために最低限対応すべきと思われるEWMHのプロパティ
プロパティ |
内容 |
備考 |
_NET_CLIENT_LIST |
存在するクライアントのリスト(古いものが先頭) |
|
_NET_CLIENT_LIST_STACKING |
同上、ただしbottom-to-topのスタック順 |
|
_NET_NUMBER_OF_DESKTOPS |
仮想デスクトップ数 |
これが設定されていないと動かないバー/パネルがある |
_NET_CURRENT_DESKTOP |
現在のデスクトップ |
|
_NET_ACTIVE_WINDOW |
現在フォーカスを得ているウィンドウ |
|
_NET_WM_DESKTOP |
ウィンドウが属しているデスクトップ |
これが設定されていないと動かないバー/パネルがある |
_NET_WM_STRUT |
パネルが必要とする領域 |
最大化を正しく行うために必要 |
_NET_WM_STRUT_PARTIAL |
パネルが必要とする領域(上より細かい指定) |
同上 |