Uzyskaj stan Centrum powiadomień OS X z wiersza polecenia

9

W systemie OS X 10.8 użytkownicy mogą wyłączyć Centrum powiadomień na jeden dzień. Czy istnieje sposób, aby sprawdzić, czy jest włączony z wiersza poleceń ?.

użytkownik732274
źródło

Odpowiedzi:

8

Możesz faktycznie dowiedzieć się, czy funkcja Nie przeszkadzać jest obecnie włączona czy wyłączona. Centrum powiadomień upuszcza listę w następującej lokalizacji, z której można odczytać wartość. Uruchom następujące polecenie, aby znaleźć plik plist:

ls ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist

Teraz możesz odczytać wartość z listy, którą właśnie znalazłeś, używając:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist

UWAGA: rzeczywista nazwa pliku może być inna niż nazwa powyżej.

Zobaczysz klucz o nazwie „doNotDisturb” i będzie miał wartość 1 lub 0 (włączony lub wyłączony)

Możesz także zmienić jego status, wykonując:

defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist doNotDisturb 1

lub:

defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist doNotDisturb 0

Aby zmiana zaczęła obowiązywać, musisz ponownie uruchomić Centrum powiadomień, wpisując:

killall NotificationCenter

Napisałem bardzo prosty skrypt Automatora, więc teraz mogę włączyć / wyłączyć Nie przeszkadzać w Centrum powiadomień za pomocą skrótu klawiaturowego. Bardzo przydatny. :)

Ali
źródło
Niestety, włączenie / wyłączenie tego nie działa w El Capitan.
Zsolt Szatmari
Nie działa również na Yosemite
Gianfranco P.
To nie zadziała. 1. ten UUID jest specyficzny dla Ciebie. 2. killall NotificationCenterzresetuje ustawienia do domyślnych, ale nie przeładuje ustawień.
Simba
4

Aby uzyskać status Nie przeszkadzać w Yosemite, wystarczy wpisać w terminalu następujące informacje:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.plist doNotDisturb
Horst
źródło
1

Prawdopodobnie najlepszym sposobem, jaki mogę wymyślić, jest zainstalowanie powiadomienia terminala i wysłanie mu wiadomości z terminala.

Zainstaluj Terminal Notifier

Powiadomienia terminalowe można zainstalować za pośrednictwem Ruby Gems

Rodzaj:

sudo gem install terminal-notifier

Wyślij wiadomość NC

Rodzaj:

terminal-notifier -message „Centrum powiadomień działa” -title „NC Status”

Jeśli działa Centrum powiadomień, pojawi się komunikat „Centrum powiadomień działa”

JamiePatt
źródło
2
Powyższe działało dla mnie dobrze, ale jest to ręczne rozwiązanie, a nie programowe wskazanie statusu, więc nie daję +1 jako odpowiedzi na to pytanie. Było to jednak bardzo przydatne pod innymi względami.
ClearCrescendo
Udzielenie takiego głosu nie jest tym samym, co wybranie poprawnej odpowiedzi. Jeśli odpowiedź ci pomogła, ale nie odpowiedziałeś na pytanie, możesz wyrazić opinię. jeśli odpowiedział na twoje pytanie, kliknij ikonę znacznika wyboru po lewej stronie.
jmh
1

W tej chwili sposoby programowej interakcji z Centrum powiadomień (w tym za pomocą wiersza poleceń) są dość ograniczone. Jak zauważył InfluenceJamie, istnieje terminal-notifier , który pozwala wysyłać powiadomienia z wiersza poleceń, ale wysyłanie powiadomień to właściwie wszystkie programy, które w tej chwili mogą zrobić. Z mojej lektury dokumentacji programisty programy mogą wysyłać i uzyskiwać jedynie informacje o określonych powiadomieniach, które wysyłają, brak informacji o stanie samego Centrum powiadomień lub inne powiadomienia. Nie ma również interfejsu Applescript.

W tej chwili jesteś ograniczony do ręcznego testowania, czy powiadomienie przechodzi, jak sugerował InfluenceJamie , lub masz nadzieję, że ktoś odkryje prywatne interfejsy API Apple i utworzy interfejs wiersza poleceń.

robmathers
źródło
W MacOS każda preferencja jest przechowywana w niektórych plikach plist, więc muszą być jakieś rzeczy „domyślnie czytane”, aby zrobić to, czego szukam.
user732274,
1
Cóż, jest to oczywiście możliwe, ale wartości domyślne są bardziej trwałe - preferencje tymczasowe mogą nie zostać zapisane w ustawieniach domyślnych. Jest to jednak prawdopodobnie najlepszy wybór, jeśli sugestia InfluenceJamie nie zadziała.
robmathers,
Gdzie należy to przechowywać, jeśli nie na listwie?
user732274,
1

Ustawienie Centrum powiadomień jest przechowywane w ~/Library/Preferences/ByHostfolderze, co oznacza, że ​​są to ustawienia specyficzne dla komputera.

Możesz użyć defaults -currentHostpolecenia, aby odczytać ustawienia. -currentHostsłuży do określenia ByHostustawienia, które nie jest typowe dla konkretnego użytkownika przechowywane w ~/Library/Preferences.

defaults -currentHost read com.apple.notificationcenterui doNotDisturb

Wartość wyjściowa 1oznacza, że ​​jest aktywowana, 0dla niepełnosprawnych.

W rzeczywistości powyższe polecenie odczytuje opcje z ~/Library/Preferences/ByHost/com.apple.notificationcenterui.<your-UUID>.plistpliku.

Ostrzeżenia : Ustawianie ByHostopcji za pomocą defaults -currentHost writenie działa. Opcje są rzeczywiście zapisane w pliku, ale nie jest on ponownie ładowany przez odpowiedniego demona. To chyba błąd.

Bibliografia

Simba
źródło