Есть несколько инструментов, которые позволяют вам перехватывать изменения состояния питания OS X:
Установка Sleep Watcher
Давайте попробуем это с Sleep Watcher. Загрузите инструмент с домашней страницы Bernhard Baehr и следуйте инструкциям по установке: если вы распаковали загрузку на рабочий стол, выполните следующие команды из окна терминала:
sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8
Это установит бинарный файл sleepwatcher
и справочные страницы. Вам будет предложено ввести пароль администратора.
Создание сценария сна
Теперь давайте создадим скрипт сна с именем ~/.sleep
. Он будет содержать команды, которые запускаются, когда машина переводится в спящий режим (т. Е. Когда крышка закрывается).
touch ~/.sleep
open -e !$
В этом файле добавьте следующее:
osascript -e 'tell application "Remote Desktop Connection" to quit'
Это приведет к выходу из приложения Microsoft RDP через команды AppleScript. Вы можете сделать это с любым приложением, если вы измените имя в соответствии с его названием. Сохраните файл. Теперь нам нужно сделать его исполняемым:
chmod +x ~/.sleep
Тестирование сценария сна
Теперь протестируйте ваш скрипт, сначала запустив программу RDP, а затем запустив в терминале следующее:
/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep
Это ничего не выведет, поэтому оставьте RDP и Sleep Watcher включенными, затем закройте крышку MacBook. Подождите пару секунд, пока он действительно не заснет. Тогда проснись снова. RDP закрылся? Большой! Что-то пошло не так? Посмотрите на вывод команды sleepwatcher
чтобы получить подсказку о том, где это не удалось.
Теперь вы можете отменить режим Sleep Watcher, нажав Ctrl C в терминале.
Запуск сценария в фоновом режиме
Для того, чтобы Sleep Watcher работал постоянно, вы должны сделать его LaunchDaemon. Создайте новый файл конфигурации, скопировав пример конфигурации и rc
-scripts.
sudo cp ~/Desktop/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
sudo cp ~/Desktop/sleepwatcher_2.2/config/rc.* /etc
Теперь загрузите файлы конфигурации с помощью launchd
:
sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
Это все, что вам нужно. Теперь файл .sleep
всегда будет выполняться всякий раз, когда вы спите на своем Mac.