Mi sono imbattuto nello stesso problema qualche tempo fa, ed ecco cosa ho fatto:
In primo luogo, ho rispecchiato i display, come è già stato suggerito. Poco dopo averlo fatto, mi sono reso conto che era molto distratto avere lo schermo illuminato del macbook con la coda dell'occhio. Ciò ha richiesto che uccida la luminosità sullo schermo del macbook. Ma essendo il ragazzo pigro che sono, odiavo dover regolare manualmente la luminosità ogni volta che un / collegato un monitor esterno. Quindi mi chiedevo se esistesse un modo per automatizzare il processo. Ho trovato questa app gratuita denominata Control Plane che consente di impostare "contesti" in base al fatto che determinati dispositivi (monitor, dischi rigidi, ecc.) Siano collegato, se alcune reti wi-fi sono nel raggio d'azione, ecc; e in base a questi contesti, eseguire determinati script di shell. Quindi tutto ciò che dovevo fare era scrivere un applescript (chiamato killBrightness.scpt
) per uccidere la luminosità sullo schermo del macbook e uno script di shell per chiamare killBrightness.scpt
; e chiama questo script di shell nel contesto richiesto.
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
Lo script della shell
#!/bin/sh
osascript /path/to/killBrightness.scpt
Dal momento che collego molti monitor diversi al mio macbook, ho notato che quando uno con un rapporto di aspetto diverso è collegato, le mie finestre pendono dal bordo dello schermo. La soluzione a questo sarebbe ridimensionare le finestre, ma questo è altamente inefficiente quando usi una tonnellata di app e windows come faccio io; inoltre, essendo io pigro come sono, non mi è piaciuta questa soluzione. Così, con l'aiuto dei bravi ragazzi di Stack Overflow, sono riuscito a creare questo AppleScript (chiamato resizer.scpt
) per ridimensionare automaticamente tutte le finestre di (quasi) tutte le app (l'avvertenza è che alcune applicazioni non lo fanno usa i ganci di framework UI corretti, quindi è abbastanza difficile ridimensionarli):
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
Ora, tutto ciò che dovevo fare era scrivere uno script di shell simile per chiamare resizer.scpt
e metterlo in ControlPlane e io ero tutto pronto per essere pigro tutto da capo!
Spero che questo aiuti
PS: ho dimenticato di menzionare che tutto ciò è stato fatto sul mio MacBook Pro da 15 pollici, con Lion in esecuzione