Obter o estado do OS X Notification Center na linha de comando

9

No OS X 10.8, os usuários podem desativar o Notification Center por um único dia. Existe uma maneira de verificar se está ativado na linha de comando?

user732274
fonte

Respostas:

8

Você realmente pode descobrir se a opção Não perturbe está ativada ou desativada no momento. O Centro de Notificações descarta um plist no seguinte local do qual você pode ler o valor. Execute o seguinte para encontrar o arquivo plist:

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

Agora, você pode ler o valor do plist que acabou de encontrar usando:

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

NOTA: seu nome de arquivo real pode ser diferente do que eu listei acima.

Você verá uma chave chamada "doNotDisturb" e ela terá o valor 1 ou 0 (ativado ou desativado)

Você também pode alterar seu status fazendo:

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

Para que a alteração entre em vigor, você precisará reiniciar o Centro de Notificação digitando:

killall NotificationCenter

Na verdade, eu escrevi um script muito simples do Automator e agora posso ativar / desativar o Não perturbe para o Notification Center com um atalho de teclado. Muito conveniente. :)

Todos
fonte
Infelizmente, ativar / desativar isso não funciona no El Capitan.
Zsolt Szatmari
Também não funciona em Yosemite
Gianfranco P.
Isso não vai funcionar. 1. este UUID é específico para você. 2. killall NotificationCenterredefinirá as configurações para o padrão, mas não as recarregará.
Simba
4

Para obter o status Não perturbe em Yosemite, basta digitar o seguinte no seu terminal:

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

Provavelmente, a melhor maneira de pensar é instalar o notificador de terminal e enviar uma mensagem a partir do terminal.

Instalar o Notificador de Terminal

O notificador de terminal pode ser instalado através do Ruby Gems

Tipo:

sudo gem install terminal-notifier

Enviar uma mensagem para NC

Tipo:

terminal-notifier -message "O centro de notificações está executando" -title "NC Status"

Se o centro de notificações estiver em execução, você receberá uma mensagem dizendo "O centro de notificações está em execução"

JamiePatt
fonte
2
O exemplo acima funcionou bem para mim, mas é uma solução manual e não uma indicação de status programático, portanto, não estou dando um +1 como resposta a esta pergunta. No entanto, foi muito útil em outros aspectos.
ClearCrescendo
Dar um voto positivo não é o mesmo que selecionar a resposta como correta. Se a resposta o ajudou, mas não respondeu, você pode dar um voto positivo. se ele respondeu à sua pergunta, clique no ícone de marca de seleção no lado esquerdo.
jmh
1

No momento, as maneiras de interagir com o Centro de Notificação programaticamente (inclusive via linha de comando) são bastante limitadas. Como InfluenceJamie observou, existe o notificador de terminal , que permite enviar notificações a partir da linha de comando, mas enviar notificações é praticamente o que todos os programas podem fazer no momento. Pela minha leitura da documentação do desenvolvedor , os programas podem apenas enviar e obter informações sobre as notificações específicas que eles enviam, nenhuma informação de status para o próprio Centro de Notificação ou outras notificações. Também não há interface da Applescript.

Portanto, no momento, você está limitado a testar manualmente se uma notificação é aprovada, como sugeriu InfluenceJamie , ou na esperança de que alguém descubra as APIs privadas da Apple e faça uma interface de linha de comando.

robmathers
fonte
No MacOS, todas as preferências são armazenadas em alguns arquivos plist; portanto, deve haver alguns itens de "leitura padrão" para fazer o que estou procurando.
user732274
1
Bem, é uma possibilidade, é claro, mas os padrões são mais para preferências permanentes - uma configuração temporária pode não ser armazenada nos padrões. No entanto, essa é provavelmente a sua melhor aposta se a sugestão da InfluenceJamie não funcionar para você.
robmathers
Onde isso deve ser armazenado, se não em uma lista?
user732274
1

A configuração do centro de notificações é armazenada na ~/Library/Preferences/ByHostpasta, o que significa que são configurações específicas da máquina.

Você pode usar o defaults -currentHostcomando para ler as configurações. -currentHosté usado para especificar a ByHostconfiguração e não a específica do usuário comum armazenada ~/Library/Preferences.

defaults -currentHost read com.apple.notificationcenterui doNotDisturb

O valor de saída 1significa que está ativado, 0para desativado.

De fato, o comando acima está lendo as opções do ~/Library/Preferences/ByHost/com.apple.notificationcenterui.<your-UUID>.plistarquivo.

Advertências : Definir ByHostopções com defaults -currentHost writenão funciona. As opções são realmente gravadas no arquivo, mas não são recarregadas pelo daemon correspondente. Eu acho que isso é um bug.

Referências

Simba
fonte