sevil 0.1

w3mimg 以上に無いと死んでしまう、 sevilwm の機能を OSX 上で実装しました。もう Alt+Tab いらん。 WM じゃなくなったから sevil 。

http://shinh.skr.jp/osx/sevil.tgz

要最近の OSX と Accessibility API と g++ と make 。 Accessibility API なんか環境設定とかで設定する必要アリ。あと日常的にコマンド叩いてウィンドウスイッチする子はいないでしょうから、適当なホットキーをコマンドに変換してくれるランチャが必要。私は QuickSilver ってヤツをよくもわからず使ってます。

ウィンドウの移動などは、似たようなことをするものとして、 Rubisco というのがあるみたいです、が、 Carbon のものも動かないと私的にはダメなので確かめてもいません。

コマンド叩いて WM の機能を実現、ってのは X の時からやりたかったことなのでなかなか嬉しくはあります。 screen のスイッチにフックかけて今のウィンドウのフォーカス当てなおす、とかすれば w3mimg と screen の相性問題も解決するしなーと思って switch_self とか作ってみたり。

絶対 Linux マシンにして使うよなーと思ってましたが、一番のボトルネックが取れたので、このままマカーになりそうな気がします。なんとこの記述はまくーで書いたのですよ!

Accessibility API は最初全然情報っていうかサンプルねーよ死んじゃう!と思って、だいたい理解してきてからはめんどくせーなーと思ったけど、慣れるとまぁなかなか便利な物体みたいです。たぶん夜にでも書く。

書く気なくなったらアレなので書いておくと昨日書いた Core Graphics Services 使うつーのは色々キツそう。確かに WM の機能実現するプリミティブではあるのだけど UniversalConnection とかいうのを Dock が握ってて、ヤツを殺さないと自由にできないみたい。そしてヤツを殺す度胸はあまり無い。まぁ情報取得はできるし微妙にやれることもあるし回避策とかも色々あったみたいで調べるのは色々面白かったけど。

あと参考文献。 ADC と ADC の UIInspector と Witch の nm 出力。 Witch は Witch じゃなくて witchdaemon が本体なんだぜーとかいうことに気付いて全て解決した。もっとまともな方法で API 探せという。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h