web-dev-qa-db-ja.com

アルパインで新着メールの通知をカスタマイズするにはどうすればよいですか?

私はメインのメールリーダーとしてAlpineを使用しています。私は一日のほとんどをターミナルやEmacsで過ごしていますが、notify-binを使用して新着メールのかなりの通知を受け取るのはいいことです。新しいメールを受信したときにカスタムコマンドを実行するようにAlpineを構成する方法はありますか?

11
Steven D

Alpineには「NewMail FIFO Path」構成オプションがあります。ヘルプの引用:

AlpineにFIFO特殊ファイル(名前付きパイプとも呼ばれます)を作成させて、現在のフォルダー、INBOX、またはで新しいメッセージを受信するたびに1行のメッセージを送信することができます。開いているStayopenフォルダ。2つの異なるAlpineが両方とも同じFIFOに書き込むのを防ぐために、AlpineはFIFOを作成し、まだ存在しない場合にのみ書き込みます。

そこで、オプションを「/tmp/Alpine.fifo」に設定し、FIFOからメッセージを読み取って「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;
}

それをAlpine-notifier.cに保存し、「gcc Alpine-notifier.c -oAlpine-notifier」コマンドでコンパイルします。アルパインが開始された後、「アルパイン通知」を開始します。ポップアップ通知をお楽しみください。

7
Linulin

更新
以前の回答に満足できなかったので、スクリプトを大幅に改善して、 github repo を作成しました。

これで、Alpineの起動後にスクリプトを起動する必要がなくなり、スクリプトがすべてを処理します。スクリプトのコアはほとんど同じです(私は少しだけ解析を改善しました):

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

残りの部分はここに投稿するのが少し大きいので、興味のある人は誰でも repo で入手できます。

4
Malabarba

Gnubiff、mail-notification、kbiffなどの専用のメール通知ツールを使用できませんか?

1
fschmitt

アルパインの「新着メール通知」をカスタマイズすることはできません。

構成ドキュメント に記載されているそのようなオプションはありません。

また、ここにEduardo Chappaのメーリングリストからの quote があります:

Alpineは、新着メールが到着すると、画面を点滅させることでgnomeターミナルで視覚的なアラートを出すことに気づきました。アラートをカスタマイズして、たとえば音などを再生する方法はありますか?

[..]

あなたが今推測できるように、アルパインはビープ音だけを鳴らします。 Web Alpineでは、新しいメール通知のために再生するファイルを(ブラウザーに)送信することができます。 Unix、Mac、WindowsAlpineにはそのような機能はありません。

あなたのオプションは今です:

そして、私のお気に入りのメールクライアントの開発者を引用すると:

すべてのメールクライアントは吸う...

:-)

1
echox