Bagaimana cara menyesuaikan notifikasi email baru di alpine?

11

Saya menggunakan alpine sebagai pembaca email utama saya. Meskipun saya menghabiskan sebagian besar hari saya di terminal atau Emacs, akan tetap menyenangkan untuk mendapatkan pemberitahuan cantik tentang email baru menggunakan notify-bin. Apakah ada cara saya dapat mengkonfigurasi alpine untuk menjalankan perintah khusus ketika surat baru diterima?

Steven D
sumber

Jawaban:

7

Ada opsi konfigurasi "NewMail FIFO Path" di alpine. Mengutip bantuan:

Anda mungkin memiliki Alpine membuat file khusus FIFO (juga disebut pipa bernama) di mana ia akan mengirim pesan satu baris setiap kali pesan baru diterima di folder saat ini, INBOX, atau folder Stayopen terbuka. Untuk melindungi dari dua Alpines berbeda yang keduanya menulis ke FIFO yang sama, Alpine hanya akan membuat FIFO dan menulis padanya jika belum ada.

Jadi, saya mengatur opsi ke '/ tmp/alpine.fifo', dan menulis utilitas sederhana untuk membaca pesan dari FIFO dan memanggil '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;
}

Simpan ke alpine-notifier.c, dan kompilasi dengan perintah 'gcc alpine-notifier.c -o alpine-notifier'. Mulai 'alpine-notifier' setelah alpine dimulai. Nikmati notifikasi pop-up.

Linulin
sumber
solusi bagus :-)
echox
Luar biasa. Saya menulis skrip shell kecil untuk melakukan hal yang sama.
Steven D
1
@steven: Saya akan memilihnya jika Anda berbaik hati membagikannya. :-)
Malabarba
Bagaimanapun, saya akhirnya menulis satu juga.
Malabarba
4

Pembaruan :
Saya tidak puas dengan jawaban saya sebelumnya, jadi saya banyak memperbaiki skrip dan membuat repo github untuk itu.

Sekarang Anda tidak harus memulai skrip setelah memulai alpine, skrip akan mengurus semuanya untuk Anda. Inti dari skrip kebanyakan sama (saya hanya sedikit memperbaiki parsing):

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

Sisanya agak besar untuk dikirim di sini, jadi siapa pun yang tertarik bisa mendapatkannya di repo .

Malabarba
sumber
1
Bruce, terima kasih telah berbagi skripnya! Sekarang saya tahu cara membaca dan memproses pesan dari FIFO sambil menjaganya tetap terbuka. Tidak dapat mengetahuinya saat menyiapkan pemberitahuan untuk saya sendiri :)
Linulin
@Linulin Keren. =) Sayangnya filter yang saya gunakan untuk pengaturan contentdan namesedikit buggy dalam beberapa kasus., Yang agak konyol karena itulah alasan saya memposting jawabannya sama sekali. = P
Malabarba
Mengagumkan melihat shell digunakan dengan sangat baik. Terima kasih telah mempostingnya di github. Bravo!
anak ayam
1

Tidak bisakah Anda menggunakan alat pemberitahuan surat khusus seperti Gnubiff, pemberitahuan surat atau kbiff?

fschmitt
sumber
Saya ingin menggunakan pemberitahuan surat untuk mencapai sesuatu yang serupa, namun saya tidak dapat menemukan dokumentasi tentang bagaimana menyesuaikan perintah email pemberitahuan baru.
Jonathan Neufeld
1

Tidak mungkin untuk menyesuaikan "notifikasi surat baru" dari alpine.

Tidak ada opsi seperti yang disebutkan dalam dokumentasi konfigurasi .

Juga ada kutipan dari mailinglist dari Eduardo Chappa:

Saya perhatikan bahwa alpine memberikan peringatan visual di terminal gnome dengan mem-flash layar, ketika surat baru tiba. Apakah ada cara untuk menyesuaikan peringatan, sehingga, misalnya, ia memainkan suara atau sesuatu?

[..]

Alpine, seperti yang bisa Anda tebak sekarang, hanya akan berbunyi bip. Di Web Alpine dimungkinkan untuk mengirim file untuk diputar (ke browser) untuk pemberitahuan email baru. Tidak ada fitur seperti itu di Unix, Mac atau Windows Alpine.

Opsi Anda sekarang:

Dan mengutip pengembang klien email favorit saya:

Semua klien email menghisap ...

:-)

echox
sumber