Làm cách nào tôi có thể tùy chỉnh thông báo thư mới trong alpine?


11

Tôi sử dụng alpine làm trình đọc thư chính của mình. Mặc dù tôi dành phần lớn thời gian của mình trong thiết bị đầu cuối hoặc Emacs, nhưng vẫn rất tuyệt khi nhận được thông báo đẹp về thư mới bằng cách sử dụng thông báo-bin. Có cách nào để tôi có thể cấu hình alpine để chạy lệnh tùy chỉnh khi nhận được thư mới không?

Câu trả lời:


7

Có tùy chọn cấu hình "NewMail FIFO Path" trong alpine. Trích dẫn sự giúp đỡ:

Bạn có thể yêu cầu Alpine tạo một tệp đặc biệt FIFO (còn được gọi là ống có tên), nơi nó sẽ gửi tin nhắn một dòng mỗi khi nhận được tin nhắn mới trong thư mục hiện tại, INBOX hoặc bất kỳ Thư mục lưu trữ mở nào. Để bảo vệ chống lại hai Alpines khác nhau được viết cho cùng một FIFO, Alpine sẽ chỉ tạo ra FIFO và viết cho nó nếu nó không tồn tại.

Vì vậy, tôi đã đặt tùy chọn thành '/tmp/alpine.fifo' và viết tiện ích đơn giản để đọc tin nhắn từ FIFO và gọi '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;
}

Lưu nó vào alpine-notifier.c và biên dịch bằng lệnh 'gcc alpine-notifier.c -o alpine-notifier'. Bắt đầu 'thông báo alpine' sau khi alpine được bắt đầu. Tận hưởng thông báo bật lên.


giải pháp hay :-)
echox

Tuyệt vời. Tôi đã viết một kịch bản shell nhỏ để thực hiện điều tương tự.
Steven D

1
@steven: Tôi sẽ bình chọn cho nó nếu bạn đủ tử tế để chia sẻ nó. :-)
Malabarba

Nevermind, cuối cùng tôi cũng viết một cái.
Malabarba

4

Cập nhật :
Tôi không hài lòng với câu trả lời trước của mình, vì vậy tôi đã cải thiện kịch bản rất nhiều và tạo một repo github cho nó.

Bây giờ bạn không phải bắt đầu tập lệnh sau khi bắt đầu alpine, tập lệnh sẽ lo mọi thứ cho bạn. Cốt lõi của kịch bản hầu hết giống nhau (tôi chỉ cải thiện phân tích cú pháp một chút):

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

Phần còn lại của nó là một chút lớn để đăng ở đây, vì vậy bất cứ ai quan tâm chỉ có thể nhận được nó tại repo .


1
Bruce, cảm ơn vì đã chia sẻ kịch bản! Bây giờ tôi biết làm thế nào để đọc và xử lý tin nhắn từ FIFO trong khi giữ cho nó mở trong vỏ. Không thể tìm ra nó trong khi thiết lập trình thông báo cho chính mình :)
Linulin

@Linulin Mát mẻ. =) Thật không may, các bộ lọc tôi đã sử dụng để cài đặt contentnamecó một chút lỗi trong một số trường hợp. Điều này hơi ngớ ngẩn vì chúng là lý do tôi đăng câu trả lời. = P
Malabarba

Thật tuyệt vời khi thấy vỏ được sử dụng rất tốt. Cảm ơn đã đăng nó trên github. Bravo!
gà con

1

Bạn không thể sử dụng một công cụ thông báo thư chuyên dụng như Gnubiff, thông báo thư hoặc kbiff?


Tôi muốn sử dụng thông báo thư để đạt được một cái gì đó tương tự, tuy nhiên tôi không thể tìm thấy bất kỳ tài liệu nào về cách tùy chỉnh lệnh thông báo thư mới.
Jonathan Neufeld

1

Không thể tùy chỉnh "thông báo thư mới" của alpine.

Không có tùy chọn như vậy được đề cập trong tài liệu cấu hình .

Ngoài ra, đây là một trích dẫn từ danh sách gửi thư từ Eduardo Chappa:

Tôi đã nhận thấy rằng alpine đưa ra một cảnh báo trực quan trong thiết bị đầu cuối gnome bằng cách nhấp nháy màn hình, khi có thư mới. Có cách nào để tùy chỉnh cảnh báo, ví dụ như, nó phát âm thanh hay cái gì đó không?

[..]

Alps, như bạn có thể đoán bây giờ, sẽ chỉ có tiếng bíp. Trong Web Alpine có thể gửi một tệp được phát (tới trình duyệt) để thông báo thư mới. Không có tính năng như vậy trong Unix, Mac hoặc Windows Alpine.

Lựa chọn của bạn là ngay bây giờ:

Và để trích dẫn nhà phát triển của ứng dụng thư yêu thích của tôi:

Tất cả các thư tín hút ...

:-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.