Как я могу изменить основной дисплей через AppleScript? - PullRequest
8 голосов
/ 16 сентября 2008

На панели «Дисплеи» в Системных настройках я могу вручную изменить основной монитор, перетаскивая строку меню с одного дисплея на другой. Я хотел бы автоматизировать это и сделать его частью AppleScript.

Ответы [ 5 ]

4 голосов
/ 15 декабря 2009

Дисплеи управляются файлом настроек /Library/Preferences/com.apple.windowserver.plist:

  1. Флаг определяет, является ли основной дисплей встроенным в экран клавишей DisplayMainOnInternal.
  2. Клавиша DisplaySets содержит список наборов отображения. Первый набор используется (факт, чтобы проверить).
  3. В наборе каждый элемент содержит свойства экрана. Клавиша IOFlags, кажется, указывает, является ли дисплей основным (значение 7) или нет (значение 3).

Перед запуском Apple Script вы можете вручную изменить конфигурацию дисплея и сохранить копию файла /Library/Preferences/com.apple.windowserver.plist для его изучения.

Обратите внимание, что следующая процедура не была проверена !!!

В AppleScript ключи в файле plist изменяются индивидуально, чтобы изменить основной дисплей:

  1. Сделайте резервную копию /Library/Preferences/com.apple.windowserver.plist (в случае)
  2. Измените настройки дисплея и выберите основной дисплей (клавиши DisplaySets и IOFlags) с помощью команды defaults
  3. Перезагрузите сервер Windows: killall -KILL SystemUIServer
1 голос
/ 13 декабря 2009

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

Вот довольно хороший обзор от MacTech .

0 голосов
/ 18 мая 2019

Инструмент, который я написал, displayplacer , делает это.

Сконфигурируйте свои экраны так, как вам нравится, перетащите «белую полосу» на основной экран в настройках системы MacOS и затем выполните displayplacer list. Будет выведена команда, чтобы запустить ваши экраны в их текущей конфигурации. Экран с origin:(0,0) является основным дисплеем с «белой полосой». Запустите эту терминальную команду через скрипт, Automator, BetterTouchTool и т. Д.

Пример профиля 1 помещает белую полосу в строку меню на левом мониторе. displayplacer "id:<leftScreenId> res:1920x1080 scaling:on origin:(0,0) degree:0" "id:<rightScreenId> res:1920x1080 scaling:on origin:(1920,0) degree:0"

Пример профиля 1 помещает белую полосу в строку меню на правом мониторе. displayplacer "id:<leftScreenId> res:1920x1080 scaling:on origin:(1920,0) degree:0" "id:<rightScreenId> res:1920x1080 scaling:on origin:(0,0) degree:0"

Также доступно через Homebrew brew tap jakehilborn/jakehilborn && brew install displayplacer

0 голосов
/ 16 декабря 2009

Используя AppleScript, вы можете вызвать default, чтобы записать настройку для изменения основного монитора.

0 голосов
/ 16 сентября 2008

Подобно тому, как вы можете сказать System Events.app, чтобы он спал на вашем Mac, вы можете указать Image Events.app связываться с вашими дисплеями. Приложение Image Events предоставляет коллекцию «дисплеев». У каждого дисплея есть «профиль» с множеством вкусностей. Однако все, что я только что упомянул, доступно только для чтения, поэтому у меня нет хорошего способа сделать это из скрипта.

Возможно, вам повезет больше в Automator - нажмите «Запись», запустите «Системные настройки», перейдите в «Дисплеи», перетащите строку меню на другой экран и нажмите «Стоп». Могу поспорить, что-то будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...