#!/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