¿Hay alguna manera de hacer que Ubuntu lea las notificaciones?


9

Ubuntu tiene un sistema de notificación muy bueno. ¿Hay alguna manera de hacer que Ubuntu lea las notificaciones cuando aparecen?

¿O es posible vincular el texto en las notificaciones espeak?


Este bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 dice que orca no lo hizo y ahora lo hace de nuevo (?)
Rinzwind

1
orca lee todo y es muy molesto lo que estoy buscando es una forma de leer solo las notificaciones de todos modos gracias por el apoyo :)
Miau

Respuestas:


17

Esta pregunta es realmente interesante, así como la respuesta.

dbus-monitorcuando se ejecuta, espera la señal y, cuando llega, la capta y le brinda la información adecuada. Del mismo modo, se puede ejecutar para obtener la información sobre notificaciones . Cuando se ejecuta:

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

Esperará las notificaciones y cuando llegue cualquier notificación, le dará la información de las notificaciones.

Por ejemplo, cuando se aumenta / disminuye el sonido o se cambia cualquier pista de canción o cualquier otra, da el mensaje. Estoy creando manualmente una notificación de escritorio usando el notify-send comando en cualquier otro terminal:

notify-send "Hello How are you?"

Luego, la primera terminal en la que dbus-monitorse ejecuta el comando dará un mensaje 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"

Ahora la salida anterior se puede pasar fácilmente espeaka leer el mensaje. Por ejemplo,

Reemplazando el dbus-monitorcomando anterior con el siguiente se leerá el mensaje de notificación:

Comprueba, ¿Cómo funciona?

  • Ejecute este comando en una terminal y déjelo en ejecución:

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

    Sé que se ha vuelto muy largo, pero no hay otra manera de hacerlo pequeño porque el filtrado de la notificación real lo hizo largo.

  • Luego ejecute una notificación de escritorio, ya sea como lo describí anteriormente, notify-sendo cualquier otra cosa. Estoy usando notify-send. Entonces ejecutando el siguiente comando en otra terminal:

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

    Tan pronto como ejecute el comando, dirá (leerá) la notificación.

Aunque me comí mis 4-5 horas, pero ahora estoy feliz de hacerlo funcionar.

También puede hacer que su propio comando le gustesaynoti y ejecutarlo cada vez que desee una notificación de lectura. Siguiendo estos pasos puede hacerlo:

  • Primero guarde el comando real en un archivo llamado saynoti. Puede usar cualquier nombre de archivo que se convertirá en su nombre de comando real.

  • Luego haga que el archivo sea ejecutable y muévalo o cópielo a /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Ahora puede simplemente ejecutar su nuevo comando para iniciar la Notificación oral :

    saynoti
    
  • Para eliminar el proceso en ejecución, puede ejecutar este comando:

    pkill dbus-monitor
    

    o simplemente presione Ctrl+ Cen el terminal donde se saynotiestá ejecutando.

  • También puede ejecutar saynoticada vez que su sistema se inicia convirtiéndolo en una aplicación de inicio .

Me gustaría dar las gracias por esta pregunta. Debido a esta pregunta, aprendí muchas cosas. :)

Responda si tiene algún problema o necesita más cambios / modificaciones. Estoy seguro de que estará feliz de obtener la versión final de trabajo.


@Meow: Suena bien que estés satisfecho con el resultado. En el futuro, si necesita alguna modificación, solo envíeme un ping aquí.
Saurav Kumar el

@Meow: Verifique la versión final de trabajo. Resolví todo el problema y está funcionando muy bien. Estarás feliz de obtener esta versión.
Saurav Kumar el

2
amigo, eres increíble, no puedo preguntar nada más; Lo puse en mi lista de inicio y funciona perfectamente Merci beaucoup
Miau

de dónde aprendiste dbus-monitor, quiero comenzar a aprender
Edward Torvalds

@edwardtorvalds: Puede aprenderlo desde su sitio oficial sobre Dbus y Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar

0

Tuve problemas con el extra "en mis direcciones de correo electrónico, por lo tanto, he agregado esto a la línea de código anterior ya que espeak no necesita" en absoluto para leerlo;)

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

=>

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

COOL trabajo. Es mucho mejor que ajustar la biblioteca de notificación y envío 4 "¡Hola! Soy Saurav Kumar".

actualización: no funciona de manera constante. Voy a utilizar | tee -a $ archivo |

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.