ログイン
編集不可のページディスカッション情報添付ファイル
"clear/wm_devel/2013-02-18"の差分

MMA
3と4のリビジョン間の差分
2013-02-18 18:48:39時点のリビジョン3
サイズ: 2787
編集者: clear
コメント:
2013-03-08 02:21:39時点のリビジョン4
サイズ: 2938
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 33: 行 33:
||_NET_CLIENT_LIST||存在するクライアントのリスト||||
||_NET_CLIENT_LIST_STACKING||同上、ただしbottom-to-topのスタック順||維持管理が面倒||
||_NET_CLIENT_LIST||存在するクライアントのリスト(古いものが先頭)||||
||_NET_CLIENT_LIST_STACKING||同上、ただしbottom-to-topのスタック順||||
行 38: 行 38:
||_NET_WM_DESKTOP||ウィンドウが属しているデスクトップ||これが設定されていないと動かないバー/パネルがある||

座標系について

  • 各ウィンドウはそれぞれの座標系を持っている
    • 原点は左上角、ウィンドウ枠の内側
  • ウィンドウの座標はそのウィンドウの左上角の点の座標で表す
    • こちらは枠の外側の角
  • 子ウィンドウの座標は親ウィンドウの座標系における座標
    • トップレベルウィンドウの座標は、ルートウィンドウの座標系においてのもの
    • reparentすると座標系が変わる
      • ConfigureRequestの希望座標はルートウィンドウの座標系でやってくる

      • ConfigureNotifyを送るときはルートウィンドウの座標系を用いる

  • ウィンドウの幅と高さに枠の幅は含まない
    • リサイズ時は注意する
  • XinearmaやRandR使用時はルートウィンドウが複数の物理モニタにまたがる可能性がある
    • 画面上の原点とルートウィンドウの原点は必ずしも一致しない

タイトルバー再考

  • いるのか
  • ウィンドウ名を表示するだけならバー/パネルの類でも可能かつ省スペース
    • バーを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

パネルが必要とする領域(上より細かい指定)

同上

clear/wm_devel/2013-02-18 (最終更新日時 2013-03-08 02:21:39 更新者 clear)