wood_menu
Follow me on twitter

Notifications irssi distant grâce à libnotify

Voici une solution pour afficher des notifications locales lors de la réception de messages dans votre irssi distant (sans X forwarding)...

Ne souhaitant pas mettre en place une solution nécessitant l'installation de paquets relatifs à X sur mon serveur, je me suis tourné vers une solution utilisant un script perl intégré à irssi et d'un autre script sur le poste client qui se chargera d'afficher les notifications sur le bureau en les récupérant via SSH

Configuration coté serveur

use strict;
use Irssi;

sub priv_msg {
        my ($server,$msg,$nick,$address,$target) = @_;
        filewrite($nick." " .$msg );
}

sub hilight {
    my ($dest, $text, $stripped) = @_;
    if ($dest->{level} & MSGLEVEL_HILIGHT) {
        filewrite($dest->{target}. " " .$stripped );
    }
}

sub filewrite {
        my ($text) = @_;
        open(FILE,">>$ENV{HOME}/.irssi/notifications_log");
        print FILE $text . "\n";
        close (FILE);
}

Irssi::signal_add_last("message private", "priv_msg");
Irssi::signal_add_last("print text", "hilight");

Ce bout de code logguera vos messages privés dans le fichier ~/.irssi/notifications_log
C'est fini pour le serveur, passons à la suite.

Configuration côté client

Tout d'abord, commencez par installer le paquet libnotify-bin (en tout cas il s'appelle comme ca sous debian, il fournit le binaire notify-send) Copiez/collez le code ci-dessous dans un fichier que vous placerez dans votre repertoire de scripts persos favoris (~/bin dans mon cas)

#!/bin/sh
ssh user@host.tld tail -F -n1 ~/.irssi/notifications_log | while read heading message
do notify-send -i gtk-dialog-info -t 300000 -- "${heading}" "${message}"
done

Pensez à mettre votre login / adresse serveur à la place de "user@host.tld", le bit d'execution sur le script, puis rajoutez une ligne dans votre ~/.xinitrc pour qu'il soit lancé automatiquement lors de votre connexion.

No votes yet

Tags

Flickr Random images

IMAG0017

About the author

photoAlexandre DE DOMMELIN

Geneva - Switzerland