Como posso personalizar uma nova notificação por email em alpino?

11

Eu uso o alpine como meu principal leitor de e-mail. Enquanto passo a maior parte do dia no terminal ou no Emacs, ainda seria bom receber notificações bonitas de novos emails usando o notify-bin. Existe alguma maneira de configurar o alpine para executar um comando personalizado quando novos emails são recebidos?

Steven D
fonte

Respostas:

7

Existe a opção de configuração "Caminho FIFO do NewMail" em alpino. Citando a ajuda:

Você pode solicitar à Alpine que crie um arquivo especial FIFO (também chamado de pipe nomeado), onde ele enviará uma mensagem de uma linha cada vez que uma nova mensagem for recebida na pasta atual, na INBOX ou em qualquer pasta Stayopen aberta. Para proteger contra dois Alpines diferentes, ambos gravando no mesmo FIFO, o Alpine apenas criará o FIFO e gravará nele se ele ainda não existir.

Então, defino a opção como '/tmp/alpine.fifo' e escrevi um utilitário simples para ler mensagens do FIFO e invocar '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;
}

Salve-o em alpine-notifier.c e compile com o comando 'gcc alpine-notifier.c -o alpine-notifier'. Inicie 'alpine-notifier' depois que o alpine for iniciado. Desfrute de notificações pop-up.

Linulin
fonte
boa solução :-)
echox
Impressionante. Escrevi um pequeno script de shell para fazer essencialmente a mesma coisa.
Steven D
1
@steven: Eu votaria a favor se você fosse gentil o suficiente para compartilhá-lo. :-)
Malabarba
Deixa pra lá, acabei escrevendo um também.
Malabarba
4

Atualização :
eu não estava satisfeito com a minha resposta anterior, então aprimorei bastante o script e fiz um repositório no github .

Agora você não precisa iniciar o script depois de iniciar o alpine, o script cuidará de tudo para você. O núcleo do script é basicamente o mesmo (eu apenas melhorei a análise um pouco):

#! /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)

O restante é um pouco grande para postar aqui, então qualquer pessoa interessada pode obtê-lo no repositório .

Malabarba
fonte
1
Bruce, obrigado por compartilhar o script! Agora eu sei ler e processar mensagens do FIFO, mantendo-o aberto no shell. Não foi possível descobrir isso enquanto a criação de um notificador para mim :)
Linulin
@Linulin Cool. =) Infelizmente, os filtros que usei para configurar contente namesão um pouco problemáticos em alguns casos., O que é um pouco bobo, já que eles foram a razão pela qual eu postei a resposta. = P
Malabarba
É incrível ver o shell usado tão bem. Obrigado por publicá-lo no github. Bravo!
pintainhos
1

Você não pode usar uma ferramenta especializada de notificação por email como o Gnubiff, a notificação por email ou o kbiff?

fschmitt
fonte
Gostaria de usar a notificação por email para obter algo semelhante, no entanto, não consigo encontrar nenhuma documentação sobre como personalizar o comando new-mail da notificação por email.
Jonathan Neufeld
1

Não é possível personalizar a "nova notificação por e-mail" do alpine.

Não existe essa opção mencionada na documentação de configuração .

Também aqui está uma citação da lista de discussão de Eduardo Chappa:

Notei que o alpine emite um alerta visual no terminal gnome piscando a tela quando um novo e-mail chega. Existe alguma maneira de personalizar o alerta, para que, por exemplo, ele toque um som ou algo assim?

[..]

Alpine, como você pode adivinhar agora, apenas emitirá um sinal sonoro. No Web Alpine, é possível enviar um arquivo para ser reproduzido (para o navegador) para nova notificação por email. Não existe esse recurso no Unix, Mac ou Windows Alpine.

Suas opções são agora:

E para citar o desenvolvedor do meu cliente de email favorito:

Todos os clientes de correio são péssimos ...

:-)

echox
fonte