mirror of https://git.meli.delivery/meli/meli
docs: add external-tools.md document
parent
91557c2c43
commit
24103f3310
@ -0,0 +1,108 @@
|
||||
# Using other apps with `meli`
|
||||
|
||||
## Sending mail with a command line tool
|
||||
|
||||
`composing.send_mail` can use either settings for an SMTP server or a shell
|
||||
command to which it pipes new mail to.
|
||||
|
||||
### `msmtp` and `send_mail`
|
||||
|
||||
[`msmtp`][msmtp] is a command line SMTP client that can be configured to work
|
||||
with many SMTP servers. It supports queuing and other small useful features.
|
||||
See [the documentation](https://marlam.de/msmtp/msmtp.html).
|
||||
|
||||
```toml
|
||||
[composing]
|
||||
send_mail = 'msmtp --logfile=/home/user/.mail/msmtp.log --read-recipients
|
||||
--read-envelope-from'
|
||||
```
|
||||
[msmtp]: https://marlam.de/msmtp/
|
||||
|
||||
## Editor
|
||||
|
||||
Any editor you specify in `composing.editor_cmd` will be invoked with the
|
||||
e-mail draft file path appended as an argument to it. For example, if your
|
||||
setting is `editor_cmd = 'nano'`, `meli` will execute `nano /tmp/meli/...`.
|
||||
|
||||
### Configuration
|
||||
|
||||
#### `vim` / `neovim` command
|
||||
|
||||
The following command setting in your `meli` configuration file makes editing
|
||||
start at the first empty line, that is, after the e-mail headers. This allows
|
||||
you to start writing the e-mail body right away after opening the editor from
|
||||
`meli`.
|
||||
|
||||
```toml
|
||||
[composing]
|
||||
editor_cmd = '~/.local/bin/vim +/^$'
|
||||
```
|
||||
|
||||
In `vim`, the `+` argument positions the cursor at the first file argument. `/`
|
||||
specifies a pattern position instead of a line number. `^` specifies the start
|
||||
of a line, and `$` the end of the line. The pattern altogether matches an empty
|
||||
line, which will be after the e-mail headers.
|
||||
|
||||
### Composing with `format=flowed`
|
||||
|
||||
`format=flowed` is a proposed IETF standard[^formatflowed] that lets you
|
||||
preserve the structure of paragraphs by disambiguating a *hard* and a *soft*
|
||||
line break. A line break that is preceded by a space character is *soft* and
|
||||
does not terminate the paragraph, while a line break without a space is a
|
||||
*hard* one and creates a new paragraph. This allows text to be re-flowed in
|
||||
e-mail clients at different display widths and font sizes without messing up
|
||||
the author's formatting.
|
||||
|
||||
#### `vim` / `neovim` and `format=flowed`
|
||||
|
||||
Create a `mail.vim` file type plugin in:
|
||||
|
||||
- `$HOME/.vim/after/ftplugin/mail.vim` for vim
|
||||
- `$HOME/.config/nvim/ftplugin/mail.vim` for neovim
|
||||
|
||||
```vim
|
||||
setl tw=72
|
||||
setl fo=awq
|
||||
setl comments+=nb:>
|
||||
match ErrorMsg '\s\+$'
|
||||
```
|
||||
|
||||
## `xbiff`
|
||||
|
||||
[`xbiff(1)`][xbiff] manual page says:[^xbiffmanpage]
|
||||
|
||||
> The `xbiff` program displays a little image of a mailbox. When there is no
|
||||
> mail, the flag on the mailbox is down. When mail arrives, the flag goes up
|
||||
> and the mailbox beeps.
|
||||
|
||||
This tool is very outdated, but some users might still have use for it.
|
||||
Therefore `meli` provides support (also, it's easy to support this feature).
|
||||
|
||||
Specify a file path in `notifications.xbiff_file_path` and `meli` will write to
|
||||
it when new mail arrives. This file can the be used as input to `xbiff`.
|
||||
|
||||
```toml
|
||||
[notifications]
|
||||
xbiff_file_path = "/tmp/xbiff"
|
||||
```
|
||||
|
||||
[xbiff]: https://en.wikipedia.org/wiki/Xbiff
|
||||
[^xbiffmanpage]: https://www.x.org/releases/X11R7.0/doc/html/xbiff.1.html
|
||||
|
||||
## Viewing HTML e-mail
|
||||
|
||||
By default `meli` tries to render HTML e-mail with `w3m`. You can override this
|
||||
by setting the `pager.html_filter` setting. The default setting corresponds to:
|
||||
|
||||
```toml
|
||||
[pager]
|
||||
html_filter = "w3m -I utf-8 -T text/html"
|
||||
```
|
||||
|
||||
The HTML of the e-mail is piped into `html_filter`'s standard input.
|
||||
|
||||
## Externally refreshing e-mail accounts
|
||||
|
||||
If your account's syncing is handled by an external tool, you can use the
|
||||
refresh shortcuts within `meli` to call this tool with
|
||||
`accounts.refresh_command`.
|
Loading…
Reference in New Issue