Categories
programación

Script en python para mostrar alertas en un icono de la barra de tareas

Es increíble la cantidad de posibilidades que ofrece python. Aquí pongo un ejemplo de lo necesario para crear algo así:

python alerta.py “Name popup” “<span weight=\"bold\">Bold</span>: contents"

notificacion

Código fuente:

#!/usr/bin/python
# notify-bubble: Alert bubble + systray icon notification system
#
# Author: John Dong <jdong@ubuntu.com>
# http://ubuntuforums.org/archive/index.php/t-887173.html
# Feel free to use/tweak/modify to your free will.

import gtk
import gobject
import pynotify

icon=None
notify=None

# Definición de la función que creará el icono
def create_icon(title, text=""):
 global icon  #Declara la variable "icon" como global
 pynotify.init("pynotify")  
 icon=gtk.status_icon_new_from_icon_name("important") # Crea un icono de estado a partir del tema actual
 icon.set_visible(False)  # Hace invisible el icono
 icon.connect('activate', quit)  # Asocia el evento 'activate' del icono a la funcion "quit"
 icon.set_tooltip("%s\n(%s)" % (title, text)) # Establece el popup del icono
 icon.set_visible(True)  # Hace el icono visible
 ui_idle()  # Invoca la función de espera de eventos (para que el icono permanezca)
 gobject.timeout_add (500, show_notification,(title, text, icon))  # Llama a la función de mostrar la notificación

def show_notification(data):
 global notify #Declara la variable "notify" como global
 (title, text, icon) = data  #Extrae los valores del parámetro
 notify = pynotify.Notification(title,text,"pynotify")  # Crea la notificacion
 notify.set_urgency(pynotify.URGENCY_NORMAL)  # Establece la urgencia de la notificación
 notify.attach_to_status_icon(icon)  # Asocia la notificacion con un icono de estado
 notify.set_timeout(20000)  # Duración de la notificación
 notify.show()  # Muestra la notificación

# Bucle de espera de eventos del icono
def ui_idle():
 while gtk.events_pending():
  gtk.main_iteration(False)

# Función de salida de la aplicación
def quit(data):
 gtk.main_quit()
 notify.close() # Cerrar también la notificación

# Aplicación principal
import sys

# Texto por defecto a mostrar (para cuando se invoca sin parámetros)
name="Name popup"
detail="<span weight=\"bold\">Bold</span>: content"
try:
  # Lectura de parámetros de la línea de comandos
 name=sys.argv[1]
 detail=sys.argv[2]
except IndexError:
 pass
#Crear el icono con la notificación
create_icon(name, detail)
print "Pynotify alert spawned. Clicking the alert tray icon will exit this script too..."
gtk.main() (bucle general de la aplicación

Para copiar el código usar el icono de arriba a la derecha (el de las dos flechas azules).

Fuente ubuntuforums