Вот что хреново:
Я хотел бы заменить шаг 2 на «компьютер точно запоминает, как он у меня был, и просто возвращает его таким образом».
(Лично мне нужно решение только для Mac, но сбор решений для других систем здесь может быть полезен другим. Я уверен, что это распространенная проблема.)
Slate — очень мощное бесплатное приложение для Mac, которое делает именно то, что вам нужно. Когда вы подключаете дополнительный монитор, он автоматически обнаруживает новый монитор , и все ваши окна будут перемещены и изменены в размере так, как вам нравится. Вы можете определить пользовательские положения и размеры для всех ваших приложений, включая полноэкранный режим, полуэкран и сетку.
Одна из самых крутых особенностей Slate заключается в том, что вы можете определять различные макеты в зависимости от количества подключенных мониторов . Например, если вы используете свой ноутбук отдельно, вы можете захотеть, чтобы все ваши приложения заполняли весь экран. Но когда у вас есть дополнительный монитор большего размера, вы можете разделить экран между браузером, почтой и музыкой. Шифер делает это легко.
Вы также можете определить сочетания клавиш для определенных макетов и действий, таких как подталкивание и изменение размера окон на определенный процент.
Ниже мой файл конфигурации. Я держу все свои приложения в полноэкранном режиме на всех своих мониторах, но вы можете изменить его, чтобы сделать их наполовину или в другом размере:
# Monitor Aliases
alias mon-laptop 0 # variable for my laptop monitor
alias mon-hp 1 # my external HP monitor
# Window Position Regions
alias hp-full move screenOriginX;screenOriginY screenSizeX;screenSizeY ${mon-hp}
alias hp-left move screenOriginX;screenOriginY screenSizeX/2;screenSizeY ${mon-hp}
alias hp-right move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY ${mon-hp}
alias laptop-full move screenOriginX;screenOriginY screenSizeX;screenSizeY ${mon-laptop}
alias laptop-left move screenOriginX;screenOriginY screenSizeX/2;screenSizeY ${mon-laptop}
alias laptop-right move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY ${mon-laptop}
alias laptop-righttop move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2 ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2 screenSizeX/2;screenSizeY/2 ${mon-laptop}
# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}
# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}
# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2
# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1
Вот список функций со страницы Slate на GitHub:
Вот отличный учебник о том, как получить максимальную отдачу от Slate.
default
директивы . Я не знаю, сможете ли вы автоматизировать часть «Сделать снимок».Я решил эту проблему с помощью небольшого AppleScript и небольшой бесплатной утилиты Quicksilver.
Сохраните этот небольшой AppleScript в месте, которое не изменится на вашем компьютере:
try
tell application "Adium"
activate
tell window "contacts"
set the bounds to {1281, 200, 1460, 850}
end tell
tell chat windows
set the bounds to {1281, 800, 1800, 1200}
end tell
end tell
end try
try
tell application "iTunes"
activate
set the bounds of the first window to {1750, 520, 2700, 1150}
end tell
end try
try
tell application "Terminal"
activate
set the bounds of the first window to {2450, 320, 3180, 950}
end tell
end try
try
tell application "Firefox"
activate
set the bounds of the first window to {1460, 20, 2800, 950}
end tell
end try
Вам нужно будет настроить, какие приложения вы хотите видеть на своем мониторе, а окна ограничиваются так, как вам нравится. Я программист, и приведенная выше конфигурация — это то, как я запускаю свой второй монитор.
Установите Quicksilver .
Я решил сделать его невидимым в доке и просто запускать как небольшой демон панели задач.
Настройте ключевую команду в Quicksilver и перетащите свой AppleScript из шага 1 в окно в качестве выполняемого действия. Я привязал его к CommandShiftA. Прекрасно работает!
Поместите это здесь для потомков. Очень маленькое приложение, которое делает именно это и ничего более: Memmon (macOS 10.10+).
Я просто следил за http://cordlessdog.com/stay/ , у меня отлично работает, хотя и с небольшим отставанием.
После того, как вы остаетесь установленным на своем Mac, вы можете запустить его и сохранить окна, как хотите. Поэтому всякий раз, когда вы отключаете свои дисплеи и подключаетесь обратно, все окна будут восстановлены.
Возможно, вам придется добавить stay в качестве приложения для запуска, потому что вам придется запускать его каждый раз, когда вы перезагружаете свой Mac.
Я исправил это без каких-либо внешних приложений.
Все, что вам нужно сделать, это убедиться, что ваш ноутбук — «Рабочий стол 1», а внешний монитор — «Рабочий стол 2».
вы можете сделать это, переместив белую строку меню на экран ноутбука в системных настройках> Дисплеи> Расположение
Прежде чем отключить монитор, закройте все, что не находится на основном мониторе. Приложения обычно сохраняют свое состояние (включая размещение окна) при закрытии и считывают его при открытии, поэтому, если второй монитор присутствует в оба этих случая, все должно быть в порядке.
Вы можете воспользоваться преимуществами приложений, которые позволяют одновременно открывать более одного экземпляра, но сохраняют состояние только при закрытии. Закройте экземпляр с несколькими мониторами (что приводит к сохранению состояния). Отключите второй монитор. Если у вас запущен второй экземпляр, его следует переместить на главный монитор, или вы можете запустить другой экземпляр. Не закрывайте этот экземпляр, пока снова не подключите второй монитор и не запустите другой экземпляр (который затем будет считывать конфигурацию нескольких мониторов при запуске). Затем вы можете выйти из экземпляра с одним монитором (сохранив это состояние), а затем из экземпляра с несколькими мониторами (перезаписав состояние одного монитора).
Более сложный вариант может включать в себя выяснение места сохранения состояния, его резервное копирование и написание пакетного файла/скрипта для его восстановления перед открытием приложения, что позволит вам сделать ссылку, чтобы делать это автоматически при запуске приложения. .
Наконец, может быть такая утилита для вашей платформы, или написать ее может быть не слишком сложно. Для Windows существует программа ShiftWindow , которая может перемещать окна либо при запуске приложения, либо при нажатии определенной горячей клавиши. Боюсь, я недостаточно хорошо знаю MacOS, чтобы сказать, существует ли подобная утилита. Это, вероятно, идеальное решение, уступающее только прямой поддержке ОС.
На Reddit некоторые пользователи предложили Display Maid . Я использую его на MB Air (M1), подключенном к док-станции Display Link, с монитором 4K и монитором Full HD, подключенным через TB, и пока все отлично.
Я нашел ответ на macrumors , который работает для меня, не требуя другого программного обеспечения.
Preferences
-> General
-> Снять галочкуClose windows when quitting an app
Описание того, что делает этот параметр, имеет смысл:
Если выбрано, открытые документы и окна не будут восстановлены при повторном открытии приложения.
Я не знаю, почему отключение и подключение дисплея считается «повторным открытием приложения», но это сработало для меня.
По крайней мере, в Windows многие приложения восстановятся, если вы развернете их перед переключением мониторов. Оставьте их в покое, пока вы находитесь на собрании, а затем восстановите их после повторного подключения.
Это все еще неполное исправление (и хлопот), но это единственное, что я знаю, что делать, если я хочу получить шанс воскресить мои тщательно размещенные окна. Хотя ShiftWindow звучит интригующе...
И если вы переходите с двух мониторов на один, Alt + пробел + M, тогда клавиши со стрелками спасают жизнь (снова Windows, извините), если вы «потеряете» свои окна.
http://www.irradiatedsoftware.com/twoup/index.html
Я нашел это через Lifehacker, и это отлично работает для меня. Я использую профессиональную версию SizeUp, а не бесплатную TwoUp, и она идеальна.
Я пользователь Windows и искал, как отключить новую функцию Windows 7, чтобы убрать все окна с отключенного внешнего монитора. Я нашел квитанцию (для видеокарт ATI), чтобы установить все значения DMMEnableDDCPolling в реестре на 0. Это отключает автоматическую проверку, если монитор выключен. Теперь, если монитор отключить и снова подключить, все окна остаются в том же положении.
Вот ответ, который мне помог: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (ответ Алекса)
Отключите и подключите мониторы в том же порядке.
Последовательность отключения: Монитор1 -> Монитор2 Последовательность подключения: Монитор2 -> Монитор1
деревья
Тони Арнольд
васко
Эрнст Роберт