cff2554231
If -a is passed along with "$@", mailsync will sync all mailboxes even if only a single channel is passed in with "$@". This breaks the semantics of the `o` macro in mutt which should only sync the current mailbox that is currently being viewed in mutt.
41 lines
1.5 KiB
Bash
Executable File
41 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
# Sync mail and give notification if there is new mail.
|
|
|
|
# Checks for internet connection and set notification script.
|
|
ping -q -c 1 1.1.1.1 > /dev/null || exit
|
|
command -v notify-send >/dev/null || echo "Note that \`libnotify\` or \`libnotify-send\` should be installed for pop-up mail notifications with this script."
|
|
|
|
export DISPLAY=:0.0
|
|
|
|
# Settings are different for MacOS (Darwin) systems.
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;}
|
|
else
|
|
notify() { notify-send "mutt-wizard" "📬 $2 new mail(s) in \`$1\` account." ;}
|
|
fi
|
|
|
|
echo " 🔃" > /tmp/imapsyncicon_$USER
|
|
pkill -RTMIN+12 i3blocks
|
|
|
|
# Run mbsync. You can feed this script different settings.
|
|
if [ $# -eq 0 ]; then
|
|
mbsync -a
|
|
else
|
|
mbsync "$@"
|
|
fi
|
|
|
|
rm -f /tmp/imapsyncicon_$USER
|
|
pkill -RTMIN+12 i3blocks
|
|
|
|
# Check all accounts/mailboxes for new mail. Notify if there is new content.
|
|
for account in "$HOME/.local/share/mail/"*
|
|
do
|
|
acc="$(echo "$account" | sed "s/.*\///")"
|
|
newcount=$(find "$HOME/.local/share/mail/$acc/INBOX/new/" "$HOME/.local/share/mail/$acc/Inbox/new/" "$HOME/.local/share/mail/$acc/inbox/new/" -type f -newer "$HOME/.config/mutt/.mailsynclastrun" 2> /dev/null | wc -l)
|
|
[ "$newcount" -gt "0" ] && notify "$acc" "$newcount" &
|
|
done
|
|
notmuch new 2>/dev/null
|
|
|
|
#Create a touch file that indicates the time of the last run of mailsync
|
|
touch "$HOME/.config/mutt/.mailsynclastrun"
|