This is not exactly an Emacs post, but some users of the mighty mu4e might find it useful. I don’t like big alerts to new emails that distract me from what I am doing, but I also don’t want to keep switching to my mu4e buffer to see if new emails have arrived. My solution is to have a small notification item in my Mac status bar to tell me how many emails I have.
It looks like this (the bit underlined in red):
The text @ 1/3/0/0
tells me that I have, respectively,
- 1 unread email in my inbox.
- 3 total emails in my inbox (i.e. 3 too many!).
- 0 emails in my drafts folder. This is useful to keep an eye on in case I save a draft and then forget about it.
- 0 emails in my outbox. This is my postfix email outbox and is useful to keep an eye on in case emails sent when I’m offline don’t get automatically sent when I reconnect.
To set this up I use shellwrangler which is a small app that embeds the output of a script in the status bar. Update 2017-11-10 shellwrangler appears dead and bitbar looks like a superior alternative. This then calls the following perl script which generates the text. Shellwrangler Bitbar updates at a specified interval so that is all there is to it.
#!/usr/bin/perl -w ########################################################################### # # Count number of emails in inbox, drafts and outbox for mail indexed # with mu and sent with sendmail or equivalent # # by Ben Maughan # http://www.pragmaticemacs.com # # Feel free to distribute, modify, whatever # ########################################################################### ## total mails in inbox chomp(my @tot=`/usr/local/bin/mu find maildir:/work/INBOX 2>/dev/null`); ## unread mails in inbox chomp(my @unread=`/usr/local/bin/mu find maildir:/work/INBOX AND flag:unread 2>/dev/null`); ## drafts chomp(my @drafts=`/usr/local/bin/mu find maildir:/work/[Gmail].Drafts 2>/dev/null`); ## number in outbox chomp(my @mailq=`/usr/bin/mailq`); my @outbox = grep /^[0-9A-F]{12}/, @mailq; printf "@ %d/%d/%d/%d",$#unread+1,$#tot+1,$#drafts+1,$#outbox+1; exit;