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


9

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

Ответы:


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"

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


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

Предоставление этого ответа - не то же самое, что выбор правильного ответа. Если ответ помог вам, но не ответил на вопрос, вы можете дать ему ответ. если он ответил на ваш вопрос, нажмите на значок галочки слева.
— JMH

1

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

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


В 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не работает. Опции действительно записываются в файл, но не перезагружаются соответствующим демоном. Я думаю, это ошибка.

Ссылки

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.