En estos días se ha vuelto un tema popular utilizar las notificaciones para algo mas que avisar cuando un correo llega o un contacto esta en linea. De hecho he encontrado muy útil este tipo de uso para recordatorios y varias tareas. Mostrare algunos ejemplos de como podemos sacar mas provecho de estas:
Conseguir sistema de notificaciones
Creo que es la parte mas obvia de este plan, para Arch Linux tenemos diferentes alternativas, si tenemos algún entorno de escritorio como nuestra interfaz (KDE, GNOME o XFCE) podremos escoger entre las herramientas propias:
GNOME = pacman -S libnotify notificacion-daemon
XFCE = pacman -S libnotify xfce4-notifyd
KDE = (Plasma cuenta con sus propio sistema de notificaciones)
Podemos optar por otras opciones, tales como notify-osd, statnot y colibri, opciones viables como reemplazos de las anteriores.
Notify-osd = yaourt -S notify-osd-customizable notifyconf #Escogí esta version ya que puede personalizarse
Statnot = yaourt -S statnot #Para WMs como dwm, wmii y otros parecidos.
Colibri = Recomiendo clonar el repositorio GIT y compilarlo por propia cuenta #Alternativa de notificaciones para Plasma Desktop.
Cualquiera de ellas debería brindar la posibilidad de ver notificaciones, para probar usamos el siguiente comando:
notify-send "Hola mundo"
Si pueden ver la notificación, proseguiremos al siguiente paso.
Notificación de comandos.
Desde hace un tiempo uso Openbox, así que para esta guía escogí notify-osd. Este truco es uno de los mas recientes y populares, permite mostrar notificaciones cuando termina un comando en la terminal, como descargar un archivo a través de wget, la actualización del sistema, en mi caso me sirvió para avisarme cuando se terminan las descargas con plowshare.
Esto lo agregamos a .bashrc o al archivo donde tengamos los alias para la linea de comando.
alias alert='notify-send -i gnome-terminal \
"[$?] $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/;\s*alert$//'\'')"'
Para probarlo, ejecutamos el sig. comando: sleep 6; alert Así nos avisara que ejecutamos sleep 6.
Resultados de un comando

Este es otra utilidad, mostrar los resultados de cualquier comando ejecutado en la terminal. Este lo podremos a través de un script:
#!/bin/bash
info=$(eval "$*" 2>/dev/null)
notify-send -t $((1000+300*`echo -n $info | wc -w`)) -u low -i gtk-dialog-info "$*" "$info" || exit 2
Lo guardamos con un nombre simple como send.sh o send. Después le damos permisos de ejecución y lo movemos en alguna dirección del $PATH (yo lo moví a /usr/local/bin). Para probar si funciona, ejecutemos un comando sencillo: send date si este nos da la notificación con la fecha, sabremos que funciona.
Notificaciones de MPD
De todos, fue el mas difícil de hacer de funcionar, no por que requiera mas trabajo, si no por la cantidad de scripts disponibles, y el cual solo quería que mostrara el nombre de la canción, artista y la caratula del álbum. De entre todos, solo uno pudo hacerlo, y se los muestro:
#! /usr/bin/env python
import mpd
import os
import time
import sys
import re
import pynotify
home = os.path.expanduser('~')
success = False
while success == False:
try:
client = mpd.MPDClient()
client.connect("localhost", 6600)
success = True
except:
time.sleep(5)
success = False
try:
last_song = client.currentsong()['file']
last_status = client.status()['state']
artist = client.currentsong()['artist']
album = client.currentsong()['album']
title = client.currentsong()['title']
if os.path.exists('%s/.covers/%s-%s.jpg'%(home,artist,album)):
os.popen('notify-send -i "%s/.covers/%s-%s.jpg" "%s" "%s"'%(home,artist,album,artist,title))
else:
os.popen('notify-send -i sonata "%s" "%s"'%(artist,title))
except:
pass
last_song = ""
last_status = ""
while True:
try:
currentsong = client.currentsong()['file']
status = client.status()['state']
except:
currentsong = ""
status = last_status
if last_status != status:
try:
if status == "play":
comment = "media-playback-start" + " MPD Playing"
elif status == "pause":
comment = "media-playback-pause" + " MPD Paused"
else:
comment = "media-playback-stop" + " MPD Stopped"
os.popen('notify-send -u critical -t 10 -i %s'%comment)
if status == "play":
for file_type in ('jpg','png','bmp','gif'):
if os.path.exists('%s/.covers/%s-%s.%s'%(home,artist,album,file_type)):
os.popen('notify-send -i "%s/.covers/%s-%s.%s" "%s" "%s"'%(home,artist,album,file_type,artist,title))
break
else:
os.popen('notify-send -i sonata "%s" "%s"'%(artist,title))
last_status = client.status()['state']
except:
pass
if last_song != currentsong:
try:
artist = client.currentsong()['artist']
album = client.currentsong()['album']
title = client.currentsong()['title']
if os.path.exists('%s/.covers/%s-%s.jpg'%(home,artist,album)):
os.popen('notify-send -i "%s/.covers/%s-%s.jpg" "%s" "%s"'%(home,artist,album,artist,title))
else:
os.popen('notify-send -i sonata "%s" "%s"'%(artist,title))
last_song = client.currentsong()['file']
except:
pass
time.sleep(1)
Lo guardamos como mpdnotify.py y le damos permisos para ejecutarse. Para usarlo python mpdnotify.py &
Como dije hay otros, pero este fue el que funciono.
Recordatorios

