Spec-Zone.ru › Hammerspoon

hs.spaces

Этот модуль предоставляет некоторые базовые функции для управления пространствами macOS.

Функциональность, предоставляемая этим модулем, считается экспериментальной и может быть изменена. Используя комбинацию частных API и утилит доступности (через hs.axuielement), некоторые базовые функции для управления использованием пространств возможны с Hammerspoon, но есть некоторые ограничения и замечания.

Следует отметить, что хотя функции, предоставляемые этим модулем, работали некоторое время в приложениях третьих сторон и в предыдущем экспериментальном модуле, который прошел ограниченное тестирование в последние несколько лет, они используют некоторые частные API, что означает, что Apple может их изменить в любое время.

Функции, которые позволяют создавать новые пространства, удалять пространства и переходить к определенному пространству, используют hs.axuielement и выполняют действия доступности через приложение Dock для управления Панелью задач. Поскольку мы по существу направляем Dock для выполнения пользовательских взаимодействий, есть некоторые визуальные подсказки, которые мы не можем полностью подавить. Вы можете свести их к минимуму, но не полностью устранить, включив «Уменьшить анимацию» в Системные настройки —> Доступность —> Дисплей.

Рекомендуется также включить «Дисплеи имеют отдельные пространства» в Системные настройки —> Панель задач.

Этот модуль представляет собой переработку моего предыдущего hs._asm.undocumented.spaces модуля, изменения вдохновлены обзором Yabai исходного кода и некоторыми экспериментами с hs.axuielement. Если вам требуется более сложное управление, я рекомендую ознакомиться с https://github.com/koekeishiya/yabai — для этого требуется дополнительная настройка (изменения в SIP, возможно, правки в sudoers, и т. д.), но это может быть того стоит для продвинутых пользователей.

Подмодули

  • hs.spaces.watcher

Обзор API

  • Переменные - Настраиваемые значения
    • MCwaitTime
  • Функции - API-вызовы, предлагаемые напрямую расширением
    • activeSpaceOnScreen
    • activeSpaces
    • addSpaceToScreen
    • allSpaces
    • closeMissionControl
    • data_managedDisplaySpaces
    • data_missionControlAXUIElementData
    • focusedSpace
    • gotoSpace
    • missionControlSpaceNames
    • moveWindowToSpace
    • openMissionControl
    • removeSpace
    • screensHaveSeparateSpaces
    • setDefaultMCwaitTime
    • spaceDisplay
    • spacesForScreen
    • spaceType
    • toggleAppExpose
    • toggleLaunchPad
    • toggleMissionControl
    • toggleShowDesktop
    • windowsForSpace
    • windowSpaces

Документация API

Переменные

MCwaitTime
Подпись hs.spaces.MCwaitTime
Тип Переменная
Описание

Указывает, на сколько времени задерживать выполнение действий доступности для hs.spaces.gotoSpace и hs.spaces.removeSpace

Примечания
  • Для упомянутых выше функций требуется, чтобы объекты доступности Панели задач были полностью сформированы перед тем, как можно будет инициировать необходимое действие. Эта переменная определяет, на сколько времени задерживать выполнение действия для завершения функции. Эксперименты на моем компьютере показали, что 0,3 секунды обеспечивают достаточное время для надежной функциональности.
  • Если вы обнаружите, что вышеупомянутые функции не работают надежно с вашей настройкой, вы можете попробовать увеличить это значение — недостаток в том, что чем больше это значение, тем дольше отображается Панель задач перед возвратом пользователя к его предыдущей работе.
  • После того, как вы найдете значение, которое работает надежно на вашей системе, вы можете использовать hs.spaces.setDefaultMCwaitTime, чтобы сделать его значением по умолчанию для вашей системы каждый раз при загрузке модуля hs.spaces.
Источник extensions/spaces/spaces.lua строка 215

Функции

activeSpaceOnScreen
Подпись hs.spaces.activeSpaceOnScreen([screen]) -> integer | nil, error
Тип Функция
Описание

Возвращает текущее видимое (активное) пространство для указанного экрана.

