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
?
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
?
Risposte:
Questa domanda è davvero interessante come la risposta.
dbus-monitor
quando 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-monitor
viene 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 espeak
a leggere il messaggio. Per esempio,
Sostituendo il dbus-monitor
comando 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-send
o 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 saynoti
ogni 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.
dbus-monitor
, voglio iniziare a imparare
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 |