Browse Source

README.md: Add screenshots and update text

master
Manos Pitsidianakis 1 week ago
parent
commit
b69bc219c3
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS. GPG Key ID: 73627C2F690DF710
9 changed files with 50 additions and 69 deletions
  1. +46
    -68
      README.md
  2. +0
    -0
      docs/samples/sample-config.toml
  3. +0
    -0
      docs/samples/themes/orca.toml
  4. +0
    -0
      docs/samples/themes/spooky.toml
  5. +0
    -0
      docs/samples/themes/watermelon.toml
  6. +1
    -0
      docs/screenshots/compact.svg
  7. +1
    -0
      docs/screenshots/compose.svg
  8. +1
    -0
      docs/screenshots/main.svg
  9. +1
    -1
      src/conf.rs

+ 46
- 68
README.md View File

@ -1,92 +1,81 @@
# meli
For a quick start, build and install locally:
```sh
PREFIX=~/.local make install
```
# meli [![GitHub license](https://img.shields.io/github/license/meli/meli)](https://github.com/meli/meli/blob/master/COPYING) [![Crates.io](https://img.shields.io/crates/v/meli)](https://crates.io/crates/meli)
Available subcommands:
- meli (builds meli with optimizations in `$CARGO_TARGET_DIR`)
- install (installs binary in `$BINDIR` and documentation to `$MANDIR`)
- uninstall
Secondary subcommands:
- clean (cleans build artifacts)
- check-deps (checks dependencies)
- install-bin (installs binary to `$BINDIR`)
- install-doc (installs manpages to `$MANDIR`)
- help (prints this information)
- dist (creates release tarball named `meli-VERSION.tar.gz` in this directory)
- deb-dist (builds debian package in the parent directory)
- distclean (cleans distribution build artifacts)
- build-rustdoc (builds rustdoc documentation for all packages in `$CARGO_TARGET_DIR`)
**BSD/Linux terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP.**
The Makefile *should* be portable and not require a specific `make` version.
Community links:
[mailing lists](https://lists.meli.delivery/) | `#meli` on freenode IRC | Report bugs and/or feature requests in [meli's issue tracker](https://git.meli.delivery/meli/meli/issues "meli gitea issue tracker")
# Documentation
| | | |
:---:|:---:|:---:
![Main view screenshot](./docs/screenshots/main.svg "mail meli view screenshot") | ![Compact main view screenshot](./docs/screenshots/compact.svg "compact main view screenshot") | ![Compose with embed terminal editor screenshot](./docs/screenshots/compose.svg "composing view screenshot")
Main view | Compact main view | Compose with embed terminal editor
After installing meli, see `meli(1)` and `meli.conf(5)` for documentation. Sample configuration and theme files can be found in the `samples/` subdirectory.
## Install
- Try an [online interactive web demo](https://meli.delivery/wasm2.html "online interactive web demo") powered by WebAssembly
- [`cargo install meli`](https://crates.io/crates/meli "crates.io meli package")
- [Download and install pre-built debian package, static linux binary](https://github.com/meli/meli/releases/ "github releases for meli"), or
- Install with [Nix](https://search.nixos.org/packages?show=meli&query=meli&from=0&size=30&sort=relevance&channel=unstable#disabled "nixos package search results for 'meli'")
# Building
## Documentation
meli requires rust 1.39 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>
See also [Quickstart tutorial](https://meli.delivery/documentation.html#quick-start).
With Cargo available, the project can be built with
After installing meli, see `meli(1)`, `meli.conf(5)` and `meli-themes(5)` for documentation. Sample configuration and theme files can be found in the `docs/samples/` subdirectory. Manual pages are also [hosted online](https://meli.delivery/documentation.html "meli documentation").
```sh
make
```
The resulting binary will then be found under `target/release/meli`
meli by default looks for a configuration file in this location: `$XDG_CONFIG_HOME/meli/config.toml`
Run:
You can run meli with arbitrary configuration files by setting the `$MELI_CONFIG`
environment variable to their locations, i.e.:
```sh
make install
MELI_CONFIG=./test_config cargo run
```
to install the binary and man pages. This requires root, so I suggest you override the default paths and install it in your `$HOME`:
## Build
For a quick start, build and install locally:
```sh
make PREFIX=$HOME/.local install
PREFIX=~/.local make install
```
See `meli(1)` and `meli.conf(5)` for documentation.
Available subcommands for `make` are listed with `make help`. The Makefile *should* be POSIX portable and not require a specific `make` version.
You can build and run meli with one command:
meli requires rust 1.39 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>
```sh
cargo run --release
```
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`.
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.
You can build and run meli with one command: `cargo run --release`.
## Features
### Build features
Some functionality is held behind "feature gates", or compile-time flags. The following list explains each feature's purpose:
- `dbus-notifications` enables showing notifications using `dbus`.
- `notmuch` provides support for using a notmuch database as a mail backend
- `jmap` provides support for connecting to a jmap server and use it as a mail backend
- `sqlite3` provides support for builting fast search indexes in local sqlite3 databases
- `gpgme` enables GPG support via `libgpgme` (on by default)
- `dbus-notifications` enables showing notifications using `dbus` (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 either `mandoc` or `man` binary to plain text in `meli`'s command line. Embedded documentation can be viewed with the subcommand `meli man [PAGE]`
- `svgscreenshot` provides support for taking screenshots of the current view of meli and saving it as SVG files. Its only purpose is taking screenshots for the official meli webpage.
- `debug-tracing` enables various trace debug logs from various places around the meli code base. The trace log is printed in `stderr`.
- `svgscreenshot` provides support for taking screenshots of the current view of meli and saving it as SVG files. Its only purpose is taking screenshots for the official meli webpage. (off by default)
- `debug-tracing` enables various trace debug logs from various places around the meli code base. The trace log is printed in `stderr`. (off by default)
## Building in Debian
### Build Debian package (*deb*)
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`
# Using notmuch
### Using notmuch
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.
# Building with JMAP
### Using GPG
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.
### Building with JMAP
To build with JMAP support, prepend the environment variable `MELI_FEATURES='jmap'` to your make invocation:
@ -111,18 +100,7 @@ are printed in stderr, thus you can run meli with a redirection (i.e `2> log`)
Code style follows the default rustfmt profile.
# Configuration
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, ie:
```sh
MELI_CONFIG=./test_config cargo run
```
# Testing
## Testing
How to run specific tests:
@ -130,14 +108,14 @@ How to run specific tests:
cargo test -p {melib, meli} (-- --nocapture) (--test test_name)
```
# Profiling
## Profiling
```sh
perf record -g target/debug/bin
perf script | stackcollapse-perf | rust-unmangle | flamegraph > perf.svg
```
# Running fuzz targets
## Running fuzz targets
Note: `cargo-fuzz` requires the nightly toolchain.

samples/sample-config.toml → docs/samples/sample-config.toml View File


samples/themes/orca.toml → docs/samples/themes/orca.toml View File


samples/themes/spooky.toml → docs/samples/themes/spooky.toml View File


samples/themes/watermelon.toml → docs/samples/themes/watermelon.toml View File


+ 1
- 0
docs/screenshots/compact.svg
File diff suppressed because it is too large
View File


+ 1
- 0
docs/screenshots/compose.svg
File diff suppressed because it is too large
View File


+ 1
- 0
docs/screenshots/main.svg
File diff suppressed because it is too large
View File


+ 1
- 1
src/conf.rs View File

@ -676,7 +676,7 @@ pub fn create_config_file(p: &Path) -> Result<()> {
.create_new(true)
.open(p)
.expect("Could not create config file.");
file.write_all(include_bytes!("../samples/sample-config.toml"))
file.write_all(include_bytes!("../docs/samples/sample-config.toml"))
.expect("Could not write to config file.");
println!("Written example configuration to {}", p.display());
let metadata = file.metadata()?;

Loading…
Cancel
Save