Jak zamknąć aplikację na pokrywie w OS X

4

Mam MacBooka Air. Często korzystam z klienta RDP firmy Microsoft, aby połączyć się z wirtualną stacją roboczą. Potrzebuję tej sesji RDP, aby została automatycznie zamknięta (zamknij RDP), gdy zamknę pokrywę, zanim OS X przejdzie w stan uśpienia.

Jak można osiągnąć tę funkcjonalność?

Maxim V. Pavlov
źródło
Co to jest aplikacja OS X, której używasz do łączenia się ze skrzynką Windows? Czy używasz microsoft.com/mac/remote-desktop-client ?
Colyn1337
Tak, klient pulpitu zdalnego firmy Microsoft.
Maxim V. Pavlov
ty moc chcesz zadać to pytanie na apple.stackexchange.com teren. Ktoś tutaj może wiedzieć, że wyobrażam sobie stworzenie niestandardowego skryptu uśpienia, który sprawdza program RDP i zamyka go. To, co próbujesz osiągnąć, jest przeciwieństwem tego, do czego przeznaczony był sen.
Colyn1337
@ Pytania Colyn1337 OS X są na temat tutaj. Proszę nie radzić użytkownikom, aby zamieszczali swoje pytania w innym miejscu, ponieważ wysyłanie postów nie jest dozwolone. Maxim może mieć pytanie migrowane zapytać innego, jeśli nie otrzyma odpowiedniej odpowiedzi w ciągu, powiedzmy, kilku dni. Dziękuję za Twoje zrozumienie.
slhck
@slhck Nigdy nie powiedziałem, że nie. Po prostu polecałem bardziej konkretną społeczność.
Colyn1337

Odpowiedzi:

7

Istnieje kilka narzędzi, które pozwalają przechwycić zmiany statusu zasilania OS X:

Instalacja Sleep Watcher

Spróbujmy tego z Sleep Watcher. Pobierz narzędzie ze strony domowej Bernharda Baehra i postępuj zgodnie z instrukcjami instalacji: zakładając, że rozpakowałeś plik do swojego pulpitu, wywołaj następujące polecenia z okna terminala:

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

Spowoduje to zainstalowanie sleepwatcher binarne i strony podręcznika. Zostaniesz poproszony o hasło administratora.

Tworzenie skryptu uśpienia

Teraz stwórzmy skrypt uśpienia o nazwie ~/.sleep. Będzie on zawierał polecenia uruchamiane, gdy maszyna zostanie uśpiona (tj. Po zamknięciu pokrywy).

touch ~/.sleep
open -e !$

W tym pliku dodaj następujące informacje:

osascript -e 'tell application "Remote Desktop Connection" to quit'

Spowoduje to zamknięcie aplikacji Microsoft RDP za pomocą poleceń AppleScript. Możesz to zrobić za pomocą dowolnej aplikacji, o ile zmienisz nazwę zgodnie z jej tytułem. Zapisz plik. Teraz musimy go wykonać:

chmod +x ~/.sleep

Testowanie skryptu uśpienia

Teraz przetestuj swój skrypt, uruchamiając najpierw program RDP, a następnie uruchamiając następujące polecenie w Terminalu:

/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep

To niczego nie wyświetli, więc pozostaw oba programy RDP i Sleep Watcher, a następnie zamknij pokrywę MacBooka. Poczekaj kilka sekund, aż naprawdę pójdzie spać. Potem obudź go ponownie. Czy RDP się zamknął? Świetny! Czy coś poszło nie tak? Spójrz na wyjście sleepwatcher polecenie, aby uzyskać podpowiedź, gdzie nie powiodło się.

Możesz teraz anulować obserwator uśpienia, naciskając Ctrl do w Terminalu.

Uruchamianie skryptu w tle

Aby cały czas działać Śpiący Obserwator, musisz uczynić go LaunchDaemonem. Utwórz nowy plik konfiguracyjny, kopiując przykładową konfigurację i rc -listy.

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

Teraz załaduj pliki konfiguracyjne za pomocą launchd:

sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist

To wszystko czego potrzebujesz. Teraz .sleep plik będzie zawsze wykonywany przy każdym uśpieniu komputera Mac.

slhck
źródło
Od czasu dostarczenia tej cudownej odpowiedzi Microsoft zmienił nazwę swojej aplikacji, więc teraz prawidłowe jest wywołanie os Javascript osascript -e 'tell application "Remote Desktop Connection" to quit'
Maxim V. Pavlov
@ MaximV.Pavlov Dziękuję za komentarz, ale czy to nie jest już moja odpowiedź?
slhck
Moje złe, prawdopodobnie miałem coś innego, a ty początkowo zapewniłeś poprawne nazewnictwo. Teraz przywoływam dwa osascripts. Jeden do zamykania Microsoft Remote Desktop, a drugi do zamykania rzeczywistych okien sesji o nazwie „Remote Desktop Connection”.
Maxim V. Pavlov