Corri para o mesmo problema há um tempo atrás, e aqui está o que eu fiz:
Primeiro, espelhei as telas, como já foi sugerido. Logo depois disso, percebi que era muito perturbador ter a tela iluminada do macbook no canto do meu olho. Isso exigiu que eu matasse o brilho na tela do macbook. Mas sendo o cara preguiçoso que eu sou, eu odiava ter que ajustar manualmente o brilho toda vez que eu desconectava um monitor externo. Então me perguntei se havia uma maneira de automatizar o processo. Encontrei este aplicativo gratuito chamado Control Plane, que permite definir "contextos" com base no fato de determinados dispositivos (monitores, discos rígidos etc.) estarem conectados, se certas redes wi-fi estão dentro do alcance, etc; e com base nesses contextos, execute certos scripts de shell. Então, tudo que eu tinha que fazer era escrever um manuscrito (chamadokillBrightness.scpt
) para matar o brilho na tela do macbook e um shell script para chamar killBrightness.scpt
; e chame esse shell script no contexto necessário.
killBrightness.scpt
tell application "System Preferences" to set current pane to pane "Displays"
tell application "System Events"
tell process "System Preferences"
repeat with theWindow in windows
if title of theWindow as string is "Color LCD" then
tell tab group 1 of theWindow
tell slider 1 of group 2
set value to 0
end tell
end tell
end if
end repeat
end tell
end tell
tell application "System Preferences" to quit
O script de shell
#!/bin/sh
osascript /path/to/killBrightness.scpt
Desde que conecto muitos monitores diferentes no meu macbook, notei que, quando um com uma proporção diferente é conectado, minhas janelas ficam penduradas na borda da tela. A solução para isso seria redimensionar as janelas, mas isso é altamente ineficiente quando você usa uma tonelada de aplicativos e janelas como eu; além disso, eu sendo tão preguiçosa quanto eu, não gostava dessa solução. Portanto, com a ajuda do pessoal do Stack Overflow, pude criar esse AppleScript (chamado resizer.scpt
) para redimensionar automaticamente todas as janelas de (quase) todos os aplicativos (a ressalva é que alguns aplicativos não usam o correto Ganchos de estrutura de interface do usuário, por isso é muito difícil redimensioná-los):
resizer.scpt
:
property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach", "Skype", "VirtualBox"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}, {name:"Spotify", Button:3, pname:"Spotify"}, {name:"TaskCoach", Button:3, pname:"TaskCoach"}}
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
set bounds of theWindow to newBounds
end if
end repeat
else if name is not in buttonApps then
try
repeat with theWindow in windows
if visible of theWindow is true then
set bounds of theWindow to theBounds
end if
end repeat
end try
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
Agora, tudo o que eu precisava fazer era escrever um script de shell semelhante para chamar resizer.scpt
e colocar isso no ControlPlane e eu estava pronto para ser preguiçoso novamente!
Espero que isto ajude
PS: Eu esqueci de mencionar antes que tudo isso foi feito no meu MacBook Pro de 15 polegadas, executando o Lion