Hacker News Digest

21 августа 2025 г. в 08:54 • feyor.sh • ⭐ 129 • 💬 22

OriginalHN

#python#emacs#mu4e#maildir#mbox#nethack#roguelike

My other email client is a daemon

NetHack при сборке с -DMAIL и OPTIONS=mail может уведомлять о новой почте: демон приносит свиток, при чтении запускается MAILREADER.
Я играю в Emacs-версию и не хочу выходить из неё, поэтому настроил связку mu4e ↔ NetHack.

mu хранит письма в maildir, а NetHack ждёт mbox. Проверяем, появились ли письма за последние 5 минут, и «трогаем» файл /tmp/nh.mbox:

import mailbox, pathlib, os
from datetime import datetime, timedelta

MAILDIR = os.path.expanduser("~/Mail/personal/INBOX")
MBOX = "/tmp/nh.mbox"

maildir = mailbox.Maildir(MAILDIR)
for msg in maildir:
    if datetime.fromtimestamp(msg.get_date()) > datetime.now() - timedelta(minutes=5):
        pathlib.Path(MBOX).touch()
        break
maildir.close()

Читаем почту через mu4e:

emacsclient -n --eval "(progn (require 'mu4e) (mu4e-context-switch nil \"Personal\") (mu4e-search-bookmark \"maildir:/personal/INBOX AND flag:unread\"))"

emacsclient запускает уже работающий Emacs, избегая блокировки базы mu.