Obtenir l'état du centre de notification OS X à partir de la ligne de commande

9

Sous OS X 10.8, les utilisateurs peuvent désactiver le Centre de notifications pour une seule journée. Existe-t-il un moyen de vérifier s'il est activé à partir de la ligne de commande?.

user732274
la source

Réponses:

8

Vous pouvez réellement savoir si la fonction Ne pas déranger est actuellement activée ou désactivée. Notification Center dépose une liste à l'emplacement suivant dont vous pouvez lire la valeur. Exécutez ce qui suit pour rechercher le fichier plist:

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

Maintenant, vous pouvez lire la valeur du plist que vous venez de trouver en utilisant:

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

REMARQUE: votre nom de fichier réel peut être différent de celui que j'ai indiqué ci-dessus.

Vous verrez une clé appelée "doNotDisturb" et elle aura une valeur de 1 ou 0 (activée ou désactivée)

Vous pouvez également changer son statut en faisant:

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

ou:

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

Pour que la modification prenne effet, vous devez redémarrer Notification Center en tapant:

killall NotificationCenter

J'ai en fait écrit un script Automator très simple, donc je peux maintenant activer / désactiver le Ne pas déranger pour Notification Center avec un raccourci clavier. Très utile. :)

Ali
la source
Malheureusement, l'activation / désactivation de cette fonction ne fonctionne pas sur El Capitan.
Zsolt Szatmari
Ne fonctionne pas non plus sur Yosemite
Gianfranco P.
Ça ne marchera pas. 1. cet UUID est spécifique pour vous. 2. killall NotificationCenterréinitialisera les paramètres par défaut mais ne rechargera pas les paramètres.
Simba
4

Pour obtenir le statut Ne pas déranger à Yosemite, entrez simplement les informations suivantes dans votre terminal:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.plist doNotDisturb
Horst
la source
1

La meilleure façon de penser est probablement d'installer le notificateur de terminal et de lui envoyer un message depuis le terminal.

Installer le notificateur de terminal

Le notificateur de terminal peut être installé via Ruby Gems

Type:

sudo gem install terminal-notifier

Envoyer un message à NC

Type:

terminal-notifier -message "Le centre de notification fonctionne" -title "NC Status"

Si le centre de notifications est en cours d'exécution, vous recevrez un message indiquant "Le centre de notifications est en cours d'exécution"

JamiePatt
la source
2
Ce qui précède a bien fonctionné pour moi, mais c'est une solution manuelle plutôt qu'une indication d'état programmatique, donc je ne lui donne pas +1 comme réponse à cette question. Il était cependant très utile à d'autres égards.
ClearCrescendo
Donner à ce vote positif ne revient pas à sélectionner la bonne réponse. Si la réponse vous a aidé mais n'a pas répondu à la question, vous pouvez lui donner un vote positif. s'il a répondu à votre question, cliquez sur l'icône de coche sur le côté gauche.
jmh
1

Pour le moment, les moyens d'interagir avec Notification Center par programme (y compris via la ligne de commande) sont assez limités. Comme l'a noté InfluenceJamie, il y a terminal-notifier , qui vous permet d' envoyer des notifications à partir de la ligne de commande, mais l'envoi de notifications est à peu près tout ce que les programmes peuvent faire pour le moment. D'après ma lecture de la documentation du développeur , les programmes peuvent uniquement envoyer et obtenir des informations sur les notifications spécifiques qu'ils envoient, aucune information d'état pour Notifcation Center lui-même ou d'autres notifications. Il n'y a pas non plus d'interface Applescript.

Donc, pour le moment, vous êtes limité à tester manuellement si une notification passe, comme l'a suggéré InfluenceJamie , ou à espérer que quelqu'un comprenne les API privées d'Apple et crée une interface de ligne de commande.

robmathers
la source
Dans MacOS, chaque préférence est stockée dans certains fichiers plist, donc il doit y avoir des trucs "lecture par défaut" pour faire ce que je recherche.
user732274
1
Eh bien, c'est une possibilité bien sûr, mais les valeurs par défaut sont plus pour les préférences permanentes - un paramètre temporaire peut ne pas être stocké dans les valeurs par défaut. Cependant, c'est probablement votre meilleur pari si la suggestion d'InfluenceJamie ne fonctionne pas pour vous.
robmathers
Où devrait-il être stocké sinon dans une liste?
user732274
1

Les paramètres du centre de notifications sont stockés dans le ~/Library/Preferences/ByHostdossier, ce qui signifie qu'il s'agit de paramètres spécifiques à la machine.

Vous pouvez utiliser la defaults -currentHostcommande pour lire les paramètres à l'intérieur. -currentHostest utilisé pour spécifier le ByHostparamètre non celui spécifique à l'utilisateur commun stocké dans ~/Library/Preferences.

defaults -currentHost read com.apple.notificationcenterui doNotDisturb

La valeur de sortie 1signifie qu'elle est activée, 0pour désactivée.

En fait, la commande ci-dessus lit les options du ~/Library/Preferences/ByHost/com.apple.notificationcenterui.<your-UUID>.plistfichier.

Mises en garde : la définition des ByHostoptions avec defaults -currentHost writene fonctionne pas. Les options sont en effet écrites dans le fichier, mais il n'est pas rechargé par le démon correspondant. Je suppose que c'est un bug.

Références

Simba
la source