ฉันพบปัญหาเดียวกันเมื่อไม่นานมานี้และนี่คือสิ่งที่ฉันทำ:
ก่อนอื่นฉันทำมิเรอร์จอแสดงผลตามที่แนะนำไว้แล้ว ไม่นานหลังจากนั้นฉันก็ตระหนักว่าการปิดหน้าจอสว่างของ macbook นั้นอยู่ที่มุมตาของฉัน สิ่งนี้ต้องการให้ฉันฆ่าความสว่างบนหน้าจอของ macbook แต่เป็นคนขี้เกียจที่ฉันเป็นฉันเกลียดที่จะต้องปรับความสว่างด้วยตนเองทุกครั้งที่ฉันถอด / เสียบจอภาพภายนอก ดังนั้นฉันสงสัยว่ามีวิธีที่จะทำให้กระบวนการเป็นไปโดยอัตโนมัติหรือไม่ ฉันพบแอพฟรีที่เรียกว่าControl Planeซึ่งให้ฉันตั้งค่า "บริบท" ขึ้นอยู่กับว่าอุปกรณ์บางอย่าง (จอภาพฮาร์ดไดรฟ์ ฯลฯ ) เสียบอยู่หรือไม่ไม่ว่าจะเป็นเครือข่าย Wi-Fi บางตัวที่อยู่ในระยะ ฯลฯ และตามบริบทเหล่านี้ให้เรียกใช้เชลล์สคริปต์บางตัว ดังนั้นสิ่งที่ฉันต้องทำก็คือเขียน applescript (เรียกว่า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 ของฉันฉันสังเกตเห็นว่าเมื่อเสียบจอภาพที่มีอัตราส่วนภาพแตกต่างกัน windows ของฉันก็จะปิดขอบหน้าจอ วิธีแก้ปัญหานี้ก็คือการปรับขนาดหน้าต่าง แต่ก็ไม่มีประสิทธิภาพสูงเมื่อคุณใช้แอพและหน้าต่างจำนวนมากอย่างที่ฉันทำ นอกจากนี้ฉันยังขี้เกียจเหมือนฉันไม่ชอบวิธีแก้ปัญหานั้น ดังนั้นด้วยความช่วยเหลือของเพื่อน ๆ ที่ 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 และฉันก็พร้อมที่จะขี้เกียจอีกครั้ง!
หวังว่านี่จะช่วยได้
PS: ฉันลืมที่จะพูดถึงก่อนหน้านี้ทั้งหมดนี้ทำบน MacBook Pro ขนาด 15 นิ้วของฉันใช้ Lion