New mail notifications

This commit is contained in:
2026-10-08 13:21:32 +03:00
parent f079a39cbc
commit 0a3a1746cb
2 changed files with 20 additions and 3 deletions
+19 -2
View File
@@ -31,9 +31,26 @@
# only queries the card reader (no pinentry involved either way), so it's
# safe to use as a silent presence check: skip the sync entirely when the
# card isn't there, instead of letting mbsync hit that prompt.
#
# New mail is detected by counting files under every account's Maildir
# "new" subdirectory before and after the sync -- that's where messages
# the server hasn't marked seen land, across all three accounts at once,
# with no need to touch mu's index. A rise in that count means mail
# actually arrived, so only then does it post a desktop notification via
# notify-send -- intentionally separate from mu4e's own "mbsync -a" (its
# mu4e-get-mail-command), which doesn't go through this script at all.
mbsyncSafe = pkgs.writeShellScript "mbsync-safe" ''
if ${pkgs.gnupg}/bin/gpg --card-status >/dev/null 2>&1; then
exec ${pkgs.isync}/bin/mbsync -a
if ! ${pkgs.gnupg}/bin/gpg --card-status >/dev/null 2>&1; then
exit 0
fi
before=$(find "$HOME/Maildir" -path '*/new/*' -type f 2>/dev/null | wc -l)
${pkgs.isync}/bin/mbsync -a
after=$(find "$HOME/Maildir" -path '*/new/*' -type f 2>/dev/null | wc -l)
new=$((after - before))
if [ "$new" -gt 0 ]; then
label="new message"
[ "$new" -ne 1 ] && label="new messages"
${pkgs.libnotify}/bin/notify-send "Mail" "$new $label"
fi
'';
in {