1

Я использую внешний монитор с моим MacBookPro (2012, последняя версия перед отображением сетчатки).

Без подключения к внешнему монитору разрешение на моем macbook составляет 1440x900, и жизнь хороша.

Дома я подключаюсь к внешнему монитору (и зеркальному дисплею) с одинаковым разрешением - жизнь отличная.
Однако, когда я прихожу в школу и настраиваю себя в лаборатории (и зеркальных дисплеях), я подключаюсь к внешнему монитору с видимым максимальным разрешением 1280x900, как видно на скриншоте ниже

скриншот разрешения экрана

Проблема в том, что из-за потери ширины разрешения все приложения, которые были увеличены (с зеленой кнопкой в верхнем левом углу), чтобы занимать весь экран, склонны считать, что они все еще могут занимать 1440 пикселей по ширине. Это приводит к тому, что эти приложения отключаются внешним монитором:

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

Есть ли способ, которым я могу избежать всего этого ручного изменения размера (возможно, автоматизированного, или даже яблочного сценария, который сделает это для меня, когда обнаружит изменение в разрешении)?

Я на Mac OS X 10.7.5 (Lion), если это имеет значение

2 ответа2

1

Пребывание не является бесплатным, а также не обрабатывает все приложения все время (это глючит)

С некоторой помощью я смог придумать этот appleScript, который отлично справляется со своей работой:

property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}}

tell application "Finder" to set theBounds to bounds of window of desktop

tell application "System Events"
    set bids to bundle identifier of processes where background only is false
end tell

repeat with bid in bids
    tell application id bid
        if name is not in blacklist then
            set appName to name as string
            if name is "Terminal" then
                set newBounds to {0, 0, (item 3 of theBounds) - 10, item 4 of theBounds}
                repeat with theWindow in windows
                    if visible of theWindow is true then
                        say appName
                        set bounds of theWindow to newBounds
                    end if
                end repeat
            else if name is not in buttonApps then
                repeat with theWindow in windows
                    if visible of theWindow is true then
                        set bounds of theWindow to theBounds
                    end if
                end repeat
            else if name is in buttonApps then
                -- get the buttonNumber
                repeat with buttonApp in buttonMaps
                    if (name of buttonApp as string) is appName then
                        set theButton to Button of buttonApp
                    end if
                end repeat
                tell application "System Events"
                    repeat with theProcess in (processes where bundle identifier is bid)
                        try
                            tell theProcess to tell window 1 to click button theButton
                        end try
                    end repeat
                end tell
            end if
        end if
    end tell
end repeat
0

Я не уверен в прямом решении вашей проблемы, то есть в том, что позволит приложениям знать истинные размеры меньшего экрана при зеркалировании.

Тем не менее, я использую комбинацию из двух утилит (к сожалению, не бесплатную) для управления перемещением между двумя офисами и домом (каждая с различной комбинацией мониторов, подключенных к моему MacBook Pro).

Они есть:

Arrange (от Trifle Apps)

Пребывание (от беспроводной собаки)

Таким образом, Arrange ускоряет перемещение окон в определенные места (сочетания клавиш, горячие углы или визуальная сетка, как вам удобнее) и поддерживает работу с несколькими мониторами; Пребывание сохранит эти договоренности на основе конфигурации. Поэтому, как только он узнает, что монитор X означает, что окна A и B имеют определенный размер, он запомнит в следующий раз, и если они отличаются на мониторе Y, он изменит их, когда вы подключите этот монитор.

У них обоих есть бесплатные пробные версии, так что вы можете попробовать и посмотреть, помогут ли они. Извините, что не могу предложить бесплатное решение!

Обновить

Теперь я использую Spectacle (от Eric Czarny) вместо Arrange. Это ПО для пожертвований, и, по моему мнению, оно более стабильно. Он менее сложен, чем Arrange, но делает все, что мне нужно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .