it-swarm-es.com

¿Cómo puedo personalizar la nueva notificación de correo en Alpine?

Uso alpino como mi lector de correo principal. Mientras paso la mayor parte del día en la terminal o en Emacs, todavía sería agradable obtener una bonita notificación de correo nuevo usando Notify-Bin. ¿Hay alguna forma en que pueda configurar Alpine para ejecutar un comando personalizado cuando se reciba un correo nuevo?

11
Steven D

Hay "Opción de configuración de Newmail FIFO PATH" en Alpine. Citando la Ayuda:

Puede tener alpine crear A FIFO File especial (también llamado tubo nombrado) donde enviará un mensaje de una línea cada vez que se reciba un mensaje nuevo en la carpeta actual, la bandeja de entrada o Cualquier carpeta de alojamiento abierto. Para protegerse contra dos alpinos diferentes, ambos escribiendo a la misma FIFO, Alpine solo creará la FIFO y escribirá si aún no existe.

Por lo tanto, configuré la opción '/tmp/alpine.fifo', y escribí una utilidad simple para leer los mensajes de la FIFO e invocar 'Notificar: enviar':

#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;
}

Guárdalo a Alpine-Notifier.c, y compile con el comando 'gcc alpine-notificier.c -o alpine-notificador'. Iniciar 'Alpine-Notifier' después de que se inicie Alpine. Disfruta de las notificaciones emergentes.

7
Linulin

Actualización :
No estaba satisfecho con mi respuesta anterior, así que mejoré el script mucho e hizo un GitHub Repo para ello.

Ahora, no tiene que iniciar el guión después de comenzar Alpine, el script se encargará de todo para usted. El núcleo del script es principalmente el mismo (solo mejoré analizando un poco):

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

El resto es un poco grande para publicar aquí, por lo que cualquiera que esté interesado puede obtenerlo en el repo .

4
Malabarba

¿No puedes usar una herramienta especializada de notificación por correo como Gnubiff, correo-notificación o Kbiff?

1
fschmitt

No es posible personalizar la "Notificación de correo nueva" de Alpine.

No hay tal opción mencionada en la Documentación de configuración .

También aquí hay un cotización de la lista de correo desde Eduardo Chappa:

Me he dado cuenta de que Alpine le da una alerta visual en la terminal de GNOME al parpadear la pantalla, cuando llega un nuevo correo. ¿Hay alguna manera de personalizar la alerta, para que, por ejemplo, juega un sonido o algo así?

[..]

Alpino, como puedes adivinar ahora, solo pitió. En Web Alpine, es posible enviar un archivo a reproducir (al navegador) para una nueva notificación de correo. No hay tal característica en Unix, Mac o Windows Alpine.

Tus opciones son ahora:

Y para citar al desarrollador de mi cliente de correo favorito:

Todos los mailclients chupan ...

:-)

1
echox