Esta pergunta é realmente interessante, assim como a resposta.
dbus-monitor
quando executado aguarda o sinal e quando chega ele pega e fornece as informações apropriadas sobre ele. Da mesma forma, pode ser executado para obter as informações sobre 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 mensagem é transmitida. Estou criando manualmente uma notificação na área de trabalho usando o comando notify-send
em qualquer outro terminal:
notify-send "Hello How are you?"
Em seguida, o primeiro terminal no qual o comando dbus-monitor
está sendo executado fornecerá a seguinte mensagem:
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
para ler a mensagem.
Por exemplo,
A substituição do comando dbus-monitor
acima por seguinte lerá a mensagem de notificação:
Verifique como funciona:
-
Execute este comando em um terminal e deixe-o 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 {}
Eu sei que se tornou muito longo, mas não há outra maneira de torná-lo pequeno, porque a filtragem da notificação real tornou demorado.
-
Em seguida, execute uma notificação na área de trabalho da maneira que descrevi acima usando
notify-send
ou qualquer outra coisa. Estou usandonotify-send
. Então, executando o seguinte comando no outro terminal:notify-send "Hello! I am Saurav Kumar."
Assim que você executar o comando, ele irá falar (ler) 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 comando como saynoti
e executá-lo sempre que quiser uma notificação de leitura. Ao seguir 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-o ou copie-o para
/bin
:chmod +x saynoti sudo cp saynoti /bin
-
Agora você pode simplesmente executar seu novo comando para iniciar Falar Notificação :
saynoti
-
Para matar o processo em execução, você pode executar este comando:
pkill dbus-monitor
ou simplesmente pressione Ctrl + C no terminal onde
saynoti
está sendo executado. -
Você também pode executar
saynoti
toda vez que seu sistema iniciar, tornando-o um aplicativo de inicialização .
Gostaria de agradecer por esta pergunta. Por causa dessa pergunta, aprendi muitas coisas. :)
Responda se você tiver algum problema ou precisar de mais alterações / modificações. Tenho certeza de que você ficará feliz em obter a versão final de trabalho.