J'ai rencontré le même problème il y a quelque temps, et voici ce que j'ai fait :
D'abord, j'ai mis les écrans en miroir, comme cela a déjà été suggéré. Peu après, je me suis rendu compte qu'il était très gênant d'avoir l'écran éclairé du macbook dans le coin de mon œil. Cela a nécessité que je réduise la luminosité de l'écran du Macbook. Mais le paresseux que je suis détestait devoir régler manuellement la luminosité chaque fois que je débranchais ou branchais un écran externe. Je me suis donc demandé s'il y avait un moyen d'automatiser le processus. J'ai trouvé cette application gratuite appelée Plan de contrôle qui me permet de définir des "contextes" basés sur le fait que certains périphériques (moniteurs, disques durs, etc.) sont branchés, que certains réseaux wi-fi sont à portée, etc. et, en fonction de ces contextes, d'exécuter certains scripts shell scripts. Ainsi, tout ce que j'avais à faire était d'écrire un applescript (appelé killBrightness.scpt
) pour tuer la luminosité de l'écran du macbook et un shell script pour appeler killBrightness.scpt
; et appeler ce shell script dans le contexte requis.
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
Le shell script
#!/bin/sh
osascript /path/to/killBrightness.scpt
Comme je branche de nombreux moniteurs différents sur mon macbook, j'ai remarqué que lorsqu'un moniteur avec un ratio d'aspect différent est branché, mes fenêtres dépassent du bord de l'écran. La solution à ce problème serait de redimensionner les fenêtres, mais c'est très inefficace lorsque vous utilisez une tonne d'applications et de fenêtres comme je le fais ; de plus, le paresseux que je suis n'aime pas cette solution. Ainsi, avec l'aide des sympathiques personnes de Stack Overflow, j'ai pu créer cet AppleScript (appelé resizer.scpt
) pour redimensionner automatiquement toutes les fenêtres de (presque) toutes les applications (le problème est que certaines applications n'utilisent pas les crochets corrects de l'interface utilisateur, il est donc assez difficile de les redimensionner) :
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
Maintenant, tout ce que j'avais à faire était d'écrire un script shell similaire pour appeler resizer.scpt
et je l'ai mis dans ControlPlane et j'étais prêt à être paresseux à nouveau !
J'espère que cela vous aidera
PS : J'ai oublié de préciser que tout ceci a été réalisé sur mon MacBook Pro 15 pouces, sous Lion.