34 lines
917 B
Bash
Executable file
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
|