Параметры
  • screen - необязательное описание экрана, определяющее экран, для которого необходимо вернуть активное пространство. Экран может быть указан по его идентификатору (hs.screen:id()), его UUID (hs.screen:getUUID()), строке "Основной" (сокращение для hs.screen.mainScreen()), строке "Первичный" (сокращение для hs.screen.primaryScreen()) или как объект hs.screen. Если экран не указан, используется экран, возвращаемый hs.screen.mainScreen().
Возвращаемое значение
  • целое число, определяющее идентификатор отображаемого пространства, или nil и сообщение об ошибке, если произошла ошибка.
Источник extensions/spaces/spaces.lua строка 425
activeSpaces
Подпись hs.spaces.activeSpaces() -> table | nil, error
Тип Функция
Описание

Возвращает таблицу ключ-значение, определяющую активные пространства для всех экранов.

Параметры
  • Нет
Возвращаемое значение
  • таблица ключ-значение, в которой ключи — UUID текущих экранов, а значение для каждого ключа — идентификатор пространства активного пространства для этого дисплея.
Примечания
  • у возвращаемой таблицы установлен метод __tostring, равный hs.inspect, чтобы упростить проверку результатов при использовании консоли Hammerspoon.
Источник extensions/spaces/spaces.lua строка 488
...rest of the translated HTML... END_OF_DOCUMENT_MARKER
closeMissionControl
Signature hs.spaces.closeMissionControl() -> None
Type Function
Description

Открывает отображение Mission Control

Parameters
  • None
Returns
  • None
Notes
  • Ничего не делает, если отображение Mission Control в данный момент не отображается.
  • Эта функция использует функции доступности, предоставляемые Dock, для закрытия Mission Control и используется во внутренних функциях при выполнении функций hs.spaces.gotoSpace, hs.spaces.addSpaceToScreen и hs.spaces.removeSpace.
  • Возможен вызов вышеупомянутых функций и предотвращение автоматического закрытия Mission Control — это может быть полезно, если вы хотите выполнить несколько действий и хотите свести к минимуму визуальные побочные эффекты. После этого вы можете использовать эту функцию, когда закончите.
Source extensions/spaces/spaces.lua line 315
data_managedDisplaySpaces
Signature hs.spaces.data_managedDisplaySpaces() -> table | nil, error
Type Function
Description

Возвращает таблицу, содержащую информацию о управляемых пространствах отображения

Parameters
  • None
Returns
  • таблица, содержащая информацию обо всех дисплеях и пространствах, управляемых операционной системой.
Notes
  • формат и детали этой таблицы слишком сложны и изменчивы, чтобы их описывать здесь; достаточно сказать, что это рабочая лошадка для этого модуля, и тщательное изучение этой таблицы может быть информативным, но не требуется для нормального использования этого модуля.
Source extensions/spaces/libspaces.m line 33
data_missionControlAXUIElementData
Signature hs.spaces.data_missionControlAXUIElementData(callback) -> None
Type Function
Description

Создает таблицу, содержащую результаты hs.axuielement.buildTree для группы доступности Mission Control в Dock.

Parameters
  • callback - функция обратного вызова, которая должна ожидать таблицу в качестве результата. Таблица будет отформатирована, как описано в документации для hs.axuielement.buildTree.
Returns
  • None
Notes
  • Как и hs.spaces.data_managedDisplaySpaces, эта функция не требуется для общего использования этого модуля; она предоставляется тем, кто хочет более внимательно изучить внутренние данные, которые делают этот модуль возможным, чтобы увидеть, есть ли другая информация или функциональность, которую они хотели бы изучить.
  • Получение элементов доступности для Mission Control немного сложно — они существуют только когда отображение Mission Control видимое, именно в тот момент, когда вы не можете их проверить. Что делает эта функция, так это запускает Mission Control, а затем строит дерево элементов, захватывая все свойства и значения свойств, пока элементы действительны, закрывает Mission Control и затем возвращает результаты в таблице, вызвав предоставленную функцию обратного вызова.
    • Обратите внимание, что объекты hs.axuielement в возвращаемой таблице станут недействительными к моменту их проверки — вот почему атрибуты и значения также будут содержаться в результирующем дереве.
    • Пример использования: hs.spaces.data_missionControlAXUIElementData(function(results) hs.console.clearConsole() ; print(hs.inspect(results)) end)
Source extensions/spaces/spaces.lua line 174
focusedSpace
Signature hs.spaces.focusedSpace() -> integer
Type Function
Description

