Estoy intentando filtrar cada notificación a través de espeak. Sin embargo, parece que no puedo encontrar una manera de obtener el cuerpo de notificación de un script de Python, ni siquiera qué nombre_de_ señal escuchar.
bus.add_signal_receiver(espeak,
dbus_interface="org.freedesktop.Notifications",
signal_name="??")
Intentar buscar en Google esto solo parece arrojar resultados que implican la creación de nuevas notificaciones, así que ahora estoy completamente perdido.
Alguien me puede ayudar con esto?
En resumen, lo que quiero es escuchar las notificaciones entrantes usando python y obtener el atributo "cuerpo" de la notificación.
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
no muestra nada perodbus-monitor "interface='org.freedesktop.Notifications'"
muestra notificaciones (el tipo es 'method_call' no 'signal').Respuestas:
Para mantener esto actualizado: desde dbus 1.5 se requiere un parámetro adicional al agregar una cadena de coincidencia
bus.add_match_string_non_blocking
para asegurarse de que recibimos todo.El código resultante sería el siguiente:
fuente
unable to connect to session bus: Operation was cancelled
. Estamos pasandobus
al filtro.from gi.repository import GLib as glib
hacer que esto funcionara.Por notificaciones, se refiere a las "burbujas de OSD" que envía algún software, como cambiar el volumen, chat de mensajería instantánea, etc. ¿Quieres crear un programa de Python para capturarlos?
Bueno, Ask Ubuntu no es el control de calidad de un programador, y el desarrollo de software está un poco más allá del alcance, pero aquí hay un pequeño código que capturé burbujas de notificación:
Deje esto ejecutándose en una terminal, luego abra otra ventana de terminal y pruébelo:
Y el programa generará esto:
Como habrás adivinado,
message.get_args_list()[0]
es el remitente, [2] para el icono, [3] para el resumen y [4] para el texto del cuerpo.Para conocer el significado de los otros campos, consulte los documentos de especificaciones oficiales
fuente
Tuve problemas para lograr que alguno de los otros ejemplos funcionara, pero al final llegué allí. Aquí hay un ejemplo de trabajo:
Si desea ver un ejemplo de trabajo más detallado, le recomiendo que consulte Notificaciones.py en el proyecto de notificaciones recientes .
fuente