Quizá la tarea mas simple y primordial que pueden hacer estas notificaciones. Uno de los métodos puede ser este:
sleep 6s && notify-send -t 10000 -u critical "remember to think" &
Cambiando lo que esta entre comillas, con lo que queremos recordar. Otra manera, con sonido incluido es esta:
#!/bin/bash
msg=$(zenity --entry --title=$rem --text="Task to remind")
tim=$(zenity --entry --title=$rem --text="Time to wait")
rem="Reminder"
remind_icon="~/remind.png"
say_on_every="Ding Ding Ding, time is up."
espeak -a 200 -p 90 -s 155 -k10 -w ~/remind.wav "$say_on_every $msg"
notify-send -i $remind_icon $rem "Reminder set for $msg in $tim"
(sleep $tim && notify-send -i $remind_icon $rem "$msg" && aplay ~/remind.wav) &
Cambiando lo parametros de remind_icon y say_on_every al gusto de cada quien.
Este post ha sido mas de lo que esperaba, y solo son algunas cosas que se pueden hacer con estas notificaciones. ¿Ustedes tienen los propios? Opinen y compartan.
Adéu
Advertisement
Me gusta:
2 bloggers like this post.
añado otra alternativa minimalista: dzen
las notificaciones pintan mejor que las que trae ubuntu
Muy bueno el post! Me ha encantado. La verdad es que no estaba muy al día en esto de las notificaciones. De momento me quedo con Colibri.
Un saludo!
me gusto el post, quiero darla mas caña a esto, para ver si hago pequeños notificadores, como por ejemplo, conectar un memory stick al sistema.
¡Ay chiquito! esto me gusto. Algo así andaba buscando. Me vino de perlas. Gracias.
Bien, así es como lo hice desde Ubuntu:
a) Instale:
Desinstale después openbox, reinicie y seguía funcionando notify-send. Creo que no era necesaria, ya me dirás.
b) Use el enviar mensajes con la linea de comando alert y los script send y el que tiene sonido.
c) Guarde los scripts en: ~/.gnome2/nautilus-scripts
d) Agregue esa linea de comando y los script al ~/.bashrc como alias, solo así los podía llamar como tu dijiste.
Las lineas que agregue:
Solo comente lo de openbox, por que es el entorno que estoy usando, en teoría se puede en cualquier realizar en cualquier gestor de ventanas con notificaciones.
Buenas anotaciones al poner tu configuración
Ahora que estoy toqueteando scripts, me sirve para hacer algo bonito.
Pues que bueno que no necesite de openbox, tengo el disco tan lleno que no tienes idea.
Saludos
Joo… Yo hace poco (cosa de 1 mes) intenté con notify-osd -aunque no recuerdo que versión bajé del AUR-, y como no pude moverla de lugar (de arriba-derecha a abajo-derecha), la mandé far way y regresé al notification-daemon y no lo he intentado nuevamente. ¿La versión de n-osd que mencionas si se puede mover a la posición que se desee?
Tengo que probar esto, de todas formas. Gracias por el tip.
Interesante. Yo hace tiempo estuve también probando el tema de las notificaciones. Pero al final acabé desarrollando mi propio “loli-notificador”, que queda mucho más friqui y siempre deja a los amigos “impresionados” XD Aquí están los enlaces donde explico como se hace:
http://rodaimos.blogspot.com/2010/06/el-notificador-del-bot-1.html
http://rodaimos.blogspot.com/2010/06/el-notificador-del-bot-2.html
Revisaba tu proyecto y es interesante, solo 2 cosas, sera posible usar otro tipo de notificaciones y segundo me recuerda un poco a este http://packages.ubuntu.com/lucid/ninix-aya Te inspiraste o solo es mi imaginacion xD
Alguna vez había hecho lo propio con el libnotify en Ubuntu y la verdad resulta ser muy útil.
Excelente Post.
Pingback: [Tutorial] notify-osd en Archlinux « El blog de Iyan
Pingback: [Tutorial] notify-osd en Archlinux
Pingback: Thalskarth's Maëlstrom
Que onda oye gran post!!
magnifico solo de pura casualidad me podrías ayudar a hacer un script para hacer lo que hiciste con el MPD pero con el VLC?? estaría magnífico. Buen post!!
Pingback: Script para enviar notificaciones mediante notify-send « Travesuras
Interesante post. Por cierto, estoy viendo que las notificaciones del pidgin no están conectadas con el notification daemon, como en Ubuntu con el notify-osd. ¿Sabes que hay que hacer para que activar las notificaciones en Pidgin?. Saludos.
En AUR puedes encontrar un paquete http://aur.archlinux.org/packages.php?ID=24562 para modificar la librería de notificación de Pidgin.