viernes, 7 de diciembre de 2012

Irssi y libnotify

Si extrañas esas pequeñitas alertas que los clientes graficos IRC envian cuando alguien menciona tu nick, te envia y mensaje privado o te quiere transferir un archivo, irssi puede con ello.

La manera mas facil de obtener notificaciones de irssi en tu escritorio minimalista o entorno grafico, es utilizando el plugin irssi-libnotify el cual consiste de un "listener" en python que crea una instancia D-Bus para estar a la escucha de los eventos de irssi, y luego estos eventos son transmitidos al demonio de notifacion del sistema que finalmente nos muestra esa preciada ventanita emergente =)

La instalacion es bastante facil, primero que nada debemos clonar el repositorio para obtener la version mas reciente del proyecto (si no lo hacen de esta manera las ventanas de notificacion serán horribles porque utilizan gtk a secas y no son emergentes):
git clone https://code.google.com/p/irssi-libnotify/

irssi-linotify, como dije, consta de un "listener" en python y un plugin en perl (obvio) para irssi que envia los eventos del IRC al listener y este finalmente al sistema de notificaciones del SO.

Una vez tengamos la rama clonada tendremos que ubicar estos archivos en sus directorios respectivos. El listener notify-listener.py deberia estar en el directorio ~/bin de nuestro $HOME por razones de comodidad, asi que lo ubicamos en ese directorio o donde quieran (pero que recuerden). El archivo notify.pl lo ubicamos en el directorio de plugins de irssi ~/.irssi/plugins y lo linkeamos a ~/.irssi/scripts/autorun para que sea iniciado cada vez que ejecutemos irssi.

Para hacerlo desde la consola y ubicados dentro del directorio donde esta la rama, hacemos:
cp -v notify-listener.py ~/bin
cp -v notify.pl ~/.irssi/plugins/
ln -s ~/.irssi/plugins/notify.pl ~/.irssi/plugins/autorun/

Ahora debemos ejecutar los ultimos detalles para poder comenzar a utilizar este plugin:
  1. instalar la libreria con la que interactua Perl con D-Bus (sino, el plugin no funciona)
  2. ejecutar el listener
  3. cargar el plugin desde irssi
  4. ejecutar agregar el listener a los archivos de inicio del sistema

sudo apt-get install --no-install-recommends libnet-dbus-perl
python notify-listener.py &
#esto es desde irssi
/scrips load notify.pl
Con el ultimo paso, depende de nuestro WM/DE. Utilizo spectrwm asi que los archivos de inicio los cargo desde .xinit.

Una captura para ejemplificar ;)




notification-daemon no te funciona? Utiliza notify-osd

Desde la version 12.04 de Ubuntu notification-daemon esta roto para la mayoria de aplicaciones GTK2.

Hace unos dias me descargué Linux Mint Nadia (14) para una amiga, y casualmente la estuve testeando (increible distribucion, muy buena) antes de meterla en la USB y me dió la curiosidad de saber los paquetes que utilizaba para el sistema de notificacion, tomando en cuenta que esta basada en Ubuntu 12.10.

Haciendo un dpkg -l |grep notify obtuve lo que buscaba, y me dí cuenta que utiliza notify-osd junto con otros paquetes para hacer uso de las notificaciones.

En mi instalacion minimalista utilizo pidgin para IM, y debido a que notification-daemon esta roto para mi version de Ubuntu y no he encontrado solucion hasta este momento, no cuento con notificaciones emergentes. Instale los paquetes necesarios de Mint para hacer funcionar de alguna manera notify-osd, y lo he conseguido. Vamos a ello:

Instalamos todo el sitema de notificaciones (yo lo tenia parcialmente instalado):
sudo apt-get install --no-install-recommends notify-osd notify-osd-icons libnotify4 libnotify-bin pidgin-libnotify gir1.2-notify-0.7 python-notify vlc-plugin-notify
Y con eso he podido encontrar la felicidad =)

Ahora ya cuento con un sistema de notifiacion funcional y no pierdo ninguna de ellas ;)