Jakiś czas temu napotkałem ten sam problem i oto, co zrobiłem:
Najpierw dublowałem wyświetlacze, jak już sugerowano. Niedługo po tym zdałem sobie sprawę, że bardzo rozpraszające jest to, że kącik mojego oka jest wyłączony. Wymagało to zabicia jasności na ekranie MacBooka. Ale będąc leniwym facetem, którym jestem, nienawidziłem konieczności ręcznej regulacji jasności za każdym razem, gdy odłączałem / podłączałem zewnętrzny monitor. Zastanawiałem się więc, czy istnieje sposób na zautomatyzowanie tego procesu. Znalazłem tę bezpłatną aplikację o nazwie Control Plane, która pozwala mi ustawić „konteksty” na podstawie tego, czy niektóre urządzenia (monitory, dyski twarde itp.) Są podłączone, czy niektóre sieci Wi-Fi są w zasięgu itp .; i na podstawie tych kontekstów uruchom niektóre skrypty powłoki. Więc wszystko, co musiałem zrobić, to napisać skrypt jabłkowy (tzwkillBrightness.scpt
), aby zabić jasność na ekranie komputera Macbook i wywołać skrypt powłoki killBrightness.scpt
; i wywołaj ten skrypt powłoki w wymaganym kontekście.
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
Skrypt powłoki
#!/bin/sh
osascript /path/to/killBrightness.scpt
Ponieważ podłączam wiele różnych monitorów do mojego MacBooka, zauważyłem, że kiedy podłączony jest jeden z innym współczynnikiem proporcji, moje okna zwisają z krawędzi ekranu. Rozwiązaniem tego byłoby zmiana rozmiaru okien, ale jest to bardzo nieefektywne, gdy używasz tak wielu aplikacji i okien, jak ja; także, że jestem tak leniwy jak ja, nie podobało mi się to rozwiązanie. Tak więc, z pomocą miłych ludzi z Stack Overflow, mogłem wymyślić ten AppleScript (wywoływany resizer.scpt
), aby automatycznie zmieniać rozmiar wszystkich okien (prawie) wszystkich aplikacji (zastrzeżenie jest takie, że niektóre aplikacje nie używają poprawnych Haki frameworku interfejsu użytkownika, więc zmiana ich rozmiaru jest dość trudna):
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
Teraz wszystko, co musiałem zrobić, to napisać podobny skrypt powłoki, aby wywołać resizer.scpt
i umieścić to w ControlPlane, i wszystko było ustawione, żeby znów być leniwym!
Mam nadzieję że to pomoże
PS: Zapomniałem wcześniej wspomnieć, że wszystko to zostało zrobione na moim 15-calowym MacBooku Pro z systemem Lion