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 件のコメント:
コメントを投稿