|
|
@@ -31,13 +31,8 @@ export GPG_TTY="$(tty)" |
|
|
|
|
|
|
|
lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun" |
|
|
|
|
|
|
|
# Mute notifications or get kernel name. |
|
|
|
# Settings are different for MacOS (Darwin) systems. |
|
|
|
[ -z "$MAILSYNC_MUTE" ] && notify="$(uname)" || notify="mute" |
|
|
|
case "$notify" in |
|
|
|
mute) |
|
|
|
notify() { : ;} |
|
|
|
;; |
|
|
|
case "$(uname)" in |
|
|
|
Darwin) |
|
|
|
notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;} |
|
|
|
;; |
|
|
@@ -57,42 +52,45 @@ esac |
|
|
|
|
|
|
|
# Check account for new mail. Notify if there is new content. |
|
|
|
syncandnotify() { |
|
|
|
acc="$(echo "$account" | sed "s/.*\///")" |
|
|
|
if [ "$1" = "pop" ]; then |
|
|
|
# Handle POP |
|
|
|
mpop "$acc" |
|
|
|
else |
|
|
|
# Handle IMAP |
|
|
|
if [ -z "$opts" ]; then mbsync "$acc"; else mbsync "$opts" "$acc"; fi |
|
|
|
fi |
|
|
|
new=$(find\ |
|
|
|
"$HOME/.local/share/mail/$acc/"[Ii][Nn][Bb][Oo][Xx]/new/\ |
|
|
|
"$HOME/.local/share/mail/$acc/"[Ii][Nn][Bb][Oo][Xx]/cur/\ |
|
|
|
-type f -newer "$lastrun" 2> /dev/null) |
|
|
|
newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l) |
|
|
|
case 1 in |
|
|
|
$((newcount > 0)) ) notify "$acc" "$newcount" ;; |
|
|
|
esac |
|
|
|
acc="$(echo "$account" | sed "s/.*\///")" |
|
|
|
if [ "$1" = "pop" ]; then |
|
|
|
# Handle POP |
|
|
|
mpop "$acc" |
|
|
|
else |
|
|
|
# Handle IMAP |
|
|
|
if [ -z "$opts" ]; then mbsync "$acc"; else mbsync "$opts" "$acc"; fi |
|
|
|
fi |
|
|
|
new=$(find\ |
|
|
|
"$HOME/.local/share/mail/$acc/"[Ii][Nn][Bb][Oo][Xx]/new/ \ |
|
|
|
"$HOME/.local/share/mail/$acc/"[Ii][Nn][Bb][Oo][Xx]/cur/ \ |
|
|
|
-type f -newer "$lastrun" 2> /dev/null) |
|
|
|
newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l) |
|
|
|
[ -z "$MAILSYNC_MUTE" ] && case 1 in |
|
|
|
$((newcount > 0)) ) notify "$acc" "$newcount" ;; |
|
|
|
*) |
|
|
|
echo lololol |
|
|
|
;; |
|
|
|
esac |
|
|
|
} |
|
|
|
|
|
|
|
# Sync accounts passed as argument or all. |
|
|
|
if [ "$#" -gt "0" ]; then |
|
|
|
for arg in "$@"; do |
|
|
|
[ "${arg%${arg#?}}" = '-' ] && opts="${opts:+${opts} }${arg}" && shift 1 |
|
|
|
done |
|
|
|
accounts=$* |
|
|
|
for arg in "$@"; do |
|
|
|
[ "${arg%${arg#?}}" = '-' ] && opts="${opts:+${opts} }${arg}" && shift 1 |
|
|
|
done |
|
|
|
accounts=$* |
|
|
|
fi |
|
|
|
# TODO handle account passed from argument |
|
|
|
[ -z "$accounts" ] && accounts="$(awk '/^Channel/ {print $2}' "$MBSYNCRC")" |
|
|
|
[ -z "$pop_accounts" ] && pop_accounts="$(awk '/^account/ {print $2}' "$MPOPRC")" |
|
|
|
[ -z "$accounts" ] && accounts="$(awk '/^Channel/ {print $2}' "$MBSYNCRC" 2>/dev/null)" |
|
|
|
[ -z "$pop_accounts" ] && pop_accounts="$(awk '/^account/ {print $2}' "$MPOPRC" 2>/dev/null)" |
|
|
|
|
|
|
|
# Parallelize multiple accounts |
|
|
|
for account in $accounts; do |
|
|
|
syncandnotify "imap" & |
|
|
|
syncandnotify "imap" & |
|
|
|
done |
|
|
|
|
|
|
|
for account in $pop_accounts; do |
|
|
|
syncandnotify "pop" & |
|
|
|
syncandnotify "pop" & |
|
|
|
done |
|
|
|
|
|
|
|
wait |
|
|
|