1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
<!-- MANON
% cha-mailcap(5) | Mailcap support in Chawan
MANOFF -->
# Mailcap
Chawan's buffers can only handle HTML and plain text. To make Chawan recognize
other file formats, the mailcap file format can be used.
Note that Chawan's default mime.types file only recognizes a few file
extensions, which may result in your entries not being executed.
Please consult the
<!-- MANOFF -->
[mime.types](mime.types.md)
<!-- MANON -->
<!-- MANON
**cha-mime.types**(5)
MANOFF -->
documentation for details.
For an exact description of the mailcap format, see
[RFC 1524](https://www.rfc-editor.org/rfc/rfc1524).
## Search path
The search path for mailcap files can be overridden using the configuration
variable `external.mailcap`.
The default search path for mailcap files is:
```
$HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
```
When no mailcap files are found, Chawan simply uses the xdg-open command
for all entries. Note: this will change once file downloading is implemented.
## Format
Chawan tries to adhere to the format described in RFC 1524, with a few
extensions.
### Templating
%s, %t works as described in the standard. However, named content type fields
(%{...}) only work with %{charset} as of now. (TODO: fix this.)
Also, the non-standard template %u may be specified to get the original URL
of the resource.
If no quoting is applied, Chawan will quote the templates automatically. (This
works with $(command substitutions) as well.)
### Fields
The `test`, `nametemplate`, `needsterminal` and `copiousoutput` fields are
recognized. Additionally, the non-standard `x-htmloutput` extension field
is recognized too.
* When the `test` named field is specified, the mailcap entry is only used
if the test command returns 0.
Warning: as of now, %s does not work with test.
* `copiousoutput` makes Chawan redirect the output of the external command
into a new buffer.
* The `x-htmloutput` extension field behaves the same as `copiousoutput`,
but makes Chawan interpret the command's output as HTML.
* `needsterminal` hands over control of the terminal to the command while
it is running. Note: as of now, `needsterminal` does nothing if either
`copiousoutput` or `x-htmloutput` is specified.
* For a description of `nametemplate`, see the RFC.
## Note
Entries with a content type of text/html are ignored.
## Examples
```
# Note: these examples require an entry in mime.types that sets e.g. md as
# the markdown content type.
# Handle markdown files using pandoc.
text/markdown; pandoc - -f markdown -t html -o -; x-htmloutput
# Show syntax highlighting for JavaScript source files using bat.
text/javascript; bat -f -l es6 --file-name %u -; copiousoutput
# Play music using mpv, and hand over control of the terminal until mpv exits.
audio/*; mpv -; needsterminal
# Play videos using mpv in the background, redirecting its standard output
# and standard error to /dev/null.
video/*; mpv -
# Open docx files using LibreOffice Writer.
application/vnd.openxmlformats-officedocument.wordprocessingml.document;lowriter %s
# (Wow that was ugly.)
# Following entry will be ignored, as text/html is supported natively by Chawan.
text/html; cha -T text/html -I %{charset}; copiousoutput
```
<!-- MANON
## See also
**cha**(1)
MANOFF -->
|