Estou usando um monitor externo com meu MacBookPro (2012, última versão antes da tela retina).
Sem conectar a um monitor externo, a resolução do meu macbook é 1440x900 e a vida é boa.
Em casa, conecto um monitor externo (e telas espelhadas) com a mesma resolução - a vida é ótima.
Porém, quando venho para a escola e me instalo no laboratório (e nos monitores espelhados), conecto-me a um monitor externo com resolução máxima aparente de 1280x900, como pode ser visto na imagem abaixo
O problema é que com a perda na largura da resolução, todos os aplicativos que foram ampliados (com o botão verde no canto superior esquerdo) para ocupar a tela inteira, tendem a pensar que ainda podem ocupar 1440 pixels de largura. Isso faz com que esses aplicativos sejam cortados pelo monitor externo:
Agora sou forçado a percorrer todas as janelas abertas de todos os meus aplicativos para redimensioná-los para este monitor externo. Além disso, quando voltar para casa, terei que repetir esse processo para a resolução 1440x900.
Existe uma maneira de evitar todo esse redimensionamento manual (talvez automatizado, ou talvez até mesmo um applescript que fará isso por mim quando detectar uma alteração na resolução)?
Estou no Mac OS X 10.7.5 (Lion), se for importante
Responder1
Não tenho certeza de uma solução direta para o seu problema, ou seja, algo que permita aos aplicativos saber as verdadeiras dimensões da tela menor durante o espelhamento.
No entanto, eu uso uma combinação de dois utilitários (infelizmente não gratuitos) para gerenciar a movimentação entre dois escritórios e uma casa (cada um com uma combinação diferente de monitores conectados ao meu MacBook Pro).
Eles são:
Arranjo (por Trifle Apps)
Ficar (por Cachorro Sem Fio)
Portanto, o Arrange torna mais rápida a movimentação de janelas para locais precisos (atalhos de teclado, cantos quentes ou uma grade visual, como você preferir) e reconhece vários monitores; Stay salvará esses arranjos por configuração. Assim, quando descobrir que o monitor X significa que as janelas A e B têm um determinado tamanho, ele se lembrará da próxima vez e, se forem diferentes no monitor Y, ele os alterará quando você conectar o monitor.
Ambos têm testes gratuitos, então você pode experimentá-los e ver se eles ajudam. Lamentamos não poder oferecer uma solução gratuita!
Atualizar
Agora eu uso o Spectacle (por Eric Czarny) em vez de Organizar. É doação e parece ser mais estável na minha experiência. É menos sofisticado que o Arrange, mas faz tudo que preciso.
Responder2
Stay não é gratuito e também não lida com todos os aplicativos o tempo todo (tem bugs)
Comalguma ajuda, consegui criar este applescript que faz o trabalho perfeitamente:
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