Получить состояние центра уведомлений OS X из командной строки

9

На OS X 10.8 пользователи могут отключить Центр уведомлений на один день. Есть ли способ проверить, включен ли он из командной строки?

user732274
источник

Ответы:

8

Вы действительно можете узнать, включен ли режим «Не беспокоить» или нет. Центр уведомлений удаляет список в следующем месте, где вы можете прочитать значение. Запустите следующее, чтобы найти файл plist:

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

Теперь вы можете прочитать значение из только что найденного списка, используя:

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

ПРИМЕЧАНИЕ: ваше фактическое имя файла может отличаться от того, что я перечислил выше.

Вы увидите ключ с именем «doNotDisturb», который будет иметь значение 1 или 0 (включено или отключено).

Вы также можете изменить его статус, выполнив:

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

или:

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

Чтобы изменения вступили в силу, вам нужно перезапустить Центр уведомлений, набрав:

killall NotificationCenter

На самом деле я написал очень простой скрипт Automator, поэтому теперь я могу включать / отключать функцию «Не беспокоить» для Центра уведомлений с помощью сочетания клавиш. Очень кстати. :)

Али
источник
К сожалению, установка этого параметра в El Capitan не работает.
Жолт Сатмари
Также не работает на Йосемити
Джанфранко П.
Это не сработает. 1. этот UUID специфичен для вас. 2. killall NotificationCenterсбросит настройки по умолчанию, но не перезагрузит настройки.
Симба
4

Чтобы получить статус « Не беспокоить» в Йосемити, просто введите в своем терминале следующее:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.plist doNotDisturb
Горст
источник
1

Вероятно, лучший способ, который я могу придумать, - это установить уведомитель терминала и отправить ему сообщение с терминала.

Установить терминал уведомлений

Терминальный уведомитель может быть установлен через Ruby Gems

Тип:

sudo gem установить терминал-уведомитель

Отправить NC сообщение

Тип:

Terminal-Notifier -message "Центр уведомлений работает" -титл "NC Status"

Если центр уведомлений запущен, вы получите сообщение «Центр уведомлений запущен»

JamiePatt
источник
2
Вышесказанное работает хорошо для меня, но это ручное решение, а не программная индикация состояния, поэтому я не даю ему +1 в качестве ответа на этот вопрос. Это было, однако, очень полезно в других отношениях.
ClearCrescendo
Предоставление этого ответа - не то же самое, что выбор правильного ответа. Если ответ помог вам, но не ответил на вопрос, вы можете дать ему ответ. если он ответил на ваш вопрос, нажмите на значок галочки слева.
JMH
1

На данный момент способы программного взаимодействия с Центром уведомлений (в том числе через командную строку) довольно ограничены. Как отметил InfluenceJamie, есть терминал-уведомитель , который позволяет отправлять уведомления из командной строки, но отправка уведомлений - это почти все, что могут сделать программы в настоящий момент. Из моего прочтения документации для разработчиков программы могут только отправлять и получать информацию о конкретных уведомлениях, которые они отправляют, никакой информации о состоянии для самого Центра уведомлений или других уведомлений. Там также нет интерфейса Applescript.

Таким образом, на данный момент вы ограничены ручным тестированием, проходит ли уведомление, как предложил InfluenceJamie , или надеетесь, что кто-то выяснит частные API Apple и создаст интерфейс командной строки.

robmathers
источник
В MacOS все предпочтения хранятся в некоторых plist-файлах, поэтому для выполнения того, что я ищу, должны быть какие-то «прочитанные по умолчанию».
user732274
1
Конечно, это возможно, но значения по умолчанию больше для постоянных предпочтений - временные настройки могут не сохраняться в значениях по умолчанию. Однако это, вероятно, ваш лучший выбор, если предложение InfluenceJamie не работает для вас.
robmathers
Где это должно храниться, если не в листе?
user732274
1

Настройки Центра уведомлений хранятся в ~/Library/Preferences/ByHostпапке, что означает, что это специфичные для машины настройки.

Вы можете использовать defaults -currentHostкоманду для чтения настроек внутри. -currentHostиспользуется для указания ByHostпараметра, а не обычного пользовательского параметра, который хранится в ~/Library/Preferences.

defaults -currentHost read com.apple.notificationcenterui doNotDisturb

Выходное значение 1означает, что он активирован, 0для отключен.

Фактически, вышеупомянутая команда читает параметры из ~/Library/Preferences/ByHost/com.apple.notificationcenterui.<your-UUID>.plistфайла.

Предостережения : установка ByHostпараметров с помощью defaults -currentHost writeне работает. Опции действительно записываются в файл, но не перезагружаются соответствующим демоном. Я думаю, это ошибка.

Ссылки

Simba
источник