From 72d61b90c39c5776f0098cfbda6d3615d235dfa0 Mon Sep 17 00:00:00 2001 From: appeasementPolitik <108810900+appeasementPolitik@users.noreply.github.com> Date: Sat, 9 Dec 2023 08:52:59 +0000 Subject: [PATCH] Add capability to obscure notifications for specific sender addresses --- bin/mailsync | 18 ++++++++++++++++-- bin/mw | 6 ++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bin/mailsync b/bin/mailsync index cbd36ff..fe42255 100755 --- a/bin/mailsync +++ b/bin/mailsync @@ -30,6 +30,7 @@ export GPG_TTY="$(tty)" [ -n "$MPOPRC" ] || MPOPRC="$HOME/.config/mpop/config" lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun" +hidelist="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/hidelist" # Settings are different for MacOS (Darwin) systems. case "$(uname)" in @@ -75,8 +76,21 @@ syncandnotify() { perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')" from="$(sed -n "/^From:/ s|From: *|| p" "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')" - from="${from% *}" ; from="${from%\"}" ; from="${from#\"}" - notify "📧$from:" "$subject" + + fromaddr="${from#*<}" fromaddr="${fromaddr%*>}" + + # Hide email notifications for sender address patterns in hidelist file + while IFS= read -r pattern; do + echo "$fromaddr" | grep -q "^$pattern$" && break + done <<-EOT + $(sed 's/#.*//' "$hidelist") + EOT + + [ "$?" = 0 ] && notify "New Mail!" "📬 1 new mail in \`$2\` account." || + { fromperson="${from% *}" + fromperson="${fromperson%\"}" + fromperson="${fromperson#\"}"; + notify "📧$fromperson:" "$subject"; } done ;; *) echo "No new mail for $2." ;; diff --git a/bin/mw b/bin/mw index cdb7856..276d996 100755 --- a/bin/mw +++ b/bin/mw @@ -7,6 +7,7 @@ maildir="${XDG_DATA_HOME:-$HOME/.local/share}/mail" muttshare="$prefix/share/mutt-wizard" cachedir="${XDG_CACHE_HOME:-$HOME/.cache}/mutt-wizard" muttrc="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc" +hidelist="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/hidelist" accdir="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/accounts" msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config" msmtplog="${XDG_STATE_HOME:-$HOME/.local/state}/msmtp/msmtp.log" @@ -87,6 +88,10 @@ prepmutt() { echo "macro index,pager i$idnum 'source $accdir/$fulladdr.muttrc!;' \"switch to $fulladdr\"" >>"$muttrc" } +prephidelist() { + [ ! -f "$hidelist" ] && echo "# For all sender email address patterns in this file, the sender and the message will not be shown in notifications.\n#\n# Example entries:\n#\n# test@example.com\n# .*@example.com\n# test@.*\.com" >"$hidelist" +} + getprofiles() { safename="$(echo $fulladdr | sed 's/@/_/g')" case "$type" in @@ -106,6 +111,7 @@ getprofiles() { prepmsmtp prepmutt prepnotmuch + prephidelist } parsedomains() {