Я привык подключаться к проекторам конференц-зала или большим экранам, которые различаются по разрешению, поэтому по мере того, как я перемещаюсь из комнаты в комнату в течение дня, мои окна тоже постоянно меняются. Я чувствую твою боль. :-)
Чтобы избежать путаницы, я хочу определить пару терминов для этого ответа:
- Основной дисплей является одним с строкой меню на вкладке Композиции в настройках системы.
- Основной дисплей является тот , который вы хотите вещи на, независимо от того , является ли оно основным дисплеем.
- Дополнительный дисплей является одним без строки меню на вкладке Композиции в настройках системы.
По сути, проблема в том, что вы видите важное различие между основным и основным дисплеями; Mac OS X этого не делает, и будет бороться с вами, когда вы попытаетесь сохранить это различие, рассматривая дополнительный дисплей как основной.
Если они специально не попытаются поступить иначе, приложения всегда будут открываться на любом основном дисплее. Это определенно одна из характеристик основного дисплея. (Это довольно низкоуровневая часть API-интерфейса Quartz, в частности вызов CGConfigureDisplayOrigin , поэтому это поведение невозможно настроить, если само приложение не позволяет вам его настраивать.)
Я бы посоветовал спросить о том, что делает его раздражающим для вас («мешает с другими вещами», как вы указали это в своем комментарии), чтобы не сохранять основной дисплей в качестве основного дисплея при подключении, поскольку они могут быть настраиваемыми ; такого поведения нет.
У меня есть пара трюков для вас, которые могут помочь, хотя:
Зеркальное отображение, а затем не зеркальное отображение дисплеев приводит к тому, что все окна, слишком большие, чтобы поместиться на меньшем экране, будут изменены, чтобы соответствовать размеру, и переносит все окна на основной дисплей. Я знаю, что это не идеальное решение, поскольку вы хотите что-то на дополнительном дисплее, но это может быть полезным обходным путем в сочетании со следующим приемом, особенно если вы знаете сочетание клавиш: ⌘-F1. Нажмите ее, позвольте системе переключиться на зеркалирование и нажмите ее снова. Все ваши окна будут изменены до минимального размера и будут отображаться на основном дисплее.
Еще один очень полезный инструмент для решения этой проблемы - BetterTouchTool , который позволяет устанавливать жесты «Окно центра на следующем мониторе» и «Максимизировать окно на следующем мониторе». Я назначаю их четырем и пяти пальцам, соответственно, и затем я могу быстро вывести окно с одного монитора на другой, просто нажимая на трекпад. (Если вы не используете трекпад при подключении к большому дисплею, BTT может выполнять жесты и с другими указывающими устройствами.)
Эти два трюка вместе сделали работу с постоянно меняющимися разрешениями не идеальной, но, по крайней мере, терпимой. Если я хочу вывести все свои окна на дополнительный дисплей (скажем, я даю тренировку и хочу, чтобы строка меню была видимой для студентов, но я хочу, чтобы все мои окна, не связанные с обучением, были на другом дисплее) , Я делаю трюк с зеркалом / без зеркала, а затем несколько раз бью по трекпаду пальцами, пока все окна не откроются.
Наконец, если вы хотите поиграть, вы можете взглянуть на этот Applescript, который перемещает все окна в основное с помощью другого метода. В отличие от метода зеркального отображения, который перемещает окна к основному в качестве побочного эффекта, этот метод делает это явно, поэтому вы можете изменить его, чтобы переместить окна на предпочитаемый основной, дополнительный дисплей. Но это не легко, что может дать вам представление о том, почему все борется с вами против такого использования. Вот ключевая строка этого Applescript:
set position of window x to {0, 22}
Поскольку строка меню имеет 22 координаты отображения (которые раньше были «пикселями» до отображения Retina) высоко, а экраны и окна имеют свои исходные точки в верхнем левом углу, эта линия перемещает окно x справа внизу и вровень влево с меню. Чтобы адаптировать этот скрипт так, чтобы он вместо этого переместил все окна в верхний левый угол вторичного дисплея, вам необходимо выяснить его координаты и использовать его в качестве значения x. В расположении, которое вы показываете на скриншоте, «0» будет заменено отрицательным числом , так как вы находитесь слева от строки меню. Чтобы разобраться в этом, потребуется немного возиться, особенно если вы хотите, чтобы скрипт работал независимо от договоренности.
Это все клудж, я знаю; но вам придется принимать клуджи, если вы хотите, чтобы ваш основной и основной дисплеи отличались. Вот почему я действительно настоятельно рекомендую вам попытаться решить, что удерживает вас от того, чтобы другой дисплей был основным, а не сражался в этой конкретной битве.