Я пытаюсь понять это сам.Пока нет, но в правильном направлении:
- Каждому «пространству» Управления полетом присваивается
uuid
назначенное ему ... - ... за исключением самого первогоодин (AFAIK), и один приборной панели.
Вы можете прочитать их здесь:
$ defaults read com.apple.spaces
$ defaults read com.apple.desktop
Расположение файлов:
~/Library/Preferences/com.apple.spaces.plist
~/Library/Preferences/com.apple.desktop.plist
Вот мое.У меня включено четыре пробела, и отображаются три записи:
$ 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";
}
);
}
Если вы удалите пробел, эта запись будет удалена из файла.Если вы добавите пробел, запись будет добавлена.Опять же, для Desktop 1 или Dashboard никогда не будет записи.
Я не уверен, существует ли публичный API для определения того, какое пространство uuid
отображается на дисплее.Я бы предположил, что нет uuid
означает «Дисплей 1», а другие означают «Дисплей 1 + n.
». Я бросил быстрый взгляд через библиотеку AppleScript Editor (Window ---> Library) и ничего не сделал.t увидеть любые записи в разделе Системные события для spaces
.Вероятно, это то, что можно сделать с помощью Какао, возможно, через частный API, но я не уверен насчет AppleScript.
ОБНОВЛЕНИЕ - 23 июля 2011 г.
Похоже, Dock контролирует Mission Control.Вы можете получить его заголовочные файлы следующим образом:
- Перейти к:
/System/Library/CoreServices/Dock
- Щелкните правой кнопкой мыши и Показать содержимое пакета
- Навигация:
/Contents/MacOS/
- Скопируйте и вставьте двоичный файл
Dock
на рабочий стол. - Выполните:
$class-dump ~/Desktop/Dock
Это выплюнет все егозаголовочные файлы (это длинные; почти 7500 строк).Вы можете видеть строки spaceUUID
, появляющиеся там.Есть класс под названием WVSpace
, который, по-видимому, представляет один пробел в Управлении полетами, и множество других классов WV *.
Я продолжу смотреть на него завтра;слишком устал сейчас.:)
ОБНОВЛЕНИЕ - 24 июля 2011 г.
Внутри 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?Я предполагаю, что это Singleton, так как он имеет атрибут NSMutableArray *_spaces;
, вероятно, с каждым пробелом, перечисленным в нем.Одновременно отображается только один пробел (это верно, если вы используете несколько мониторов; пробел распространяется на них обоих), поэтому имеет смысл иметь только один экземпляр WVSpaces
.
Так чтоПохоже, что для получения доступа к WVSpaces
.
потребуется взлом * Dock
SIMBL .