얼마 전에 같은 문제가 발생했으며 여기에 내가 한 일이 있습니다.
먼저, 이미 제안한대로 디스플레이를 미러링했습니다. 이 작업을 마친 후, 나는 맥북의 조명 스크린이 눈의 구석에 떨어져있는 것이 매우 산만하다는 것을 깨달았습니다. 이를 위해서는 맥북 화면의 밝기를 낮추어야했습니다. 그러나 내가 게으른 사람이기 때문에 외부 모니터를 뽑거나 뺄 때마다 밝기를 수동으로 조정 해야하는 것을 싫어했습니다. 그래서 프로세스를 자동화하는 방법이 있는지 궁금했습니다. 특정 장치 (모니터, 하드 드라이브 등)가 연결되어 있는지, 특정 Wi-Fi 네트워크가 범위 내에 있는지 여부에 따라 "컨텍스트"를 설정할 수있는 Control Plane 이라는이 무료 앱을 찾았 습니다. 이러한 컨텍스트를 기반으로 특정 쉘 스크립트를 실행하십시오. 그래서 내가해야 할 일은 애플 스크립트 (killBrightness.scpt
) macbook의 화면에서 밝기를 낮추고 호출 할 쉘 스크립트 killBrightness.scpt
; 필요한 컨텍스트에서이 쉘 스크립트를 호출하십시오.
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
쉘 스크립트
#!/bin/sh
osascript /path/to/killBrightness.scpt
Macbook에 다양한 모니터를 연결했기 때문에 다른 종횡비를 가진 모니터가 연결되면 창 가장자리가 화면 가장자리에 매달려있는 것을 알 수있었습니다. 이것에 대한 해결책은 창 크기를 조정하는 것이지만, 내가하는 것처럼 많은 앱과 창을 사용할 때 매우 비효율적입니다. 또한, 나는 나만큼 게으르고 그 해결책을 좋아하지 않았습니다. 따라서 Stack Overflow에서 멋진 사람들의 도움을 받아이 AppleScript ( resizer.scpt
)를 사용하여 모든 응용 프로그램의 모든 창 크기를 자동으로 조정합니다 (주의 사항은 일부 응용 프로그램이 올바른 것을 사용하지 않는다는 것입니다) UI 프레임 워크가 연결되므로 크기를 조정하기가 매우 어렵습니다.)
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
이제 내가해야 할 일은 비슷한 셸 스크립트를 작성하여 resizer.scpt
ControlPlane에 넣고 모든 게으르다 다시 시작되었습니다!
이것이 도움이되기를 바랍니다.
추신 :이 모든 것이 Lion을 실행하는 15 인치 MacBook Pro에서 수행되었다는 것을 언급하지 않았습니다.