ฉันจะปรับแต่งการแจ้งเตือนจดหมายใหม่ในอัลไพน์ได้อย่างไร


11

ฉันใช้อัลไพน์เป็นผู้อ่านจดหมายหลักของฉัน ในขณะที่ฉันใช้เวลาเกือบทั้งวันในเทอร์มินัลหรือ Emacs มันคงจะดีถ้าได้รับการแจ้งเตือนเกี่ยวกับเมลใหม่โดยใช้ alert-bin มีวิธีใดบ้างที่ฉันสามารถกำหนดค่าอัลไพน์ให้เรียกใช้คำสั่งที่กำหนดเองเมื่อได้รับจดหมายใหม่

คำตอบ:


7

มีตัวเลือกการกำหนดค่า "เส้นทาง NewMail FIFO" ในอัลไพน์ การขอความช่วยเหลือ:

คุณอาจให้อัลไพน์สร้างไฟล์พิเศษ FIFO (เรียกว่าไพพ์ที่มีชื่อ) ซึ่งมันจะส่งข้อความหนึ่งบรรทัดทุกครั้งที่ได้รับข้อความใหม่ในโฟลเดอร์ปัจจุบัน INBOX หรือโฟลเดอร์ Stayopen ที่เปิดอยู่ เพื่อป้องกันอัลไพน์ที่แตกต่างกันสองแบบทั้งการเขียนไปที่ FIFO เดียวกันอัลไพน์จะสร้าง FIFO และเขียนลงไปหากยังไม่มีอยู่

ดังนั้นฉันจึงตั้งค่าตัวเลือกเป็น '/tmp/alpine.fifo' และเขียนโปรแกรมอรรถประโยชน์เพื่ออ่านข้อความจาก FIFO และเรียกใช้ 'แจ้งเตือนการส่ง':

#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 -o alpine-notifier' เริ่ม 'ตัวแจ้งเตือนอัลไพน์' หลังจากเริ่มต้นอัลไพน์ เพลิดเพลินกับการแจ้งเตือนแบบผุดขึ้น


วิธีแก้ปัญหาที่ดี :-)
echox

น่ากลัว ฉันเขียนเชลล์สคริปเล็ก ๆ เพื่อทำสิ่งเดียวกัน
Steven D

1
@ สตีเว่น: ฉันจะลงคะแนนให้ถ้าคุณใจดีพอที่จะแบ่งปัน :-)
Malabarba

ไม่เป็นไรฉันก็ลงเอยด้วยการเขียนเหมือนกัน
Malabarba

4

อัปเดต :
ฉันไม่พอใจกับคำตอบก่อนหน้าของฉันดังนั้นฉันจึงปรับปรุงสคริปต์เป็นจำนวนมากและสร้างrepo gitHubให้กับมัน

ตอนนี้คุณไม่ต้องเริ่มสคริปต์หลังจากเริ่มต้นอัลไพน์สคริปต์จะดูแลทุกอย่างให้คุณ แกนกลางของสคริปต์ส่วนใหญ่เหมือนกัน (ฉันปรับปรุงการแยกวิเคราะห์เพียงเล็กน้อย):

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

ส่วนที่เหลือของมันมีขนาดใหญ่เล็ก ๆ น้อย ๆ เพื่อโพสต์ที่นี่เพื่อให้ทุกคนที่สนใจก็สามารถได้รับมันที่ซื้อคืน


1
บรูซขอบคุณที่แบ่งปันสคริปต์! ตอนนี้ฉันรู้วิธีอ่านและประมวลผลข้อความจาก FIFO ในขณะที่เปิดไว้ในเชลล์ ไม่สามารถคิดออกในขณะที่การตั้งค่าการแจ้งสำหรับตัวเอง :)
Linulin

@ Linin Cool =) น่าเสียดายที่ตัวกรองที่ฉันใช้สำหรับการตั้งค่าcontentและnameมีบั๊กกี้เล็กน้อยในบางกรณีซึ่งค่อนข้างโง่เพราะมันเป็นเหตุผลที่ฉันโพสต์คำตอบเลย = P
Malabarba

มันยอดเยี่ยมมากที่เห็นว่าเชลล์ใช้งานได้ดี ขอบคุณที่โพสต์ไว้บน GitHub ไชโย!
ลูกไก่

1

คุณไม่สามารถใช้เครื่องมือแจ้งเตือนทางอีเมลแบบพิเศษเช่น Gnubiff, จดหมายแจ้งเตือนหรือ kbiff ได้หรือไม่?


ฉันต้องการใช้การแจ้งเตือนทางอีเมลเพื่อให้ได้สิ่งที่คล้ายกัน แต่ฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับวิธีปรับแต่งคำสั่งการแจ้งเตือนทางจดหมายใหม่ทางอีเมล
Jonathan Neufeld

1

ไม่สามารถปรับแต่ง "การแจ้งเตือนจดหมายใหม่" ของอัลไพน์

ไม่มีตัวเลือกดังกล่าวที่กล่าวถึงในที่มีเอกสารการกำหนดค่า

นี่คือข้อความที่ยกมาจากรายชื่อผู้รับจดหมายจาก Eduardo Chappa:

ฉันสังเกตว่าอัลไพน์ให้การแจ้งเตือนด้วยภาพในเทอร์มินอล Gnome โดยการกระพริบหน้าจอเมื่อมีจดหมายใหม่มา มีวิธีใดที่จะปรับแต่งการแจ้งเตือนเช่นนั้นมันเล่นเสียงหรืออะไรซักอย่าง?

[ .. ]

ตอนนี้คุณสามารถเดาได้ว่าอัลไพน์จะส่งเสียงบี๊บเท่านั้น ใน Web Alpine เป็นไปได้ที่จะส่งไฟล์ที่จะเล่น (ไปยังเบราว์เซอร์) สำหรับการแจ้งเตือนทางอีเมลใหม่ ไม่มีคุณสมบัติดังกล่าวใน Unix, Mac หรือ Windows Alpine

ตัวเลือกของคุณอยู่ในขณะนี้:

  • เขียนคำขอคุณสมบัติไปที่รายการส่งเมลอัลไพน์
  • รับแหล่งที่มาและเขียนโปรแกรมแก้ไข
  • ใช้เครื่องมือภายนอกเช่นMail Notification

และเพื่ออ้างถึงผู้พัฒนาโปรแกรมรับส่งเมลที่โปรดปรานของฉัน:

ลูกค้าทุกคนดูด ...

:-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.