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
?
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
?
Respostas:
Esta pergunta é realmente interessante, assim como a resposta.
dbus-monitor
quando 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-monitor
comando 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 espeak
a leitura da mensagem. Por exemplo,
Substituir o dbus-monitor
comando 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-send
ou 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 saynoti
está sendo executado.
Você também pode executar saynoti
toda 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.
dbus-monitor
, eu quero começar a aprender
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 $ |