Notification d'emails notify-mail
Je lisais quelque part qu'il était très simple de notifier un message à l'écran. Il suffit d'installer le paquet libnotify
et la commande notify-send
est disponible. Sa syntaxe est toute simple puisqu'il suffit d'écrire ...
notify-send "Mon titre" "Mon message" -i /elsewhere/monicone.png
Il ne m'en faut pas plus pour jouer un peu ...
... je me rappelle avoir écrit un script permettant de tester le nombre de mails contenu dans une mailbox (de type mailbox
). En reprenant ce script et en le modifiant un peu, j'obtiens un petite notification chaque fois que je reçois un nouveau message.
You have got a message
Voici le script
#!/usr/bin/perl -w # Biff mailboxe and notify # # Script for checking mailbox (mbox format) and notify result. # # Require: libnotify # # Usage: # notify-mail MBOX # MBOX : mbox file (/var/spool/user or anything else) # # Author: Pierre BETTENS, <pb@namok.be> # Thanks to Moshe Kaminsky <kaminsky@math.huji.ac.il>, # Version: 0.1 # Copyright: Use it ... # use strict ; # Import for lock file use Fcntl ':flock'; # Config my $usage = "Usage : notify-mail <mboxfile> " ; my $icon_file = "/elsewhere/email_icon.jpg"; my $mboxfile ; $mboxfile = shift or die $usage ; open MBOX_FILE, $mboxfile or die "Failed to open folder: $mboxfile" ; # Ok, I count mails # Thanks to Moshe Kaminsky <kaminsky@math.huji.ac.il>, # I stole him the idea of "Status: R". my $mails = 0 ; my $oldmails = 0 ; flock(MBOX_FILE,LOCK_EX); # lock while (<MBOX_FILE>) { $mails++ if /^From /o; $oldmails++ if /^Status: R/o; } flock(MBOX_FILE,LOCK_UN); # unlock close MBOX_FILE; # Work is done ... notify my $nmessages = $mails-$oldmails; if ( $nmessages > 0 ) { my $message = "You have got " . $nmessages . " message (in " . $mboxfile .")"; # I must add export DISPLAY because cron don't know my display :-( `export DISPLAY=:0.0 \n && notify-send "Notify mail" "$message" -i $icon_file`; }
J'apporte une petite précision. Je ne reçois une de notification dès que je reçois un mail mais je reçois une notification chaque fois que je décide de regarder si j'ai reçu un mail et ceci tant que le mail reste non lu ^^. Je dois donc ajouter mon script comme tache cron
(Qu'est-ce ?). J'ajoute donc ma tâche afin qu'elle s'exécute toutes les 2 minutes[1].
$ crontab -e */2 * * * * /home/pit/bin/notify-mail /var/spool/mail/pit
Et bam ! Mon script ne fonctionne plus. Une petite recherche plus tard et tout roule. Il faut spécifier à cron
quel display utiliser[2].
Enjoy ...
À lire également