#!/bin/sh # i3blocks mail module. # Displays number of unread mail and an loading icon if updating. # When clicked, brings up `neomutt`. messageinfo() { notify-send --urgency=$urgency --app-name="📧 Mailbox" "📧 Mailbox:" "Acc: $to From: $from Subject: $subject Reseved in $mailfolder" ;} notify(){ new=$(find $HOME/.local/share/mail/*/*/new/ -type f 2> /dev/null) newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l) if [ "$newcount" -gt "0" ]; then find $HOME/.local/share/mail/*/*/new/ -type f 2> /dev/null | while read file; do # Extract subject and sender from mail. to=$(echo "$file" | sed -E "s/\/home\/jasper\/.local\/share\/mail\/(.+)\/.*\/.*\/.*$/\1/") mailfolder=$(echo $file | sed -E "s/\/home\/jasper\/.local\/share\/mail\/.*\/(.+)\/.*\/.*$/\1/") from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//') subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | head -n 1 | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n') case $mailfolder in Spam ) urgency="low" ;; Fritz-Box ) urgency="low" ;; Schule ) urgency="critical" ;; * ) urgency="normal" ;; esac case $to in jspahl11@gmail.com ) urgency="low" ;; * ) urgency=$urgency esac messageinfo & done fi } case $BLOCK_BUTTON in 1) setsid -f "$TERMINAL" -e neomutt & ;; 2) setsid -f mailsync >/dev/null & ;; 3) notify-send -t 1000 "📬 Mailbox module:" "\- Shows unread mail - Shows 🔃 if syncing mail - Left click opens neomutt - Middle click syncs mail" && notify >/dev/null ;; 6) "$TERMINAL" -e "$EDITOR" "$0"&;; esac unread="$(find ${XDG_DATA_HOME:-$HOME/.local/share}/mail/*/*/new/* -type f | wc -l 2>/dev/null)" icon="$(cat "/tmp/imapsyncicon_$USER")" 2>/dev/null [ "$unread" = "0" ] && [ "$icon" = "" ] || echo "📬 $unread$(cat "/tmp/imapsyncicon_$USER" 2>/dev/null)"