Comment puis-je personnaliser la nouvelle notification par courrier en alpin?

11

J'utilise alpine comme principal lecteur de courrier. Bien que je passe la majeure partie de ma journée dans le terminal ou Emacs, il serait toujours intéressant de recevoir une jolie notification de nouveau courrier à l'aide de notify-bin. Existe-t-il un moyen de configurer alpine pour exécuter une commande personnalisée lors de la réception de nouveaux messages?

Steven D
la source

Réponses:

7

Il y a l'option de configuration "NewMail FIFO Path" en alpin. Citant l'aide:

Vous pouvez demander à Alpine de créer un fichier spécial FIFO (également appelé canal nommé) où il enverra un message sur une ligne chaque fois qu'un nouveau message est reçu dans le dossier actuel, la BOÎTE DE RÉCEPTION ou tout autre dossier Stayopen ouvert. Pour se protéger contre deux Alpines différentes écrivant toutes deux sur le même FIFO, Alpine ne crée le FIFO et n'y écrit que s'il n'existe pas déjà.

J'ai donc défini l'option sur '/tmp/alpine.fifo', et j'ai écrit un utilitaire simple pour lire les messages du FIFO et invoquer 'notify-send':

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#define FIFO_NAME "/tmp/alpine.fifo"

int main(void)
{   
    char s[512];
    char cmd[512];
    int num;
    int fd = open(FIFO_NAME, O_RDONLY);
    do {
        if ((num = read(fd, s, 300)) == -1)
            perror("read");
        else {
            s[num] = '\0';
            sprintf(cmd, "notify-send -t 0 'New mail:' '%s'", s);
            system(cmd);
        }
    } while (num > 0);

    return 0;
}

Enregistrez-le dans alpine-notifier.c et compilez avec la commande 'gcc alpine-notifier.c -o alpine-notifier'. Démarrez 'alpine-notifier' après le démarrage d'alpine. Profitez de notifications contextuelles.

Linuline
la source
belle solution :-)
echox
Impressionnant. J'ai écrit un petit script shell pour faire essentiellement la même chose.
Steven D
1
@steven: Je voterais pour cela si vous avez la gentillesse de le partager. :-)
Malabarba
Peu importe, j'ai fini par en écrire un aussi.
Malabarba
4

Mise à jour :
je n'étais pas satisfait de ma réponse précédente, j'ai donc beaucoup amélioré le script et fait un dépôt github pour cela.

Maintenant, vous n'avez plus besoin de démarrer le script après avoir démarré alpin, le script s'occupera de tout pour vous. Le noyau du script est essentiellement le même (j'ai seulement amélioré l'analyse un peu):

#! /bin/bash
while read L; do
    n=$(($n + 1))  
    if [[ n -gt 3 ]]; then      
        name=`echo "$L"  | sed 's/  \+/\t/g;s/^\(+ \)\?\([^\t]*\)\t\([^\t]*\)[\t ].*/\2/'`
        subject=`echo "$L"  | sed 's/  \+/\t/g;s/^\([^\t]*\)\t\(Re: \?\)\?\([^\t]*\)[\t ].*/\3/'`
        box=`echo "$L"  | sed 's/  \+/\t/g;s/^\([^\t]*\)\t\([^\t]*\)[\t ]\([^\t]*\).*/\3/'`
        notify-send -t 10000 $iconcommand "Mail from $name" "$subject\n-\nIn your $box."
    fi
done < <(cat alpine.fifo)

Le reste est un peu volumineux à publier ici, donc toute personne intéressée peut simplement l'obtenir au repo .

Malabarba
la source
1
Bruce, merci d'avoir partagé le script! Maintenant, je sais lire et traiter les messages de FIFO tout en le gardant ouvert dans le shell. Impossible de le comprendre lors de la configuration d'un notificateur pour moi :)
Linulin
@Linulin Cool. =) Malheureusement, les filtres que j'ai utilisés pour la configuration contentet namesont un peu bogués dans certains cas., Ce qui est un peu idiot car c'est la raison pour laquelle j'ai posté la réponse. = P
Malabarba
C'est génial de voir le shell si bien utilisé. Merci de l'avoir posté sur github. Bravo!
poussins
1

Ne pouvez-vous pas utiliser un outil spécialisé de notification par courrier comme Gnubiff, notification par courrier ou kbiff?

fschmitt
la source
Je voudrais utiliser mail-notification pour obtenir quelque chose de similaire, mais je ne trouve aucune documentation sur la façon de personnaliser la commande mail-notification new-mail.
Jonathan Neufeld
1

Il n'est pas possible de personnaliser la "notification de nouveau courrier" d'alpin.

Aucune option de ce type n'est mentionnée dans la documentation de configuration .

Voici également une citation de la liste de diffusion d'Eduardo Chappa:

J'ai remarqué que alpine donne une alerte visuelle dans le terminal gnome en faisant clignoter l'écran, lorsqu'un nouveau courrier arrive. Existe-t-il un moyen de personnaliser l'alerte, de sorte que, par exemple, elle émette un son ou quelque chose?

[..]

Alpine, comme vous pouvez le deviner maintenant, n'émettra qu'un bip. Dans Web Alpine, il est possible d'envoyer un fichier à lire (au navigateur) pour une nouvelle notification par e-mail. Il n'y a pas une telle fonctionnalité sous Unix, Mac ou Windows Alpine.

Vos options sont maintenant:

Et pour citer le développeur de mon client de messagerie favori:

Tous les clients de courrier sucent ...

:-)

écho
la source