Core Graphics Services について
そのへんの API については隠しつーだけあって解析してる人もいる、って程度みたいだけど、私はこのへんとか参考にしつつ。
http://dev.lipidity.com/wp-content/uploads/2006/11/coregraphicsservices.h
API 一覧は nm でサックリ取れる。
nm /System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/CoreGraphics
CGSGetWindowProperty とかに渡す文字列定数とかは strings とかでそれなりにわかった気がする。あとは otool -tv よりもうちょいいい逆アセンブラがあるといいんだけど。
んで CGS ってのは何かっていうと(出てくるの遅いな)よくわからんけど、 Window Manager を作るための機構ですね。 API 見てる限りでは、 X なんかよりはるかにやりやすそうです。
例えば仮想デスクトップなんつーのは X だと普通全 Window に対して見せるか見せないかを把握しておいて…とかするわけですが、なんか CGS は自前で workspace って概念を持っているみたい。それどころかたぶん、仮想デスクトップ切り替え時のエフェクトとかも既に実装されてて、 VirtueDesktop の切り替え時のかっこいいエフェクトはなんかそれ使ってるだけみたいだなーと。ソース斜め読みした感じだけど。
こんなとこばっか眺めてる理由ってのはつまり sevilwm のウィンドウスイッチングが無いと俺は死ぬ明日死ぬって感じなので作りたいなぁということですはい。っていうか MacOSX の Alt+Tab ありえんですね。あと Expose が便利とか言ってる人がやはり信じられません。
あとまーまくぶく買って 5 日とかの子が書いてる戯言なので全然間違っててたり常識だったりしても知ったことじゃないという感じで。