Existem algumas ferramentas que permitem interceptar alterações de status de energia do OS X:
- Cenário e Power Manager , ferramentas comerciais e de GUI.
- Sleep Watcher , gratuito e de código aberto, mas linha de comando.
Instalação do Sleep Watcher
Vamos tentar isso com o Sleep Watcher. Faça o download da ferramenta na página inicial de Bernhard Baehr e siga as instruções de instalação: supondo que você tenha descompactado o download para sua área de trabalho, chame os seguintes comandos em uma janela do Terminal:
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
Isso instalará o sleepwatcher
binário e as páginas de manual. Você será solicitado a fornecer uma senha de administrador.
Criando um script de suspensão
Agora, vamos criar um script de suspensão chamado ~/.sleep
. Ele conterá os comandos que são executados quando a máquina é colocada em suspensão (ou seja, quando a tampa fecha).
touch ~/.sleep
open -e !$
Nesse arquivo, adicione o seguinte:
osascript -e 'tell application "Remote Desktop Connection" to quit'
Isso encerrará o aplicativo Microsoft RDP por meio de comandos do AppleScript. Você pode fazer isso com qualquer aplicativo, desde que altere o nome de acordo com o título. Salve o arquivo. Agora precisamos torná-lo executável:
chmod +x ~/.sleep
Testando o script de sono
Agora teste seu script iniciando primeiro o programa RDP e executando o seguinte no Terminal:
/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep
Isso não produzirá nada, então deixe o RDP e o Sleep Watcher em execução e feche a tampa do seu MacBook. Espere alguns segundos até que realmente durma. Então acorde de novo. O RDP foi fechado? Ótimo! Algo deu errado? Veja a saída do comando sleepwatcher
para obter uma sugestão sobre onde ele falhou.
Agora você pode cancelar o Sleep Watcher pressionando Ctrl C no Terminal.
Executando o script em segundo plano
Para que o Sleep Watcher seja executado todo o tempo, você precisa torná-lo um LaunchDaemon. Crie um novo arquivo de configuração copiando a configuração de exemplo e 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
Agora carregue os arquivos de configuração com launchd
:
sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
Isso é tudo que você precisa. Agora, o arquivo .sleep
sempre será executado sempre que você dormir no seu Mac.