2011年1月18日火曜日

Warp

ところで私は、WarpというSpaces.appを便利にするユーティリティを使っています。デスクトップの左右の端にカーソルを持って行くとworkspaceが切り替わる、というものです。

これがマウスゼスチャとか、ホィールボタンとかに対応してくれたらわざわざ自分でtoolを作ってみようかと考えることもないわけですが、そこまで便利ではない。あ、そうか、作者さんに要望してみるという手はありますな。

それはともかく、作者さんのblogに何かその手の情報はないかな、と思って本日行ってみたら、なんてこったい、githubにソースをおいてあるじゃん!

で、さっそく git cloneしてソースを眺める。

頭の中で勝手に想像していたのは、Spaces.appにイベントを発行して動かしているのではないか、ということだったんですが、全然違いました。

workspaceの移動は基本的にCGSSetWorkspaceを使っていました。で、移動したあと、spacesSwitchCallbackという関数で
[[NSNotificationCenter defaultCenter] postNotificationName:@"ActiveSpaceDidSwitchNotification" object:nil userInfo:info];
というふうにSpacesに通知してるんですな。なるほどねえ。

さらにworkspaceの最大数は、
CFPreferencesGetAppIntegerValue(CFSTR("workspaces-rows"), CFSTR("com.apple.dock"), nil);

で行と列の最大数を取得して計算しているみたい。

これは勉強になります。しばらく「荻原本」とWarpのソースを読むことになりそう。

よし、と。新しく、「cocoa」というtagも作ってみた。

0 件のコメント:

コメントを投稿