BSD/Linux terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP.
Community links:
mailing lists | #meli
on OFTC IRC | Report bugs and/or feature requests in meli's issue tracker
Main view | Compact main view | Compose with embed terminal editor |
Main repository:
Official mirrors:
- Try an online interactive web demo powered by WebAssembly
cargo install meli
- Download and install pre-built debian package, static linux binary, or
- Install with Nix
See a comprehensive tour of meli
in the manual page meli(7)
.
See also the Quickstart tutorial online.
After installing meli
, see meli(1)
, meli.conf(5)
, meli(7)
and meli-themes(5)
for documentation.
Sample configuration and theme files can be found in the meli/docs/samples/
subdirectory.
Manual pages are also hosted online.
meli
by default looks for a configuration file in this location: $XDG_CONFIG_HOME/meli/config.toml
You can run meli with arbitrary configuration files by setting the $MELI_CONFIG
environment variable to their locations, i.e.:
MELI_CONFIG=./test_config cargo run
For a quick start, build and install locally:
PREFIX=~/.local make install
Available subcommands for make
are listed with make help
.
The Makefile should be POSIX portable and not require a specific make
version.
meli
requires rust 1.65 and rust's package manager, Cargo.
Information on how to get it on your system can be found here: https://doc.rust-lang.org/cargo/getting-started/installation.html
With Cargo available, the project can be built with make
and the resulting binary will then be found under target/release/meli
.
Run make install
to install the binary and man pages.
This requires root, so I suggest you override the default paths and install it in your $HOME
: make PREFIX=$HOME/.local install
.
You can build and run meli
with one command: cargo run --release
.
Some functionality is held behind "feature gates", or compile-time flags. The following list explains each feature's purpose:
gpgme
enables GPG support vialibgpgme
(on by default)dbus-notifications
enables showing notifications usingdbus
(on by default)notmuch
provides support for using a notmuch database as a mail backend (on by default)jmap
provides support for connecting to a jmap server and use it as a mail backend (off by default)sqlite3
provides support for builting fast search indexes in local sqlite3 databases (on by default)cli-docs
includes the manpage documentation compiled by eithermandoc
orman
binary to plain text inmeli
's command line. Embedded documentation can be viewed with the subcommandmeli man [PAGE]
svgscreenshot
provides support for taking screenshots of the current view ofmeli
and saving it as SVG files. Its only purpose is taking screenshots for the officialmeli
webpage. (off by default)debug-tracing
enables various trace debug logs from various places around themeli
code base. The trace log is printed instderr
. (off by default)
Building with Debian's packaged cargo might require the installation of these two packages: librust-openssl-sys-dev librust-libdbus-sys-dev
A *.deb
package can be built with make deb-dist
To use the optional notmuch backend feature, you must have libnotmuch5
installed in your system.
In Debian-like systems, install the libnotmuch5
packages.
meli
detects the library's presence on runtime.
To use the optional gpg feature, you must have libgpgme
installed in your system.
In Debian-like systems, install the libgpgme11
package.
meli
detects the library's presence on runtime.
To build with JMAP support, prepend the environment variable MELI_FEATURES='jmap'
to your make invocation:
MELI_FEATURES="jmap" make
or if building directly with cargo, use the flag `--features="jmap"'.
HTML rendering is achieved using w3m by default.
You can use the pager.html_filter
setting to override this (for more details you can consult meli.conf(5)
).
Development builds can be built and/or run with
cargo build
cargo run
There is a debug/tracing log feature that can be enabled by using the flag --feature debug-tracing
after uncommenting the features in Cargo.toml
.
The logs are printed in stderr when the env var MELI_DEBUG_STDERR
is defined, thus you can run meli
with a redirection (i.e 2> log
).
Code style follows the rustfmt.toml
file.