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

11

Yo uso alpine como mi principal lector de correo. Si bien paso la mayor parte del día en la terminal o en Emacs, aún sería bueno recibir una notificación bonita de los nuevos correos mediante la notificación. ¿Hay alguna forma de configurar alpine para ejecutar un comando personalizado cuando se recibe un nuevo correo?

Steven D
fuente

Respuestas:

7

Existe la opción de configuración "NewMail FIFO Path" en alpine. Citando la ayuda:

Puede hacer que Alpine cree un archivo especial FIFO (también llamado canalización con nombre) donde enviará un mensaje de una línea cada vez que se reciba un nuevo mensaje en la carpeta actual, INBOX o cualquier carpeta Stayopen abierta. Para protegerse contra dos Alpines diferentes que escriben en el mismo FIFO, Alpine solo creará el FIFO y le escribirá si aún no existe.

Entonces, configuré la opción en '/tmp/alpine.fifo', y escribí una utilidad simple para leer mensajes del 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árdelo en alpine-notifier.c y compílelo con el comando 'gcc alpine-notifier.c -o alpine-notifier'. Inicie 'alpine-notifier' después de que se inicie alpine. Disfruta de notificaciones emergentes.

Linulina
fuente
buena solución :-)
echox
Increíble. Escribí un pequeño script de shell para hacer esencialmente lo mismo.
Steven D
1
@steven: Votaría por ello si tuviera la amabilidad de compartirlo. :-)
Malabarba
No importa, terminé escribiendo uno también.
Malabarba
4

Actualización :
no estaba satisfecho con mi respuesta anterior, así que mejoré mucho el script e hice un repositorio Github para él.

Ahora no tiene que iniciar el script después de comenzar alpine, el script se encargará de todo por usted. El núcleo del script es casi el mismo (solo mejoré un poco el análisis):

#! /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 repositorio .

Malabarba
fuente
1
Bruce, gracias por compartir el guión. Ahora sé cómo leer y procesar mensajes de FIFO mientras lo mantengo abierto en shell. No pude resolverlo mientras configuraba un notificador para mí :)
Linulin
@Linulin Cool. =) Desafortunadamente, los filtros que utilicé para configurar contenty nameson un poco defectuosos en algunos casos, lo cual es un poco tonto ya que son la razón por la que publiqué la respuesta. = P
Malabarba
Es increíble ver que Shell se usa tan bien. Gracias por publicarlo en github. ¡Bravo!
chicas
1

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

fschmitt
fuente
Me gustaría usar la notificación por correo para lograr algo similar, sin embargo, no puedo encontrar ninguna documentación sobre cómo personalizar el comando de notificación por correo nuevo.
Jonathan Neufeld
1

No es posible personalizar la "notificación de correo nuevo" de alpine.

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

También aquí hay una cita de la lista de correo de Eduardo Chappa:

Me di cuenta de que alpine emite una alerta visual en la terminal de gnome al parpadear la pantalla, cuando llega un nuevo correo. ¿Hay alguna forma de personalizar la alerta para que, por ejemplo, reproduzca un sonido o algo así?

[..]

Alpine, como puedes adivinar ahora, solo emitirá un pitido. En Web Alpine es posible enviar un archivo para ser reproducido (al navegador) para una nueva notificación de correo. No existe tal característica en Unix, Mac o Windows Alpine.

Sus opciones son ahora:

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

Todos los clientes de correo apestan ...

:-)

echox
fuente