C'è un modo per far leggere le notifiche a Ubuntu?


9

Ubuntu ha un sistema di notifica molto interessante. C'è un modo per fare in modo che Ubuntu legga le notifiche quando appaiono?

O è possibile collegare il testo nelle notifiche a espeak?


Questo bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 afferma che l'orca non lo ha fatto e ora lo fa di nuovo (?)
Rinzwind

1
orca legge tutto ed è molto fastidioso quello che sto cercando è un modo per leggere solo le notifiche comunque grazie per il supporto :)
Meow

Risposte:


17

Questa domanda è davvero interessante come la risposta.

dbus-monitorquando eseguito attende il segnale e quando arriva cattura e fornisce le informazioni appropriate su di esso. Allo stesso modo può essere eseguito per ottenere le informazioni sulle notifiche . Quando eseguito:

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

Aspetterà le notifiche e quando arriva una notifica fornisce le informazioni delle notifiche.

Ad esempio, quando l'audio viene aumentato / diminuito o viene modificata una traccia della canzone o qualsiasi altra, viene visualizzato il messaggio. Sto creando manualmente una notifica desktop usando il notify-send comando su qualsiasi altro terminale:

notify-send "Hello How are you?"

Quindi il primo terminale in cui dbus-monitorviene eseguito il comando fornirà un messaggio come:

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"

Ora l'output sopra può essere facilmente passato espeaka leggere il messaggio. Per esempio,

Sostituendo il dbus-monitorcomando precedente con quanto segue verrà visualizzato il messaggio di notifica:

Verifica, come funziona:

  • Esegui questo comando in un terminale e lascialo in esecuzione:

    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 {}
    

    So che è diventato molto lungo, ma non c'è altro modo per renderlo piccolo perché il filtraggio della notifica effettiva lo ha reso lungo.

  • Quindi esegui una notifica desktop nel modo che ho descritto sopra usando notify-sendo qualsiasi altra cosa. Sto usando notify-send. Quindi eseguendo il seguente comando in un altro terminale:

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

    Non appena si esegue il comando, pronuncerà (leggerà) la notifica.

Anche se ha mangiato le mie 4-5 ore, ma ora sono felice di farlo funzionare.

Puoi anche rendere il tuo comando similesaynoti ed eseguirlo ogni volta che vuoi una notifica di lettura. Seguendo questi passaggi puoi farlo:

  • Innanzitutto salvare il comando effettivo in un file chiamato saynoti. È possibile utilizzare qualsiasi nome di file che diventerà il nome effettivo del comando.

  • Quindi rendere eseguibile il file e spostarlo o copiarlo in /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Ora puoi semplicemente eseguire il tuo nuovo comando per avviare Speaking Notification :

    saynoti
    
  • Per interrompere il processo in esecuzione è possibile eseguire questo comando:

    pkill dbus-monitor
    

    o semplicemente premere Ctrl+ Csul terminale in cui saynotiè in esecuzione.

  • È inoltre possibile eseguire saynotiogni volta che si avvia il sistema rendendolo un'applicazione di avvio .

Vorrei ringraziarvi per questa domanda. Grazie a questa domanda, ho imparato molte cose. :)

Rispondi in caso di problemi o se hai bisogno di ulteriori cambiamenti / modifiche. Sono sicuro che sarai felice di ottenere la versione finale funzionante.


@Meow: sembra bello che tu sia soddisfatto del risultato. In futuro, se hai bisogno di modifiche, eseguimi un ping qui.
Saurav Kumar,

@Meow: controlla la versione finale funzionante. Ho risolto tutto il problema e funziona alla grande. Sarai felice di ottenere questa versione.
Saurav Kumar,

2
amico sei fantastico non posso chiedere altro; l'ho inserito nella mia lista di avvio e funziona perfettamente merci beaucoup
Meow

da dove hai imparato dbus-monitor, voglio iniziare a imparare
Edward Torvalds,

@edwardtorvalds: puoi impararlo dal suo sito ufficiale su Dbus e Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar

0

Ho avuto troubble con extra "nei miei indirizzi e-mail, quindi ho aggiunto questo alla riga di codice sopra come espeak non ha bisogno di" affatto leggere;)

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

=>

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

Lavoro FRESCO. Meglio che modificare la stessa notifica-send lib 4 "Ciao! Sono Saurav Kumar."

aggiornamento: non funziona in modo costante. Userò | tee -a $ file |

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.