dotfiles/.config/mail/mail-indicator.sh

34 lines
917 B
Bash
Executable file

#!/bin/env bash
# mailboxes to monitor
MAILBOXES=("personal" "school")
# named pipe for receiving refresh events
# from mail sync script
PIPE="/tmp/email_refresh_pipe"
# Create pipe if doesn't exist
[[ -p "$PIPE" ]] || mkfifo "$PIPE"
# Get unread counts and format for waybar
get_unread_counts() {
for mailbox in "${MAILBOXES[@]}"; do
count=$(notmuch count --output=messages "tag:unread and path:$mailbox/**")
printf "%s: %s " "$mailbox" "$count"
done
# we print a newline to let waybar know to display
# what we just printed
printf "|\n"
}
# run once for initial output
get_unread_counts
# begin event loop
while true; do
# cat blocks until data comes through pipe
# redirecting to null b.c. we don't want the
# pipe's contents to be printed to stdout
cat /tmp/email_refresh_pipe > /dev/null
# print unread indicator to stdout
get_unread_counts
done