How to handle mailto links with multiple NeoMutt accounts
I love commandline applications. A while ago I swapped my mail client for NeoMutt, which is an open source commandline mail client. Setting up NeoMutt by hand is tough, so I used a tool called
mutt-wizard. This tool allows you to set up multiple accounts for a single NeoMutt instance.
While NeoMutt works very well, there is one thing that bothers me.
mailto URLs, that you encounter in your web browser, for example. Without any prior configuration, these URLs do not redirect you to NeoMutt to start writing a mail. While there are solutions that allow you to set up NeoMutt for these
mailto links, they do not work for NeoMutt instances with multiple accounts. Therefore, I created a script to fix this issue.
NOTE: this script probably works right of the bat if you use
mutt-wizard. If you don’t, you have to update the script a bit.
NOTE: this script uses
rofi, an alternative to
dmenucan be used instead by updating the script.
This script opens up a prompt to select an email account, and opens up NeoMutt with the correct email address.
#!/bin/sh MUTT_CONFIG="$HOME/.config/mutt" EMAILS=$(cd "$MUTT_CONFIG/accounts" && find . | tail -n +2 | sed "s/\.\///g; s/\.muttrc$//g") CHOICE=$(echo "$EMAILS" | rofi -dmenu -i -l "$(echo "$EMAILS" | wc -l)" -p "Select address to send from") [ -z "$CHOICE" ] && exit ACCOUNT_CONFIG_FILE=$(find "$MUTT_CONFIG/accounts" -name "*$CHOICE*") exec "$TERMINAL" -e neomutt "[email protected]" -F "$MUTT_CONFIG/muttrc" -F "$ACCOUNT_CONFIG_FILE"
Firstly, this script establishes the NeoMutt configuration directory. Then, it looks for all the accounts in the
accounts folder and trims the results, to only retain the email addresses. Then, it pipes the email addresses into
rofi to make a selection. Finally, it opens a terminal with the selected account to start writing the email.
Now, this script on its own does not do anything, as we need to supply it with the target email address. This is done by the
mailto link. To take advantage of this, we write a desktop entry and put it in
[Desktop Entry] Type=Application Name=Mail Exec=mailto %u
NOTE: for this desktop file, the script from before should be called
mailtoand must be put in the PATH!
There are three things left to do:
- Install the desktop file, for which I would like to link to the beautiful Arch Wiki.
- Set the default handler for
mailtolinks to our new desktop file. This can be done by editing
~/.local/share/applications/mimeapps.listand adding the following:
[Default Applications] x-scheme-handler/mailto=mail.desktop;
mailto handler. To confirm successful registration, run
xdg-mime query default 'x-scheme-handler/mailto'. This should output
- Set up the
Hope this helped!