Fixing mailto-mutt in Linux Mint Maya
I tried Linux Mint Maya KDE over the weekend in a virtual machine. It came after a brief tour of the Xfce edition. The latter does not really let me set a small and tasty window title bar without editing pixmaps of the window decoration. KDE in general is extremely configurable, apart from the size and colour of the… yes, the window decoration theme. But it left a good impression. Except that some KDE apps look so cluttered and tasteless compared to their Gnome2 counterparts. Step forward Ktorrent.
Switching back to the real machine’s MATE was such a relief. So I decided to debug my main niggle with this half-baked DE: the disfunctional “Email Link…” in Firefox, which just brings up Mutt in normal mode, instead of composing a new mail in it. Same for clicking mailto links anywhere.
First configure Firefox mailto:
handling. Edit, Preferences, Applications, mailto. “Mutt (default)” does not work as intended. So I set it to the recommended /usr/lib/mutt/mailto-mutt
which is just a wrapper to start mutt in a new terminal:
exec x-terminal-emulator -e mutt "$@"
It did not work either. I just checked, x-terminal-emulator
is just a symlink to a symlink to /usr/bin/mate-terminal
.
Next step: check whether Firefox really sends the mailto parameters to mailto-mutt. So I replaced it with a one-liner to copy the argument list into a log file.
echo "$@" > ~/mailto.log
That worked fine, the proper mailto URI was copied to the log file.
So it must be either the mate-terminal or the mutt invocation. I tried it manually without a new terminal first:
mutt `cat mailto.log`
Everything fine, mutt starts in email-compose mode. So it’s the mate-terminal, then:
mate-terminal -e mutt `cat mailto.log`
There you go! The mailto URI from the log file was now ignored. It turns out the -e option ignores the rest of the command line, it just takes one argument. Should have used -x instead, or quote the whole thing. Not that mate-terminal has a manual page. I looked it up in that of gnome-terminal on Ubuntu 10.04. Anyway, here it is:
mate-terminal -e "mutt `cat mailto.log`"
works fine. So the fix to mailto-mutt is this, watch the opening quote:
exec x-terminal-emulator -e "mutt $@"
Then, even though I don’t believe society exists at all, I tried to do the civil thing towards the so-called community and tracked down the origins of the bug.
/usr/lib/mutt/mailto-mutt
is part of the mutt package, version 1.5.21-5ubuntu2.
The original Debian package 1.5.21-5 has an identical mailto-mutt.
The only Debian bug about mailto-mutt is #576313 which contains an interesting observation:
On top of that, mailto-mutt doesn't handle body specifications properly. /usr/lib/mutt/mailto-mutt 'mailto:test?body=test' doesn't do anything, but mutt 'mailto:test?body=test' works just fine.
The “upstream tarball” (mutt-1.5.21.orig.tar.gz) contains no mailto-mutt whatsoever. So it’s a Debian bug. I emailed the maintainer about the bug and the fix.
It seems few people have time to fix real usability bugs in these chaotic years of the Linux desktop. And why? Because the brilliant GNOME Usability people decided to discontinue Gnome 2, the best desktop environment ever. It’s so incredible that it hurts.