Existe uma maneira de fazer o Ubuntu ler notificações?

9

O Ubuntu tem um sistema de notificação muito legal. Existe uma maneira de fazer o Ubuntu ler as notificações quando elas aparecerem?

Ou é possível vincular o texto nas notificações espeak?

Miau
fonte
Este bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 estados orca não fez e faz agora de novo (?)
Rinzwind
1
orca lê tudo e é muito chato o que estou procurando é uma maneira de ler apenas as notificações de qualquer forma obrigado pelo apoio :)
Meow

Respostas:

17

Esta pergunta é realmente interessante, assim como a resposta.

dbus-monitorquando executado, espera pelo sinal e, quando chega, captura e fornece as informações apropriadas sobre ele. Da mesma forma, pode ser executado para obter as informações sobre as Notificações . Quando executado:

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"

Ele aguardará as notificações e, quando qualquer notificação chegar, fornecerá as informações das notificações.

Por exemplo, quando o som é aumentado / diminuído ou qualquer faixa de música é alterada ou qualquer outra, a mensagem é exibida. Estou criando manualmente uma notificação na área de trabalho usando o notify-send comando em qualquer outro terminal:

notify-send "Hello How are you?"

Em seguida, o primeiro terminal no qual o dbus-monitorcomando está sendo executado dará uma mensagem como:

saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
   string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7    path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;  member=Notify
   string "notify-send"
   string ""
   string "Hello How Are You?"
   string ""
         string "urgency"

Agora, a saída acima pode ser facilmente passada para espeaka leitura da mensagem. Por exemplo,

Substituir o dbus-monitorcomando acima pelo seguinte lerá a mensagem de notificação:

Verifique como funciona:

  • Execute este comando em um terminal e deixe em execução:

    dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
    

    Sei que se tornou muito longo, mas não há outra maneira de reduzi-lo, porque a filtragem da notificação real a demorou.

  • Em seguida, execute uma notificação da área de trabalho da maneira que descrevi acima usando notify-sendou qualquer outra coisa. Estou usando notify-send. Então, executando o seguinte comando em outro terminal:

    notify-send "Hello! I am Saurav Kumar."
    

    Assim que você executa o comando, ele fala (lê) a notificação.

Embora tenha comido minhas 4-5 horas, mas estou feliz agora em fazê-lo funcionar.

Você também pode criar seu próprio comandosaynoti e executá-lo sempre que desejar uma notificação de leitura. Seguindo estas etapas, você pode fazer isso:

  • Primeiro salve o comando real em um arquivo chamado saynoti. Você pode usar qualquer nome de arquivo que se torne seu nome de comando real.

  • Em seguida, torne o arquivo executável e mova ou copie-o para /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Agora você pode simplesmente executar seu novo comando para iniciar o Speaking Notification :

    saynoti
    
  • Para matar o processo em execução, você pode executar este comando:

    pkill dbus-monitor
    

    ou simplesmente pressione Ctrl+ Cno terminal em que saynotiestá sendo executado.

  • Você também pode executar saynotitoda vez que o sistema iniciar, tornando-o um aplicativo de inicialização .

Gostaria de agradecer por esta pergunta. Por causa dessa pergunta, eu aprendi muitas coisas. :)

Responda se você tiver algum problema ou precisar de mais alterações / modificações. Tenho certeza que você ficará feliz em obter a versão final de trabalho.

Saurav Kumar
fonte
@ Meow: Parece bom que você esteja satisfeito com o resultado. No futuro, se você precisar de alguma modificação, basta fazer o ping aqui.
Saurav Kumar
@ Meow: Verifique a versão final de trabalho. Eu resolvi todo o problema e está funcionando muito bem. Você ficará feliz em obter esta versão.
Saurav Kumar
2
cara que você é demais não pode perguntar mais nada; Coloquei-o na minha lista de inicialização e ele funciona perfeitamente beaucoup merci
Meow
a partir de onde você aprendeu sobre dbus-monitor, eu quero começar a aprender
Edward Torvalds
@edwardtorvalds: Você pode aprender no site oficial sobre o Dbus e o Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar
0

Eu tive problemas com extra "nos meus endereços de e-mail, portanto, adicionei isso à linha de código acima, pois o speak não precisa" para ler;)

| sed 's / \ "// g' |

=>

| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' fale {}

FRESCO trabalho. Melhor do que ajustar a própria notificação-enviar lib 4 "Olá! Eu sou Saurav Kumar."

atualização: não funciona de forma constante. Vou usar | tee -um arquivo $ |

Jimmy
fonte