Como ter um aplicativo fechado na tampa fechar no OS X

4

Eu tenho um MacBook Air. Costumo usar o cliente RDP da Microsoft para se conectar a uma estação de trabalho virtual. Eu preciso que esta sessão RDP seja fechada automaticamente (saia do RDP) quando eu fechar a tampa, antes que o OS X entre em suspensão.

Como essa funcionalidade pode ser alcançada?

    
por Maxim V. Pavlov 22.08.2013 / 16:13

1 resposta

6

Existem algumas ferramentas que permitem interceptar alterações de status de energia do OS X:

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.

    
por 22.08.2013 / 17:14

Tags