You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Manos Pitsidianakis 3dc0cb1963
imap: send 'finished' signal when watch thread dies
2 weeks ago
benches melib: remove BackendOpGenerator 5 months ago
debug_printer Fix warnings, lints, and 2018 errors 6 months ago
melib imap: send 'finished' signal when watch thread dies 2 weeks ago
scripts scripts: remove auto-rustfmt from pre-commit hook 6 months ago
src Set 600 perm mode to all created files 3 weeks ago
testing Remove unused imports from testing/src/imap_conn.rs 2 months ago
tests Add tests/ dir and a test 4 weeks ago
text_processing text_processing: add GlobMatch trait 3 weeks ago
ui ui: CellBuffer cleanups 3 weeks ago
.gdbinit small fixes 3 weeks ago
.gitignore Revert "Show manuals with command line arguments" 1 month ago
COPYING mailbox: add threads 6 months ago
Cargo.lock add sqlite3 feature WIP 1 month ago
Cargo.toml Revert "Show manuals with command line arguments" 1 month ago
Makefile Small Makefile prettification 3 weeks ago
README melib: add notmuch backend 1 month ago
meli.1 bin: add --test-config flag 3 weeks ago
meli.conf.5 Doc: update meli.conf.5 on headers_sticky and pager_context 3 weeks ago
rustfmt.toml Run rustfmt 6 months ago
sample-config Doc: add glob for subscribed_folders field info 3 weeks ago

README

    __
__/ \__
/ \__/ \__ .
\__/ \__/ \ , _ , _ ___ │ '
/ \__ \__/ │' `│ `┒ .' ` │ │
\__/ \__/ \ │ │ │ |────' │ │
\__/ \__/ │ / `.___, /\__ /
\__/
,-.
\_/
terminal mail user agent {|||)<
/ \
`-'
DOCUMENTATION
=============

After installing meli, see meli(1) and meli.conf(5) for documentation.

BUILDING
========

meli requires rust 1.34 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

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

See meli(1) and meli.conf(5) for documentation.

You can build and run meli with one command:

# cargo run --release

While the project is in early development, meli will only be developed for the
linux kernel and respected linux distributions. Support for more UNIX-like OSes
is on the roadmap.

BUILDING IN DEBIAN
==================

Building with Debian's packaged cargo might require the installation of these
two packages: librust-openssl-sys-dev and librust-libdbus-sys-dev

BUILDING WITH NOTMUCH
=====================

To use the optional notmuch backend feature, you must have libnotmuch installed in your system. In Debian-like systems, install the "libnotmuch" package.

To build with notmuch support, prepend the environment variable "MELI_FEATURES='melib/notmuch_backend'" to your make invocation:

# MELI_FEATURES="melib/notmuch_backend" make

or if building directly with cargo, use the flag '--features="melib/notmuch_backend"'.

DEVELOPMENT
===========

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, thus you can run meli with a redirection (i.e `2> log`)

Code style follows the default rustfmt profile.

CONFIG
======

meli by default looks for a configuration file in this location:
# $XDG_CONFIG_HOME/meli/config

You can run meli with arbitrary configuration files by setting the MELI_CONFIG
environment variable to their locations, ie:

# MELI_CONFIG=./test_config cargo run

TESTING
=======

How to run specific tests:

# cargo test -p {melib, ui, meli} (-- --nocapture) (--test test_name)

PROFILING
=========

# perf record -g target/debug/bin
# perf script | stackcollapse-perf | rust-unmangle | flamegraph > perf.svg