Mailcap selectively applying settings
Cameron Simpson
cs at cskk.id.au
Fri May 13 23:42:27 UTC 2022
Slow to respond here.
Mutt's MIME handling stuff has a long section in the manual here:
http://www.mutt.org/doc/manual/#mimesupport
with the mailcap section commencing here:
http://www.mutt.org/doc/manual/#mailcap
In particular see the stuff about "copiousoutput" and the pager.
On 12May2022 15:38, Christopher Conforti <christopher at conforti.xyz> wrote:
>Hi list, I'm having a bit of a weird one, at least for me. I can't get mutt to
>read my entire mailcap file properly, it seems. For example, I have the
>following line in my mailcap:
>
>images/*; eog %s
I'm surprised; image MIME types are normally "image/*", not "images/*".
>It handles this just fine; all image attachments are opened with eog. However,
>another line:
>
>text/html lynx -dump %s | more
>
>is seemingly ignored, even when there are no other options given for handling
>HTML.
I was going to explain that this is interactive and thus not chosen. But
I see that this is _exactly_ the example in the manual in the MIME
section :-(
The section on Reading Mail has a part on the pager:
http://www.mutt.org/doc/manual/#pager-menu
which says that by default it uses its builtin pager. That means it
cannot use an interactive programme unless you configure $pager:
http://www.mutt.org/doc/manual/#pager
But that is for the message as a whole, after conversion to plain text.
You're trying to configure how mutt presents HTML inline in the message
body. Because that is paged (either with the builtin pager or via an
external pager you specify with $pager) mutt cannot choose an
interactive mailcap command. Therefore your command cannot be chosen.
Marking the mailcap entry with "copiousoutput" says that the command
produces a lot of output, and should be paged. Since that works for you,
this implies that when "more" isn't sending to a terminal it basicly
acts like "cat". A quick experiment confirms this for me:
man mutt|more|less
pages the output with "less" - the "more" command has just passed the
text through. So you get away with it.
Technically you should have 2 entries. Mine look lke this:
text/html; env DISPLAY= unhtml %s | less
text/html; exec 2>&1 && env DISPLAY= unhtml %s; copiousoutput
because the mailcap isn't a mutt-specific thing, and also since mutt
doesn't use it just for the message display, but also for the attachment
view action.
So the first entry there has mutt write an HTML component to a file,
then call "unhtml" on that file and pipe the output through "less".
"unhtml" is just a shell script of my own which runs my current
preferred HTML-to-plain-tetx converter. Presently it uses "lynx -stdin
-dump" with a bunch of pre and post manking.
The second entry is for the pager: it has "copiousoutput" appended, and
does not invoke a paging programme.
>What the heck is going on? Where can I learn how to fix it?
Give the MIME section of the manual a read - it has a lot of detail on
what you can put in the mailcap entry, including an example of multiple
entries for a type in the "3.3.2. Search Order" part.
Cheers,
Cameron Simpson <cs at cskk.id.au>
More information about the Mutt-users
mailing list