У меня есть 3 настройки дисплея в следующем порядке (слева направо):
Версия macOS: 10.13.6
Скорее всего при перезагрузке порядок пропал и мне нужно сбросить через System Preferences -> Display -> Arrangement
Есть ли способ изменить расположение через командную строку или applescript?
Это обнадеживает ... apple.stackexchange.com/q/249447

Я устал от той же проблемы и мне удалось уменьшить displayPlacer, упомянутый в ссылке Марка Сетчелла, чтобы исправить эту конкретную проблему:
#include <IOKit/graphics/IOGraphicsLib.h>
#include <ApplicationServices/ApplicationServices.h>
#include <unistd.h>
#include <math.h>
#include <stdio.h>
int main(int argc, const char * argv[]) {
CGDirectDisplayID screenList[3];
CGDirectDisplayID external1;
CGDirectDisplayID external2;
CGGetOnlineDisplayList(INT_MAX, screenList, NULL);
if (CGDisplayIsMain(screenList[0])){
external1 = screenList[1];
external2 = screenList[2];
}else if (CGDisplayIsMain(screenList[1])){
external1 = screenList[0];
external2 = screenList[2];
}else{
external1 = screenList[1];
external2 = screenList[2];
}
CGDisplayConfigRef configRef;
CGBeginDisplayConfiguration(&configRef);
CGConfigureDisplayOrigin(configRef, external1, CGDisplayBounds(external2).origin.x, CGDisplayBounds(external2).origin.y);
CGConfigureDisplayOrigin(configRef, external2, CGDisplayBounds(external1).origin.x, CGDisplayBounds(external1).origin.y);
CGCompleteDisplayConfiguration(configRef, kCGConfigurePermanently);
}
Мой C был ржавым, может быть, не очень чистым ... Он просто находит 2 внешних экрана и меняет их положение. Если вы переключаетесь между двумя настройками, будет не очень сложно сделать заранее сконфигурированные несколько позиций. Он находится на C, но выполняет свою работу.
Я считаю, что это можно сделать с помощью AppleScriptObjC / JXA, но поскольку у меня только один дисплей, у меня нет средств для тестирования.