2011年1月19日水曜日

Spaces.app・現在のworkspaceの総数を知る

Spaces.appの行数・列数は~HOME/Library/Prefarences/com.apple.dock.plistに保存されている。・・・って一体どうやったらその情報に行き着くんだろ。(^^;)

Warpのコードを読んでわかったわけですが。WarpのMainController.m、223行目あたり。
  CFPreferencesAppSynchronize(CFSTR("com.apple.dock"));
 
  NSInteger columnCount = CFPreferencesGetAppIntegerValue(CFSTR("workspaces-cols"), CFSTR("com.apple.dock"), nil);

MacRubyでcolumnCount = CFPreferencesGetAppIntegerValue(CFSTR("workspaces-cols"), CFSTR("com.apple.dock"), nil);をそのまま入力すると「CFSTR」なんて知らない、と怒られる。こういう場合はおそらくCFSTRという関数は必要なからだろう、と推測して
row=CFPreferencesGetAppIntegerValue("workspaces-rows", "com.apple.dock", nil);
としてみたところ問題なく動いた。

TextViewに改行を入力できていないのはご愛嬌。

この試験アプリを立ち上げたまま、Spacesの設定を4列×2行の8面にしてみると、残念ながらその変更を読み取れない。やはりWarpのコードにあるとおり、いちいち
CFPreferencesAppSynchronize "com.apple.dock"
とする必要があるようだ。これを書くと、起動中にSpacesの設定を変更してもちゃんと読み取れる。
行×列をすればworkspaceの最大数を得ることができる、と。

しかしWarpのコードの中ではなんだかいろいろやっていて、現在のworkspaceの番号が「65538」だったら、みたいな処理があちこちにある。これはもう少しあれこれ自分で書いてみないとわかりませんな。

0 件のコメント:

コメントを投稿