Нещодавно я зіткнувся з тією ж проблемою, і ось що я зробив:
По-перше, я відобразив відображення дисплеїв, як уже було запропоновано. Незабаром, зробивши це, я зрозумів, що це дуже відволікає, щоб у куточку ока було вимкнено освітлений екран macbook. Це вимагало, щоб я вбив яскравість на екрані macbook. Але, будучи ледачим хлопцем, який я є, я ненавидів ручне регулювання яскравості кожного разу, коли я відключав / підключав зовнішній монітор. Тому я задумався, чи існує спосіб автоматизувати процес. Я знайшов це безкоштовне додаток під назвою Control Plane, яке дозволить мені встановити "контексти", залежно від того, чи підключені певні пристрої (монітори, жорсткі диски тощо), чи є певні мережі Wi-Fi в діапазоні тощо; і на основі цих контекстів запустіть певні сценарії оболонки. Тож все, що мені довелося зробити, - це написати яблучний сценарій (закликав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
Оскільки я підключаю багато різних моніторів до своєї книги, я помітив, що коли підключається інший із співвідношенням сторін, мої вікна звисають до краю екрана. Рішенням цього було б змінити розмір вікон, але це дуже неефективно, коли ви використовуєте безліч додатків та вікон, як я; Крім того, мені, як я лінивий, як я, не сподобалося це рішення. Отже, за допомогою приємних людей у програмі Stack Overflow мені вдалося придумати цей AppleScript (званий resizer.scpt
) для автоматичного зміни розміру всіх вікон (майже) усіх додатків (застереження в тому, що деякі програми не використовують правильний Підключення каркасу інтерфейсу, тому змінити розмір їх досить складно):
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: Я раніше забув згадати, що все це було зроблено на моєму 15-дюймовому MacBook Pro під управлінням Lion