私はこれを自分で理解しようとしています。まだありませんが、正しい方向に:
- 各ミッションコントロールの「スペース」が
uuid
割り当てられます...
- ...最初のもの(AFAIK)とダッシュボードのものを除いて。
あなたはここでそれらを読むことができます:
$ defaults read com.apple.spaces
$ defaults read com.apple.desktop
ファイルの場所:
~/Library/Preferences/com.apple.spaces.plist
~/Library/Preferences/com.apple.desktop.plist
これが私のものです。4つのスペースを有効にすると、3つのエントリが表示されます。
$ defaults read com.apple.spaces
{
spaces = (
{
type = 0;
uuid = "9F552977-3DB0-43E5-8753-E45AC4C61973";
},
{
type = 0;
uuid = "44C8072A-7DC9-4E83-94DD-BDEAF333C924";
},
{
type = 0;
uuid = "6FADBDFE-4CE8-4FC9-B535-40D7CC3C4C58";
}
);
}
スペースを削除すると、そのエントリはファイルから削除されます。スペースを追加すると、エントリが追加されます。繰り返しになりますが、Desktop1またはDashboardのエントリはありません。
uuid
ディスプレイに表示されているスペースを把握するためのパブリックAPIがあるかどうかはわかりません。uuid
ディスプレイ1を意味するものはなく、ディスプレイ1+nを意味するものはないと思います。
AppleScriptエディタライブラリ(ウィンドウ--->ライブラリ)をざっと見てみましたが、のシステムイベントの下にエントリが表示されませんでしたspaces
。これはおそらくCocoaで、おそらくプライベートAPIを介して実行できることですが、AppleScriptについてはよくわかりません。
更新-2011年7月23日
DockがMissionControlを制御しているようです。次のようにヘッダーファイルを取得できます。
- 移動:
/System/Library/CoreServices/Dock
- 右クリックしてパッケージの内容を表示
- ナビゲート:
/Contents/MacOS/
- バイナリをコピー
Dock
してデスクトップに貼り付けます。
- 走る:
$class-dump ~/Desktop/Dock
これにより、すべてのヘッダーファイルが吐き出されます(長い、約7,500行)。spaceUUID
そこに文字列が表示されているのがわかります。WVSpace
ミッションコントロールの単一のスペースを表すように見えると呼ばれるクラスと、他の多くのWV*クラスがあります。
明日も見続けます。今は疲れすぎです。:)
更新-2011年7月24日
Dockの中には、というクラスがありWVSpaces
ます。これには、次のような多くの属性があります。
WVSpace *currentSpace;
unsigned int currentWorkspace;
WVSpace *nextSpace; // Space on the right???
WVSpace *previousSpace; // Space on the left???
BOOL currentSpaceIsDashboard;
BOOL dashboardIsCurrent;
...lots more...
各WVSpace
クラスにはNSString *_uuid;
属性があり、これはおそらくそのSpaceUUIDです。したがって、理論的には、次のように現在のスペース番号を取得できます。
WVSpace *currentSpace = [[WVSpaces sharedInstance] currentSpace];
NSString *currentSpaceUUID = [currentSpace _uuid]; // Empty string if main space???
WVSpaces
秘訣は、 Dock内に埋められたプライベートクラスにアクセスする方法です。NSMutableArray *_spaces;
おそらくすべてのスペースがリストされている属性があるため、シングルトンだと思います。WVSpaces
一度に表示されるスペースは1つだけです(これは、複数のモニターを使用している場合に当てはまります。スペースは両方にまたがっています)。したがって、インスタンスを1つだけにするのが理にかなっています。
したがって、にアクセスするには、DockのSIMBLハッキングが必要になるようWVSpaces
です。