Notificación de eventos con pynotify

Python

A falta de una documentación de pynotify, explicaré en esta receta cómo usar el binding de python para libnotify, para poder crear notificaciones de eventos en tus aplicaciones.

Ingredientes

    python-notify

Notificando

Lo primero, obviamente es importar el paquete pynotify, y luego hay que inicializar la librería. Por alguna razón, este método recibe un argumento de entrada, tipo string, aunque no sé para qué sirve.

Para notificar algo, debemos crear un objeto de tipo Notification. El constructor admite 4 parámetros:

  1. summary: El título de la notificación (obligatorio)
  2. message: El cuerpo del mensaje, por si hay que dar más datos
  3. icon: Un iconcillo, para hacerla más amena. Se pasa como un string, indicando el nombre de cualquiera de los iconos de stock (gtk-info, gtk-cancel, back...)
  4. attach: Éste todavía lo estoy investigando

Para mostrar nuestra notificación, invocamos el método .show(). Veamos todo esto en un ejemplo:

import pynotify
pynotify.init("Mi aplicacion")
nota = pynotify.Notification("¡Enhorabuena!", message="Esta notificación se ha mostrado con éxito", icon="emblem-debian")
nota.show()

Opciones

Las notificaciones se pueden configurar un poco, para adaptarlas al contexto, con algunas opciones y métodos:

  • nota.set_timeout(milisegundos) - Permite cambiar el tiempo que la nota permanecerá visible
  • nosa.set_urgency(nivel) - Permite cambiar el nivel de aviso de la notificación. nivel debe ser uno de los siguientes valores:
    • pynotify.URGENCY_CRITICAL
    • pynotify.URGENCY_NORMAL
    • pynotify.URGENCY_LOW

    También se pueden definir niveles de urgencia personalizados, heredando de la clase pynotify.Urgency

  • nota.set_icon_from_pixbuf(fichero) - Por si quieres que tu nota tenga un icono que tienes en un fichero.

Hay más, pero todavía no las he destripado.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de david.villa

El API de notificaciones ha

El API de notificaciones ha cambiado últimamente. La forma «correcta» de usarlo desde Python ahora es con GI (Gobject Introspection) ya que desde gtk3 todo lo que tiene que ver con glib, gobject, gtk y gnome en general no tiene (no necesita) bindings para Python.

Ahora se usa más o menos así:

from gi.repository import Notify, GLib, GdkPixbuf
Notify.init("app")
 
notification = Notify.Notification.new(resumen, completo, None)
notification.set_icon_from_pixbuf(GdkPixbuf.Pixbuf.new_from_file("icon.svg"))
notification.set_hint("transient", GLib.Variant.new_boolean(True))
notification.set_urgency(urgency=Notify.Urgency.NORMAL)
notification.set_timeout(timeout)
notification.show()

Y ya no depende del paquete python-pynotify, sino de gir1.2-notify (hablo de Debian of course).

Saludos

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de int-0

Que chuli...

...y mira, si quieres un callback para añadir acciones a la notificación aquí te explican como añadirlo:

http://ubuntuforums.org/showthread.php?t=447613

Eye-wink

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------