«前の日記(2009-06-30 [火]) 最新 次の日記(2009-07-13 [月])» 編集
RSS: href="http://endoh-namazu.tierra.ne.jp/diary/index.rdf"


半期 四半期 全カテゴリ

新・なまず日記


2009-07-06 [月]

_ [xfumble] KDEやxfce4などへの対応



これまで、Fedora8+compiz-fusionという環境で開発とテストをしてきましたが、Make Tokyo Meeting 03に出展するために、デモ用環境を設定していたら、他の環境ではいろいろ問題が出ることがわかりました。

とりあえず、GNOME標準(Metacity)、KDE(KWin)、XFCE(Xfwm)などの環境で発見した問題を対処して、リリースしました。

まったく、ご参考まで、というレベルなんですが、「xfumble:ルール設定」ツールも入ってます。でも、まだ、なんにも設定できない(笑)。現在のルールがどうなってるかをわかりやすく見るのには役に立つ(笑)。


えー、ここでも書いたんですが、xfumbleで、コマンドを入力するためのコマンドパッドが、KwinやMetacityでは、トップに来てくれない、という問題がありまして、「そのウインドウを前に」持ってくるやり方が、どうもわからない。
「うまくいってるアプリのソースを読めばいいや」と思ったんですが、使ってたFedora8のリポジトリ設定が腐っていて、ソースが落ちない。それで、いっそのこと、Ubuntu8.10に入れ替えて、ソース取ってきて読みました。えらい遠回りになりましたが、まぁいいじゃん。

参考にしたのは、GNOMEパネルの、ウインドウピッカーという奴。というよりか、そいつが使ってる、libwnckというライブラリのソース。

わかってしまえば、なんてことはない。_NET_ACTIVE_WINDOWという名前のリクエストを、rootウインドウにclient_messageで送ればいい。
ここに書いてあるとおり、
_NET_ACTIVE_WINDOW
  window  = window to activate
  message_type = _NET_ACTIVE_WINDOW
  format = 32
  data.l[0] = source indication 
  data.l[1] = timestamp
  data.l[2] = requestor's currently active window, 0 if none
  other data.l[] elements = 0
こんな感じ。"source indication"は、2を指定すると、ウインドウマネージャが言うことを聞くようになる。"timestamp"は、0で大丈夫みたい。"requestor's currently active window"も、0でうまくいってるな。
上記のドキュメントは、ICCCMという規格の拡張規格。ICCCMってのは、「だれも守らない規約マニュアル」なんてヘンなアダナがついてるんだけど、とりあえず、_NET_ACTIVE_WINDOWに関しては、KWin、Metacity、Xfwm、compiz、みんな、守ってくれてるみたいだ。



[]