Возвращает идентификатор пространства текущего фокусированного пространства

Parameters
  • None
Returns
  • идентификатор пространства для текущего фокусированного пространства. Фокусированное пространство — это текущее активное пространство на текущем активном экране (т. е. тем, на котором пользователь работает)
Notes
  • обычно текущий активный экран будет возвращен hs.screen.mainScreen(); однако некоторые приложения с полноэкранным режимом могут иметь фокус, не обновляя, какой экран считается "основным". Вы можете использовать эту функцию и искать UUID экрана с помощью hs.spaces.spaceDisplay, чтобы определить "истинный" фокусированный экран, если это необходимо.
Source extensions/spaces/libspaces.m line 61
gotoSpace
Signature hs.spaces.gotoSpace(spaceID) -> true | nil, errMsg
Type Function
Description

Перейти к указанному пространству.

Parameters
  • spaceID - целое число, определяющее ID пространства
Returns
  • true, если изменение пространства было инициировано, или nil и сообщение об ошибке, если при попытке переключения пространств возникла ошибка.
Notes
  • Эта функция переключается на пространство, открывая отображение Mission Control, а затем программно вызывая кнопку для активации пространства. Это неизбежно. Вы можете свести к минимуму, но не полностью устранить, визуальное перемещение на отображение Mission Control, включив "Уменьшить движение" в Системные настройки -> Доступность -> Отображение.
  • Действие перехода в новое пространство автоматически закрывает отображение Mission Control, поэтому, в отличие от (hs.spaces.missionControlSpaceNames, hs.spaces.addSpaceToScreen и hs.spaces.removeSpace, нет флага, который вы можете указать, чтобы оставить отображение Mission Control видимым. По возможности, вы должны обычно вызывать эту функцию последней, если выполняете несколько действий и хотите свести к минимуму время, в течение которого отображение Mission Control видимое, и уменьшить визуальные побочные эффекты.
  • Элементы доступности, необходимые для перехода в пространство, не создаются до тех пор, пока отображение Mission Control полностью не отобразится. Из-за этого при вызове этой функции существует встроенная задержка, которую можно настроить, изменив значение hs.spaces.MCwaitTime.
Source extensions/spaces/spaces.lua line 751
missionControlSpaceNames
Signature hs.spaces.missionControlSpaceNames([closeMC]) -> table | nil, error
Type Function
Description

Возвращает таблицу, содержащую имена пространств, которые отображаются в Mission Control, связанные с их идентификатором пространства. Это предоставляется только в информационных целях — все функции этого модуля используют spaceID для обеспечения точности.

Parameters
  • closeMC - необязательный логический параметр, по умолчанию true, определяющий, следует ли закрывать отображение Mission Control после добавления нового пространства.
Returns
  • таблица ключ-значение, в которой ключи — это UUID каждого экрана, а значение — таблица ключ-значение, где идентификатор экрана — ключ, а имя пространства Mission Control — значение.
Notes
  • у таблицы, возвращаемой функцией, установлено метаметод __tostring для hs.inspect, чтобы упростить проверку результатов при использовании консоли Hammerspoon.
  • Эта функция работает, открывая отображение Mission Control и извлекая имена из элементов доступности, которые созданы. Это неизбежно. Вы можете свести к минимуму, но не полностью устранить, визуальное перемещение на отображение Mission Control, включив "Уменьшить движение" в Системные настройки -> Доступность -> Отображение.
  • Если вы намерены выполнить несколько действий, которые требуют отображения Mission Control (hs.spaces.missionControlSpaceNames, hs.spaces.addSpaceToScreen, hs.spaces.removeSpace или hs.spaces.gotoSpace), вы можете передать false в качестве конечного аргумента, чтобы предотвратить автоматическое закрытие отображения Mission Control — это уменьшит визуальные побочные эффекты до одной транзиции вместо нескольких.
  • Эта функция пытается использовать строки локализации приложения Dock для правильного определения имен Mission Control. Если вы обнаружите, что она не предоставляет правильные значения для вашей системы, пожалуйста, предоставьте следующую информацию при отправке сообщения об ошибке:
    • название(я) рабочего стола или приложения, как они отображаются в верхней части экрана Mission Control, когда вы вызываете его вручную (или с hs.spaces.toggleMissionControl() введенным в консоль Hammerspoon).
    • выходные данные от следующих команд, выданных в консоли Hammerspoon:
      • hs.host.operatingSystemVersionString()
      • hs.host.locale.current()
      • hs.inspect(hs.host.locale.preferredLanguages())
      • hs.inspect(hs.host.locale.details())
      • hs.spaces.screensHaveSeparateSpaces()
Source extensions/spaces/spaces.lua line 632
перемещениеОкнаВПространство
Подпись hs.spaces.moveWindowToSpace(window, spaceID[, force]) -> true | nil, error
Тип Функция
Описание

Перемещает окно с указанным windowID в пространство, заданное spaceID.

Параметры
  • window - целое число, определяющее идентификатор окна, или объект hs.window
  • spaceID - целое число, определяющее идентификатор пространства
  • force - необязательный булевый параметр, определяющий, следует ли пытаться переместить окно, даже если пространства не совместимы
Возвращает
  • true, если окно было перемещено; в противном случае nil и сообщение об ошибке.
Примечания
  • окно может быть перемещено только из пользовательского пространства в другое пользовательское пространство — вы не можете переместить окно полноэкранного (или плиточного) приложения в другое пространство. Вы также не можете переместить окно *в* то же пространство, что и полноэкранное приложение, если force не установлено в true, и даже тогда это работает только для плавающих окон.
Источник extensions/spaces/libspaces.m строка 134
открытьMissionControl
Подпись hs.spaces.openMissionControl() -> None
Тип Функция
Описание

Открывает окно Mission Control.

Параметры
  • Нет
Возвращает
  • Нет
Примечания
  • Ничего не делает, если окно Mission Control уже отображается.
  • Эта функция использует возможности доступности, предоставляемые Dock, для открытия Mission Control и используется внутри при выполнении функций hs.spaces.gotoSpace, hs.spaces.addSpaceToScreen и hs.spaces.removeSpace.
  • Вряд ли вам понадобится вызывать эту функцию вручную, и публичный интерфейс этой функции может быть удален в будущем.
Источник extensions/spaces/spaces.lua строка 299
удалитьПространство
Подпись hs.spaces.removeSpace(spaceID, [closeMC]) -> true | nil, errMsg
Тип Функция
Описание

Удаляет указанное пространство.

Параметры
  • spaceID - целое число, определяющее идентификатор пространства
  • closeMC - необязательный булевый параметр, по умолчанию true, определяющий, нужно ли закрывать окно Mission Control после удаления пространства.
Возвращает
  • true, если удаление пространства было инициировано, или nil и сообщение об ошибке, если при попытке удалить пространство возникла ошибка.
Примечания
  • Вы не можете удалить активное пространство — сначала перейдите в другое с помощью hs.spaces.gotoSpace.
  • Если на экране есть только одно пользовательское пространство (т. е. не окно полноэкранного приложения или плиточный набор), его нельзя удалить.
  • Эта функция удаляет пространство, открывая окно Mission Control, а затем программно вызывая кнопку для удаления указанного пространства. Это неизбежно. Вы можете минимизировать, но не полностью устранить, визуальное смещение в окно Mission Control, включив "Снизить анимацию" в Системные настройки -> Доступность -> Отображение.
  • Если вы планируете выполнить несколько действий, которые требуют окна Mission Control ((hs.spaces.missionControlSpaceNames, hs.spaces.addSpaceToScreen, hs.spaces.removeSpace или hs.spaces.gotoSpace), вы можете передать false в качестве последнего аргумента, чтобы предотвратить автоматическое закрытие окна Mission Control — это уменьшит визуальные последствия до одного перехода вместо многих.
  • Элементы доступности, необходимые для перехода в пространство, не создаются, пока окно Mission Control полностью не отобразится. Из-за этого при вызове этой функции есть встроенная задержка, которую можно настроить, изменив значение hs.spaces.MCwaitTime.
Источник extensions/spaces/spaces.lua строка 811
имеютЛиМониторыОтдельныеПространства
Подпись hs.spaces.screensHaveSeparateSpaces() -> bool
Тип Функция
Описание

Определяет, включена ли опция "Мониторы имеют отдельные пространства" в Mission Control.

Параметры
  • Нет
Возвращает
  • true или false, представляющие состояние опции "Мониторы имеют отдельные пространства" в Mission Control.
Источник extensions/spaces/libspaces.m строка 17
установитьЗначениеПоУмолчаниюMCwaitTime
Подпись hs.spaces.setDefaultMCwaitTime([time]) -> None
Тип Функция
Описание

Устанавливает начальное значение для hs.spaces.MCwaitTime при первой загрузке модуля.

Параметры
  • time - необязательное число, большее 0, задающее начальное значение по умолчанию для hs.spaces.MCwaitTime. Если значение не указано, используется текущее значение hs.spaces.MCwaitTime.
Возвращает
  • Нет
Примечания
  • Эта функция использует модуль hs.settings, чтобы сохранить значение по умолчанию в ключе "hs_spaces_MCwaitTime".
Источник extensions/spaces/spaces.lua строка 225
отображениеПространства
Подпись hs.spaces.spaceDisplay(spaceID) -> string | nil, error
Тип Функция
Описание

Возвращает UUID экрана, на котором находится указанное пространство.

Параметры
  • spaceID - целое число, определяющее идентификатор пространства
Возвращает
  • строка, определяющая UUID дисплея, на котором находится пространство, или nil и сообщение об ошибке в случае ошибки.
Примечания
  • пространство не обязательно должно быть активным (видимым), чтобы определить, к какому экрану оно относится.
Источник extensions/spaces/spaces.lua строка 517
пространстваДляЭкрана
Подпись hs.spaces.spacesForScreen([screen]) -> table | nil, error
Тип Функция
Описание

Возвращает таблицу, содержащую идентификаторы пространств для указанного экрана в их текущем порядке.

Параметры
  • screen - необязательное описание экрана, определяющее экран, для которого требуется вернуть массив пространств. Экран может быть задан по его идентификатору (hs.screen:id()), его UUID (hs.screen:getUUID()), строке "Основной" (сокращение для hs.screen.mainScreen()), строке "Основной" (сокращение для hs.screen.primaryScreen()), или как объект hs.screen. Если экран не указан, используется экран, возвращаемый hs.screen.mainScreen()
Возвращает
  • таблица, содержащая идентификаторы пространств для пространств для экрана, или nil и сообщение об ошибке в случае ошибки.
Примечания
  • возвращаемая таблица имеет свой метод __tostring, установленный на hs.inspect, чтобы упростить проверку результатов при использовании консоли Hammerspoon.
Источник extensions/spaces/spaces.lua строка 331
типПространства
Подпись hs.spaces.spaceType(spaceID) -> string | nil, error
Тип Функция
Описание

Возвращает строку, указывающую, является ли пространство пользовательским пространством или пространством полноэкранного/плиточного приложения.

Параметры
  • spaceID - целое число, определяющее идентификатор пространства
Возвращает
  • строку "пользователь", если пространство является обычным пользовательским пространством, или "полноэкранный", если пространство является пространством полноэкранного или плиточного окна. Возвращает nil и сообщение об ошибке, если пространство не относится к допустимому управляемому пространству.
Источник extensions/spaces/spaces.lua строка 550
переключитьЭкспозициюПриложения
Подпись hs.spaces.toggleAppExpose() -> None
Тип Функция
Описание

Переключает отображение текущих приложений Exposé.

Параметры
  • Нет
Возвращает
  • Нет
Примечания
  • эта функциональность соответствует функциональности в Системных настройках -> Mission Control -> Горячие клавиши... -> Настройки окон приложений или жесту свайпа на трекпаде для Exposé приложений (3 или 4 пальца вниз).
Источник extensions/spaces/spaces.lua строка 271
END_OF_DOCUMENT_MARKER
toggleLaunchPad
Подпись hs.spaces.toggleLaunchPad() -> None
Тип Функция
Описание

Переключает отображение Панели запуска.

Параметры
  • Нет
Возвращаемое значение
  • Нет
Примечания
  • эта функция выполняет те же действия, что и в Системных настройках -> Управление окнами -> Горячие углы... -> Панель запуска, значок Панели запуска на сенсорной панели или жест управления пальцами на трекпаде (Щелчок двумя пальцами и большим пальцем).
Источник extensions/spaces/spaces.lua строка 285
toggleMissionControl
Подпись hs.spaces.toggleMissionControl() -> None
Тип Функция
Описание

Переключает отображение Управления окнами.

Параметры
  • Нет
Возвращаемое значение
  • Нет
Примечания
  • эта функция выполняет те же действия, что и в Системных настройках -> Управление окнами -> Горячие углы... -> Управление окнами, значок Управления окнами на сенсорной панели или жест управления пальцами на трекпаде (3 или 4 пальца вверх).
Источник extensions/spaces/spaces.lua строка 257
toggleShowDesktop
Подпись hs.spaces.toggleShowDesktop() -> None
Тип Функция
Описание

Переключает отображение всех окон на/с экрана для отображения рабочего стола.

Параметры
  • Нет
Возвращаемое значение
  • Нет
Примечания
  • эта функция выполняет те же действия, что и в Системных настройках -> Управление окнами -> Горячие углы... -> Рабочий стол, значок «Показать рабочий стол» на сенсорной панели или жест управления пальцами на трекпаде (Разведение большим пальцем и тремя пальцами).
Источник extensions/spaces/spaces.lua строка 243
windowsForSpace
Подпись hs.spaces.windowsForSpace(spaceID) -> table | nil, error
Тип Функция
Описание

Возвращает таблицу, содержащую идентификаторы окон всех окон на указанном пространстве.

Параметры
  • spaceID - целое число, определяющее идентификатор пространства
Возвращаемое значение
  • таблица, содержащая идентификаторы окон всех окон на указанном пространстве
Примечания
  • возвращаемая таблица имеет метаметод __tostring, установленный на hs.inspect, для упрощения проверки результатов при использовании консоли Hammerspoon.
  • Список окон включает все элементы, которые считаются "окнами" macOS — это включает визуальные элементы, обычно считающиеся несущественными, такие как наложения, всплывающие подсказки, графические элементы, окна за пределами экрана и т. д. Поэтому ожидайте много ложных срабатываний в результатах.
  • Кроме того, из-за способа работы объектов Доступности, только те идентификаторы окон, которые присутствуют на текущих видимых пространствах, можно найти с помощью hs.window или находятся в hs.window.allWindows().
  • Эта функция исключает элементы холста Hammerspoon из списка, поскольку мы «владеем» ими и можем программно определить их идентификатор окна. Однако это не помогает с другими приложениями.
  • Рассматривая, как сторонние приложения обычно удаляют этот список, я полагаю, что необходимо использовать hs.window.filter для очистки списка и доступа к объектам hs.window, которые находятся на невидимых пространствах.
    • поскольку hs.window.filter планируется переписать в ближайшее время (чтобы, надеюсь, значительно ускорить его), я предоставляю эту функцию в настоящее время в том виде, в каком она есть, для тех, кто хочет с ней поэкспериментировать; однако я надеюсь сделать ее более полезной в ближайшие месяцы, и содержание может измениться в будущем (формат не изменится, но, надеюсь, бесполезные дополнения исчезнут, что потребует меньше логики очистки с вашей стороны).
Источник extensions/spaces/libspaces.m строка 80
windowSpaces
Подпись hs.spaces.windowSpaces(window) -> table | nil, error
Тип Функция
Описание

Возвращает таблицу, содержащую идентификаторы пространств для всех пространств, на которых находится указанное окно.

Параметры
  • window - целое число, определяющее идентификатор окна, или объект hs.window
Возвращаемое значение
  • таблица, содержащая идентификаторы пространств всех пространств, на которых находится окно, или nil и сообщение об ошибке, если произошла ошибка.
Примечания
  • возвращаемая таблица имеет метаметод __tostring, установленный на hs.inspect, для упрощения проверки результатов при использовании консоли Hammerspoon.
  • Если идентификатор окна не указывает на действительное окно, будет возвращен пустой массив.
  • Для большинства окон это будет таблица с одним элементом; однако некоторые приложения могут создавать «прилипающие» окна, которые могут отображаться на нескольких пространствах.
    • Например, окна-контейнеры для объектов hs.canvas с установленным поведением canJoinAllSpaces будут отображаться на всех пространствах, и таблица, возвращаемая этой функцией, будет содержать все идентификаторы пространств для экрана, на котором отображается холст.
Источник extensions/spaces/libspaces.m строка 186

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.spaces.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API