Quick start tutorial
Follow the installation instructions in the README.
Launch meli
with no arguments, and you will be asked if you want to create a sample configuration.
The sample configuration (created by default in ~/.config/meli/config.toml
) includes comments with the basic settings required for setting up accounts allowing you to copy and edit right away. See meli.conf(5) for the available configuration options.
The main screen when you launch meli
is the INBOX of the first account you have configured.
- With J / K you can select the next/previous folder. (To go to a specific one directly, press Space and type the command
go n
where n is the number of the folder) - With h / l you can select the next/previous account.
- Use the arrow keys to browse entries in the e-mail list of a folder. (Along with Home / End / PgUp / PgDn)
- Use Enter to open an entry and i to exit it.
- Use m to start writing new e-mail. (or R to reply to the entry you’re currently viewing)
- Use the arrow keys to edit each field of the e-mail.
- Attachments can be added by pressing Space and typing the command
add-attachment
PATH
wherePATH
is the filesystem path of the attachment file. - Edit the draft body at eny time by pressing e
- Send your e-mail by pressing s
- Discard or save your draft by pressing Space and typing the command
close
At any time, you can press ? to show a list of all available actions and shortcuts, along with every possible setting and command that your version supports.
Press T to cycle between tabs or Alt + 1 … 9 to choose.
Press q to exit.
meli(1)
MELI(1) | General Commands Manual | MELI(1) |
NAME
meli
—
terminal
e-mail client
μέλι
is the
Greek word for honey
SYNOPSIS
meli
|
[
--help
|
-h
]
[
--version
|
-v
]
[
--config
path
]
|
TABLE OF CONTENTS
- DESCRIPTION
- STARTING WITH meli
- VIEWING MAIL
- SEARCH
- TAGS
- COMPOSING
- CONTACTS
- MODES
- SHORTCUTS
- EXIT STATUS
- ENVIRONMENT
- FILES
- SEE ALSO
- CONFORMING TO
- AUTHORS
DESCRIPTION
meli
is a terminal mail client aiming for
extensive and user-frendly configurability.
^^ .-=-=-=-. ^^ ^^ (`-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ ( `-=-=-=-(@)-=-=-` ) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-`) `-=-=-=-=-` ^^
STARTING WITH meli
When launched for the first time,
meli
will search for its configuration directory,
$XDG_CONFIG_HOME/meli/
. If it doesn't exist, you
will be asked if you want to create one and presented with a sample
configuration file
(
$XDG_CONFIG_HOME/meli/config.toml
) that includes
the basic settings required for setting up accounts allowing you to copy and
edit right away. See
meli.conf(5)
for
the available configuration options.
At any time, you may press ? ( shortcuts.general. toggle_help ) for a searchable list of all available actions and shortcuts, along with every possible setting and command that your version supports.
Each mailbox may be viewed in 4 modes: Plain views each mail individually, Threaded shows their thread relationship visually, Conversations collapses each thread of emails into a single entry, Compact shows one row per thread.
If you're using a light color palette in your terminal, you should set theme = light in the terminal section of your configuration. See meli-themes(5) for complete documentation on user themes.
See
meli(7)
for a more detailed
tutorial on using
meli
.
VIEWING MAIL
Open attachments by typing their index in the attachments list and
then
a
(
shortcuts.envelope_view.
open_attachment
).
meli
will attempt to open text inside its pager, and
other content via
xdg-open
. Press
m
(
shortcuts.envelope_view.
open_mailcap
)
instead to use the mailcap entry for the MIME type of the attachment, if
any. See
FILES
for the location of the
mailcap files and
mailcap(5)
for their
syntax. You can save individual attachments with the
save-attachment
INDEX
path-to-file
command. INDEX is the attachment's index in the listing. If the path provided is a directory, the attachment is saved with its filename set to the filename in the attachment, if any. If the 0th index is provided, the entire message is saved. If the path provided is a directory, the message is saved as an eml file with its filename set to the messages message-id.
SEARCH
Each e-mail storage backend has a default search method assigned.
IMAP
uses
the SEARCH command,
notmuch
uses libnotmuch and
Maildir/mbox
performs a slow linear
search. It is advised to use a search backend on
Maildir/mbox
accounts.
meli
, if
built with sqlite3, includes the ability to perform full text search on the
following fields:
From
,
To
,
Cc
,
Bcc
,
In-Reply-To
,
References
,
Subject
and
Date
.
The message body (in plain text human readable form) and the flags can also
be queried. To enable sqlite3 indexing for an account set
search_backend
to
sqlite3
in the
configuration file and to create the sqlite3 index issue command:
index
ACCOUNT_NAME
To search in the message body type your keywords without any special formatting. To search in specific fields, prepend your search keyword with "field:" like so:
Boolean operators are or , and and not (alias: ! ) String keywords with spaces must be quoted. Quotes should always be escaped.
Important Notice about IMAP/JMAP
To prevent downloading all your messages from your IMAP/JMAP
server, don't set
search_backend
to
sqlite3
.
meli
will relay your
queries to the IMAP server. Expect a delay between query and response.
Sqlite3 on the contrary at reasonable mailbox sizes should have a non
noticable delay.
QUERY ABNF SYNTAX
-
query = "(" query ")"
|from
|to
|cc
|bcc
|alladdresses
|subject
|flags
|has_attachments
|query "or" query
|query "and" query
|not query
-
not = "not"
|"!"
-
quoted = ALPHA / SP *(ALPHA / DIGIT / SP)
-
term = ALPHA *(ALPHA / DIGIT)
|DQUOTE quoted DQUOTE
-
tagname = term
-
flagval = "passed"
|"replied"
|"seen"
|"read"
|"junk"
|"trash"
|"trashed"
|"draft"
|"flagged"
|tagname
-
flagterm = flagval
|flagval "," flagterm
-
from = "from:" term
-
to = "to:" term
-
cc = "cc:" term
-
bcc = "bcc:" term
-
alladdresses = "alladdresses:" term
-
subject = "subject:" term
TAGS
meli
supports tagging in notmuch and
IMAP/JMAP backends. Tags can be searched with the `tags:` or `flags:` prefix
in a search query, and can be modified by
tag add TAG
and
tag remove TAG
(see
meli.conf(5)
TAGS,
settings
colors
and
ignore_tags
for how to set tag colors and tag
visibility)
COMPOSING
Opening the message Composer tab
To create a new mail message, press m ( shortcuts.listing. new_mail ) while viewing a mailbox. To reply to a mail, press R ( shortcuts.envelope_view. reply ). Both these actions open the mail composer view in a new tab.
Editing text
-
Edit the header fields by selecting with the
arrow keys and pressing
Enter
(
shortcuts.general.
focus_in_text_field
)
to enter
INSERT
mode and
Esc
key to exit. -
At any time you may press
e
(
shortcuts.composing.
edit
)
to launch your editor (see
meli.conf(5)
COMPOSING, setting
editor_command
for how to select which editor to launch). -
Your editor can be used in
meli
's embed terminal emulator by settingembed
to true in your composing settings (You can return tomeli
at any time by pressing Ctrl-Z ) - When launched, your editor captures all input until it exits or stops.
-
To stop your editor and return to
meli
press Ctrl-z and to resume editing press theedit
command again.
Attachments
Attachments may be handled with the
add-attachment
,
remove-attachment
commands (see below).
Sending
Finally, pressing
s
(
shortcuts.composing.
send_mail
)
will send your message according to your settings (see
meli.conf(5)
COMPOSING, setting name
send_mail
). With no Draft or Sent mailbox,
meli
tries first saving mail in your INBOX and then
at any other mailbox. On complete failure to save your draft or sent message
it will be saved in your
tmp
directory instead and you will be notified of its location.
Drafts
To save your draft without sending it, issue
COMMAND
close
and select 'save as
draft'.
To open a draft for further editing, select your draft in the mail
listing and press
edit
.
CONTACTS
meli
supports three kinds of contact
backends:
- an internal format that gets saved under $XDG_DATA_HOME/meli/account_name/addressbook .
-
vCard files (v3, v4) through the
vcard_folder
option in the account section. The path defined asvcard_folder
can hold multiple vCards per file. They are loaded read only. -
a
mutt(1)
compatible alias file in the
option
mutt_alias_file
See meli.conf(5) ACCOUNTS for the complete account configuration values.
MODES
- NORMAL
- is the default mode
- COMMAND
- commands are issued in COMMAND mode, by default started with : ( shortcuts.general. enter_command_mode ) and exited with Esc key.
- EMBED
- is the mode of the embed terminal emulator
- INSERT
-
captures all input as text input, and is exited with
Esc
key.
COMMAND Mode
Mail listing commands
-
set
plain | threaded | compact | conversations - set the way mailboxes are displayed
conversations | shows one entry per thread |
compact | shows one row per thread |
threaded | shows threads as a tree structure |
plain | shows one row per mail, regardless of threading |
-
sort
subject | date asc | desc - sort mail listing
-
subsort
subject | date asc | desc - sorts only the first level of replies.
-
go
n - where n is a mailbox prefixed with the n number in the side menu for the current account
-
toggle thread_snooze
- don't issue notifications for thread under cursor in thread listing
-
search
STRING - search mailbox with STRING query. Escape exits search results.
-
select
STRING - select threads matching STRING query.
-
set seen, set unseen
- Set seen status of message.
-
import
FILEPATH MAILBOX_PATH - Import mail from file into given mailbox.
-
copyto, moveto
MAILBOX_PATH - Copy or move to other mailbox.
-
copyto, moveto
ACCOUNT MAILBOX_PATH - Copy or move to another account's mailbox.
-
delete
- Delete selected threads.
-
export-mbox
FILEPATH - Export selected threads to mboxcl2 file.
-
create-mailbox
ACCOUNT MAILBOX_PATH - create mailbox with given path. Be careful with backends and separator sensitivity (eg IMAP)
-
subscribe-mailbox
ACCOUNT MAILBOX_PATH - subscribe to mailbox with given path
-
unsubscribe-mailbox
ACCOUNT MAILBOX_PATH - unsubscribe to mailbox with given path
-
rename-mailbox
ACCOUNT MAILBOX_PATH_SRC MAILBOX_PATH_DEST - rename mailbox
-
delete-mailbox
ACCOUNT MAILBOX_PATH - deletes mailbox in the mail backend. This action is unreversible.
Mail view commands
-
pipe
EXECUTABLE ARGS - pipe pager contents to binary
-
filter
EXECUTABLE ARGS - filter and display pager contents through command
-
list-post
- post in list of viewed envelope
-
list-unsubscribe
- unsubscribe automatically from list of viewed envelope
-
list-archive
-
open list archive with
xdg-open
composing mail commands
-
mailto
MAILTO_ADDRESS -
Opens a composer tab with initial values parsed from the
mailto:
address. -
add-attachment
PATH - in composer, add PATH as an attachment
-
add-attachment <
CMD ARGS - in composer, pipe CMD ARGS output into an attachment
-
add-attachment-file-picker
-
Launch command defined in the configuration value
file_picker_command
in meli.conf(5) TERMINAL -
add-attachment-file-picker <
CMD ARGS - Launch command CMD ARGS . The command should print file paths in stderr, separated by NULL bytes.
-
remove-attachment
INDEX - remove attachment with given index
-
toggle sign
- toggle between signing and not signing this message. If the gpg invocation fails then the mail won't be sent. See meli.conf(5) PGP for PGP configuration.
-
save-draft
- saves a copy of the draft in the Draft folder
generic commands
-
open-in-tab
- opens envelope view in new tab
-
close
- closes closeable tabs
-
setenv
KEY=VALUE - set environment variable KEY to VALUE
-
printenv
KEY - print environment variable KEY
-
quit
-
Quits
meli
. -
reload-config
-
Reloads configuration but only if account configuration is unchanged.
Useful if you want to reload some settings without restarting
meli
.
SHORTCUTS
See meli.conf(5) SHORTCUTS for shortcuts and their default values.
EXIT STATUS
meli
exits with 0 on a successful run.
Other exit statuses are:
- 1
- catchall for general errors
- 101
- process panic
ENVIRONMENT
-
EDITOR
- Specifies the editor to use
-
MELI_CONFIG
- Override the configuration file
-
NO_COLOR
-
When present (regardless of its value), prevents the addition of ANSI
color. The configuration value
use_color
overrides this.
FILES
meli
uses the following parts of the XDG
standard:
-
XDG_CONFIG_HOME
- defaults to ~/.config/
-
XDG_CACHE_HOME
- defaults to ~/.cache/
and appropriates the following locations:
- $XDG_CONFIG_HOME/meli/
- User configuration directory
- $XDG_CONFIG_HOME/meli/config.toml
- User configuration file, see meli.conf(5) for its syntax and values.
- $XDG_CONFIG_HOME/meli/hooks/*
- Reserved for event hooks.
- $XDG_CONFIG_HOME/meli/plugins/*
- Reserved for plugin files.
- $XDG_CACHE_HOME/meli/*
- Internal cached data used by meli.
- $XDG_DATA_HOME/meli/*
- Internal data used by meli.
- $XDG_DATA_HOME/meli/meli.log
- Operation log.
- /tmp/meli/*
-
Temporary files generated by
meli
.
Mailcap entries are searched for in the following files, in this order:
- $XDG_CONFIG_HOME/meli/mailcap
- $XDG_CONFIG_HOME/.mailcap
- $HOME/.mailcap
- /etc/mailcap
- /usr/etc/mailcap
- /usr/local/etc/mailcap
SEE ALSO
meli.conf(5) , meli-themes(5) , meli(7) , xdg-open(1) , mailcap(5)
CONFORMING TO
- XDG Standard https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html .
- mailcap file, RFC 1524: A User Agent Configuration Mechanism For Multimedia Mail Format Information
- RFC 5322: Internet Message Format
- RFC 6532: Internationalized Email Headers
- RFC 2047: MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text
- RFC 3676: The Text/Plain Format and DelSp Parameters
- RFC 3156: MIME Security with OpenPGP
- RFC 2183: Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field
- RFC 2369: The Use of URLs as Meta-Syntax for Core Mail List Commands and their Transport through Message Header Fields
-
maildir
https://cr.yp.to/proto/maildir.html . - RFC 5321: Simple Mail Transfer Protocol
- RFC 3461: Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs)
- RFC 4954: SMTP Service Extension for Authentication
- RFC 6152: SMTP Service Extension for 8-bit MIME Transport
- RFC 4616: The PLAIN Simple Authentication and Security Layer (SASL) Mechanism
- RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
- RFC 3691: Internet Message Access Protocol (IMAP) UNSELECT command
- RFC 4549: Synch Ops for Disconnected IMAP4 Clients
- RFC 7162: IMAP Extensions: Quick Flag Changes Resynchronization (CONDSTORE) and Quick Mailbox Resynchronization (QRESYNC)
- RFC 8620: The JSON Meta Application Protocol (JMAP)
- RFC 8621: The JSON Meta Application Protocol (JMAP) for Mail
- RFC 3977: Network News Transfer Protocol (NNTP)
- RFC 6048: Network News Transfer Protocol (NNTP) Additions to LIST Command
- vCard Version 3, RFC 2426: vCard MIME Directory Profile
- vCard Version 4, RFC 6350: vCard Format Specification
- RFC 6868 Parameter Value Encoding in iCalendar and vCard
AUTHORS
Copyright 2017-2022 Manos Pitsidianakis manos@pitsidianak.is Released under the GPL, version 3 or greater. This software carries no warranty of any kind (See COPYING for full copyright and warranty notices).
November 11, 2022 | rendered by mandoc |
meli.conf(5) [go back]
MELI.CONF(5) | File Formats Manual | MELI.CONF(5) |
NAME
meli.conf
—
configuration file for the
meli(1)
terminal e-mail client
SYNOPSIS
$XDG_CONFIG_HOME/meli/config.toml
TABLE OF CONTENTS
- DESCRIPTION
- SECTIONS
- EXAMPLES
- ACCOUNTS
- COMPOSING
- SHORTCUTS
- NOTIFICATIONS
- PAGER
- LISTING
- TAGS
- PGP
- TERMINAL
- LOG
- SMTP Connections
- SEE ALSO
- CONFORMING TO
- AUTHORS
DESCRIPTION
Configuration for meli is written in TOML which has a few things to consider (quoting the specification):
- TOML is case sensitive.
- A TOML file must be a valid UTF-8 encoded Unicode document.
-
White-space means
tab
(
0x09
) or space (0x20
). -
Newline means
LF
(
0x0A
) or CRLF (0x0D 0x0A
).
Refer to TOML documentation for valid TOML syntax.
Though not part of TOML syntax,
meli.conf
can have nested configuration files by using the following
m4(1)
include macro:
include("/path/to/file")
SECTIONS
The top level sections of the configuration are:
- accounts
- shortcuts
- notifications
- pager
- listing
- composing
- pgp
- terminal
- log
EXAMPLES
An example configuration:
# Setting up a Maildir account [accounts.account-name] root_mailbox = "/path/to/root/folder" format = "Maildir" listing.index_style = "Compact" identity="email@example.com" subscribed_mailboxes = ["folder", "folder/Sent"] # or [ "*", ] for all mailboxes display_name = "Name" # Set mailbox-specific settings [accounts.account-name.mailboxes] "INBOX" = { alias="Inbox" } #inline table "drafts" = { alias="Drafts" } #inline table [accounts.account-name.mailboxes."foobar-devel"] # or a regular table ignore = true # don't show notifications for this mailbox # Setting up an mbox account [accounts.mbox] root_mailbox = "/var/mail/username" format = "mbox" listing.index_style = "Compact" identity="username@hostname.local" composing.send_mail = { hostname = "localhost", port = 25, auth = { type = "none" }, security = { type = "none" } } [pager] filter = "COLUMNS=72 /usr/local/bin/pygmentize -l email" html_filter = "w3m -I utf-8 -T text/html" [notifications] script = "notify-send" [composing] # required for sending e-mail send_mail = 'msmtp --read-recipients --read-envelope-from' #send_mail = { hostname = "smtp.example.com", port = 587, auth = { type = "auto", username = "user", password = { type = "command_eval", value = "gpg2 --no-tty -q -d ~/.passwords/user.gpg" } }, security = { type = "STARTTLS" } } editor_command = 'vim +/^$' [shortcuts] [shortcuts.composing] edit = 'e' [shortcuts.listing] new_mail = 'm' set_seen = 'n' [terminal] theme = "light"
Available options are listed below. Default values are shown in parentheses.
ACCOUNTS
Default values are shown in parentheses.
-
root_mailbox
String - The backend-specific path of the root_mailbox, usually INBOX .
-
format
String [maildir mbox imap notmuch jmap] - The format of the mail backend.
-
subscribed_mailboxes
[String,] - An array of mailbox paths to display in the UI. Paths are relative to the root mailbox (e.g. INBOX/Sent , not Sent ). The glob wildcard * can be used to match every mailbox name and path.
-
identity
String -
Your e-mail address that is inserted in the
From
: headers of outgoing mail. -
extra_identities
[String,] -
Extra e-mail address identities. When replying to an e-mail addressed to
one of these identities, the
From
: header will be adjusted to its value instead of the default identity.
conversations | shows one entry per thread |
compact | shows one row per thread |
threaded | shows threads as a tree structure |
plain | shows one row per mail, regardless of threading |
-
display_name
String -
(
optional
) A name which can be combined with your
address: "
Name <email@example.com>
". -
read_only
boolean - Attempt to not make any changes to this account. ( false )
-
manual_refresh
boolean -
(
optional
) If true, do not monitor account for changes
(you can use shortcut
listing.refresh
). ( false ) -
refresh_command
String -
(
optional
) command to execute when manually refreshing
(shortcut
listing.refresh
) ( None ) -
search_backend
String -
(
optional
) Choose which search backend to use. Available
options are "
none
" and "sqlite3
". ("sqlite3") -
vcard_folder
String - ( optional ) Folder that contains .vcf files. They are parsed and imported read-only.
-
mutt_alias_file
String - ( optional ) Path of mutt(1) compatible alias file in the option They are parsed and imported read-only.
-
mailboxes
mailbox - ( optional ) Configuration for each mailbox. Its format is described below in mailboxes .
notmuch only
notmuch is supported by loading the dynamic library libnotmuch . If its location is missing from your library paths, you must add it yourself. Alternatively, you can specify its path by using a setting.
notmuch mailboxes are virtual, since they are defined by
user-given notmuch queries. You must explicitly state the mailboxes you want
in the
mailboxes
field and set the
query
property to each of them. To create a tree
hierarchy with virtual mailboxes, define the
parent
property to a mailbox as the name of the parent mailbox you have used in
your configuration.
Account properties:
-
root_mailbox
- points to the directory which contains the .notmuch/ subdirectory.
-
library_file_path
Path - Use an arbitrary location of libnotmuch by specifying its full filesystem path. ( optional )
-
query
String - The notmuch query that defines what content this virtual mailbox has. Refer to notmuch-search-terms(7) for notmuch 's search syntax.
-
parent
String - If you wish to build a mailbox hierarchy, define the name of a parent mailbox you have used in your configuration. ( optional )
Example:
[accounts.notmuch] format = "notmuch" #library_file_path = "/opt/homebrew/lib/libnotmuch.5.dylib" ... [accounts.notmuch.mailboxes] "INBOX" = { query="tag:inbox", subscribe = true } "Drafts" = { query="tag:draft", subscribe = true } "Sent" = { query="from:username@example.com from:username2@example.com", subscribe = true } "Archives" = { query="tag:archived", subscribe = true } "Archives/2019" = { query="tag:archived date:01-2019..12-2019", parent="Archives", subscribe = true }
IMAP only
IMAP specific options are:
-
server_hostname
String - example: "mail.example.com"
-
server_username
String - Server username
-
server_password
String - Server password
-
server_password_command
String -
(
optional
) Use instead of
server_password
-
server_port
number - ( optional ) The port to connect to ( 143 )
-
use_starttls
boolean -
(
optional
) If port is
993
and "use_starttls
" is unspecified, it becomes false by default. ( true ) -
use_tls
boolean - ( optional ) Connect with TLS (or upgrade from plain connection to TLS if STARTTLS is set.) ( true )
-
danger_accept_invalid_certs
boolean - ( optional ) Do not validate TLS certificates. ( false )
-
use_idle
boolean - ( optional ) Use IDLE extension. ( true )
-
use_condstore
boolean - ( optional ) Use CONDSTORE extension. ( true )
-
use_deflate
boolean - ( optional ) Use COMPRESS=DEFLATE extension (if built with DEFLATE support) ( true )
-
use_oauth2
boolean -
(
optional
) Use OAUTH2 authentication. Can only be used
with
server_password_command
which should return a base64-encoded OAUTH2 token ready to be passed to IMAP. For help on setup with Gmail, see Gmail section below. ( false ) -
timeout
integer -
(
optional
) Timeout to use for server connections in
seconds. A timeout of
0
seconds means there is no timeout. ( 16 )
Gmail
Gmail has non-standard IMAP behaviors that need to be worked around.
Gmail - sending mail
Option
store_sent_mail
should be disabled
since Gmail auto-saves sent mail by its own.
Gmail OAUTH2
To use OAUTH2, you must go through a process to register your own
private "application" with Google that can use OAUTH2 tokens. For
convenience in the
meli
repository under the
contrib/
directory you can find a
python3
file named
oauth2.py
to generate and request the
appropriate data to perform OAUTH2 authentication.
Steps:
- In Google APIs, create a custom OAuth client ID and note down the Client ID and Client Secret. You may need to create a consent screen; follow the steps described in the website.
-
Run the
oauth2.py
script as follows (after adjusting binary paths and credentials):python3 oauth2.py --user=xxx@gmail.com --client_id=1038[...].apps.googleusercontent.com --client_secret=VWFn8LIKAMC-MsjBMhJeOplZ --generate_oauth2_token
and follow the instructions. Note down the refresh token. -
In
server_password_command
enter a command like this (after adjusting binary paths and credentials):TOKEN=$(python3 oauth2.py --user=xxx@gmail.com --quiet --client_id=1038[...].apps.googleusercontent.com --client_secret=VWFn8LIKAMC-MsjBMhJeOplZ --refresh_token=1/Yzm6MRy4q1xi7Dx2DuWXNgT6s37OrP_DW_IoyTum4YA) && python3 oauth2.py --user=xxx@gmail.com --generate_oauth2_string --quiet --access_token=$TOKEN
- On startup, meli should evaluate this command which if successful must only return a base64-encoded token ready to be passed to IMAP.
JMAP only
JMAP specific options
-
server_url
String - example: "http://mail.example.com" "http://mail.example.com:8080" "https://mail.example.com"
-
server_username
String - Server username
-
server_password
String - Server password
-
danger_accept_invalid_certs
boolean - ( optional ) Do not validate TLS certificates. ( false )
mbox only
mbox specific options:
-
prefer_mbox_type
String -
(
optional
) Prefer specific mbox format reader for each
message. Default is "
mboxcl2
" format. If the preferred format fails, the message is retried with mboxrd and then if it fails again there is a recover attempt, which discards the invalid message.Valid values
- auto
- mboxo
- mboxrd
- mboxcl
- mboxcl2
mailboxes
field and set the
path
property to each of them. Example:
[accounts.mbox] format = "mbox" mailboxes."Python mailing list" = { path = "~/.mail/python.mbox", subscribe = true, autoload = true }
NNTP
NNTP specific options
-
server_hostname
String - example: "nntp.example.com"
-
server_username
String - Server username
-
server_password
String - Server password
-
require_auth
bool - ( optional ) require authentication in every case ( true )
-
use_tls
boolean - ( optional ) Connect with TLS. ( false )
-
server_port
number - ( optional ) The port to connect to ( 119 )
-
danger_accept_invalid_certs
boolean - ( optional ) Do not validate TLS certificates. ( false )
-
store_flags_locally
boolean - ( optional ) Store seen status locally in an sqlite3 database. ( true )
You have to explicitly state the groups you want to see in the
mailboxes
field. Example:
[accounts.sicpm.mailboxes] "sic.all" = {}
To submit articles directly to the NNTP
server, you must set the special value
server_submission
in the
send_mail
field. Example:
composing.send_mail = "server_submission"
MAILBOXES
-
alias
String - ( optional ) Show a different name for this mailbox in the UI.
-
autoload
boolean - ( optional ) Load this mailbox on startup ( true )
-
collapsed
boolean - ( optional ) Collapse this mailbox subtree in menu. ( false )
-
subscribe
boolean - ( optional ) Watch this mailbox for updates. ( true )
-
ignore
boolean - ( optional ) Silently insert updates for this mailbox, if any. ( false )
-
usage
boolean -
(
optional
) special usage of this mailbox. Valid values
are:
- Normal ( default )
- Inbox
- Archive
- Drafts
- Flagged
- Junk
- Sent
- Trash
Sent
", you must explicitly set it. -
conf_override
boolean -
(
optional
) Override global settings for this mailbox.
Available sections to override are
pager,
notifications, shortcuts, composing
and the account options
identity
. Example:
[accounts."imap.example.com".mailboxes] "INBOX" = { index_style = "plain" } "INBOX/Lists/devlist" = { autoload = false, pager = { filter = "pygmentize -l diff -f 256"} }
-
sort_order
unsigned integer -
(
optional
) Override sort order on the sidebar for this
mailbox. Example:
[accounts."imap.example.com".mailboxes] "INBOX" = { index_style = "plain" } "INBOX/Sent" = { sort_order = 0 } "INBOX/Drafts" = { sort_order = 1 } "INBOX/Lists" = { sort_order = 2 }
-
encoding
String - ( optional ) Override the default UTF-8 charset for the mailbox name. Useful only for UTF-7 mailboxes. ( utf7 , utf-7 , utf8 , utf-8 )
COMPOSING
Composing specific options. Default values are shown in parentheses.
-
send_mail
String|SmtpServerConf -
Command to pipe new mail to (exit code must be
0
for success) or settings for an SMTP server connection. See section SMTP Connections for its fields. -
editor_command
String -
Command to launch editor. Can have arguments. Draft filename is given as
the last argument. If it's missing, the environment variable
EDITOR
is looked up. -
embedded_pty
boolean - ( optional ) Embedded editor within meli . Editor must be xterm compliant. ( false )
-
format_flowed
boolean -
(
optional
) Set
format=flowed
[RFC3676] intext/plain
attachments. ( true ) -
insert_user_agent
boolean -
(
optional
) Add
meli
User-Agent
header in new drafts. ( true ) -
default_header_values
hash table String[String] - ( optional ) Default header values used when creating a new draft. ( [] )
-
wrap_header_preamble
Option<(String, String)> - ( optional ) Wrap header pre-ample when editing a draft in an editor. This allows you to write non-plain text email without the preamble creating syntax errors. They are stripped when you return from the editor. The values should be a two element array of strings, a prefix and suffix. This can be useful when for example you're writing Markdown; you can set the value to ["<!--", "-->"] which wraps the headers in an HTML comment. ( None )
-
store_sent_mail
boolean - ( optional ) Store sent mail after successful submission. This setting is meant to be disabled for non-standard behaviour in Gmail, which auto-saves sent mail on its own. ( true )
-
attribution_format_string
String -
(
optional
) The attribution line appears above the quoted
reply text. The format specifiers for the replied address are:
-
%+f
— the sender's name and email address. -
%+n
— the sender's name (or email address, if no name is included). -
%+a
— the sender's email address.
-
-
attribution_use_posix_locale
boolean - ( optional ) Whether the strftime(3) call for the attribution string uses the POSIX locale instead of the user's active locale. ( true )
-
forward_as_attachment
boolean or ask - ( optional ) Forward emails as attachment? (Alternative is inline). ( ask )
-
reply_prefix_list_to_strip
[String] - ( optional ) Alternative lists of reply prefixes (etc. ["Re:", "RE:", ...]) to strip.
-
reply_prefix
String -
(
optional
) The prefix to use in reply subjects. The
default prefix is "Re:".
(
`Re:`
)
RFC 2822, "Internet Message Format" has this to say on the matter:
When used in a reply, the field body MAY start with the string "Re: " (from the Latin "res", in the matter of) followed by the contents of the "Subject:" field body of the original message.
-
custom_compose_hooks
[{ name = String, command = String }] -
(
optional
) Custom compose-hooks that run shell scripts.
compose-hooks run before submitting an e-mail. They perform draft
validation and/or transformations. If a custom hook exits with an error
status or prints output to stdout and stderr, it will show up in the UI as
a notification.
Example:
[composing] editor_cmd = '~/.local/bin/vim +/^$' embed = true custom_compose_hooks = [ { name ="spellcheck", command="aspell --mode email --dont-suggest --ignore-case list" }]
-
disabled_compose_hooks
[String] -
(
optional
) Disabled compose-hooks. compose-hooks run
before submitting an e-mail. They perform draft validation and/or
transformations. If a hook encounters an error or warning, it will show up
as a notification. The currently available hooks are:
-
past-date-warn
— Warn ifDate
header value is far in the past or future. -
important-header-warn
— Warn if important headers (From
,Date
,To
,Cc
,Bcc
) are missing or invalid. -
missing-attachment-warn
— Warn ifSubject
or draft body mention attachments but they are missing. -
empty-draft-warn
— Warn if draft has no subject and no body.
-
SHORTCUTS
Default values are shown in parentheses. Shortcuts can take the following values:
- Backspace
- Left
- Right
- Up
- Down
- Home
- End
- PageUp
- PageDown
- Delete
- Insert
- Enter
- Tab
- Esc
- F1..F12
- M-char
- C-char
- char
The headings before each list indicate the map key of the shortcut list. For example for the first list titled general the configuration is typed as follows:
[shortcuts.general] next_tab = 'T'
and for listing :
[shortcuts.listing] open_entry = "Enter" exit_entry = 'i'
general
-
toggle_help
- Toggle help and shortcuts view. ( ? )
-
enter_command_mode
- Enter COMMAND mode. ( : )
-
quit
- Quit meli. ( q )
-
go_to_tab
- Go to the n th tab ( M-n )
-
next_tab
- Go to the next tab. ( T )
-
scroll_right
- Generic scroll right (catch-all setting) ( l )
-
scroll_left
- Generic scroll left (catch-all setting) ( h )
-
scroll_up
- Generic scroll up (catch-all setting) ( k )
-
scroll_down
- Generic scroll down (catch-all setting) ( j )
-
next_page
- Go to next page. (catch-all setting) ( PageDown )
-
prev_page
- Go to previous page. (catch-all setting) ( PageUp )
-
home_page
- Go to first page. (catch-all setting) ( Home )
-
end_page
- Go to last page. (catch-all setting) ( End )
-
open_entry
- Open list entry. (catch-all setting) ( Enter )
-
info_message_next
- Show next info message, if any. ( M-> )
-
info_message_previous
- Show previous info message, if any. ( M-< )
-
focus_in_text_field
- Focus on a text field. ( Enter )
-
next_search_result
- Scroll to next search result. ( n )
-
previous_search_result
- Scroll to previous search result. ( N )
listing
-
scroll_up
- Scroll up list. ( k )
-
scroll_down
- Scroll down list. ( j )
-
next_page
- Go to next page. ( PageDown )
-
prev_page
- Go to previous page. ( PageUp )
-
new_mail
- Start new mail draft in new tab. ( m )
-
next_account
- Go to next account. ( H )
-
prev_account
- Go to previous account. ( L )
-
next_mailbox
- Go to next mailbox. ( J )
-
prev_mailbox
- Go to previous mailbox. ( K )
-
open_mailbox
- Open selected mailbox ( Enter )
-
toggle_mailbox_collapse
- Toggle mailbox visibility in menu. ( Space )
-
search
- Search within list of e-mails. ( / )
-
refresh
- Manually request a mailbox refresh. ( F5 )
-
set_seen
- Set thread as seen. ( n )
-
union_modifier
- Union modifier. ( C-u )
-
diff_modifier
- Difference modifier. ( C-d )
-
intersection_modifier
- Intersection modifier. ( i )
-
select_entry
- Select thread entry. ( v )
- Increase sidebar width. ( C-f )
- Decrease sidebar width. ( C-d )
-
next_entry
- When reading a mail item, change focus on next entry according to the current sorting. ( C-n )
-
previous_entry
- When reading a mail item, change focus on previous entry according to the current sorting. ( C-p )
- Toggle visibility of side menu in mail list. ( ` )
-
focus_left
- Switch focus on the left. ( Left )
-
focus_right
- Switch focus on the right. ( Right )
-
exit_entry
- Exit e-mail entry. ( i )
-
open_entry
- Open e-mail entry. ( Enter )
-
scroll_up
- Scroll up pager. ( k )
-
scroll_down
- Scroll down pager. ( j )
-
page_up
- Go to previous pager page ( PageUp )
-
page_down
- Go to next pager pag ( PageDown )
-
scroll_up
- Scroll up list. ( k )
-
scroll_down
- Scroll down list. ( j )
-
create_contact
- Create new contact. ( c )
-
edit_contact
- Edit contact under cursor. ( e )
-
delete_contact
- Delete contact under cursor. ( d )
-
mail_contact
- Mail contact under cursor. ( m )
-
next_account
- Go to next account. ( H )
-
prev_account
- Go to previous account. ( L )
- Toggle visibility of side menu in mail list. ( ` )
-
edit
- Edit mail. ( e )
-
send_mail
- Deliver draft to mailer ( s )
-
scroll_up
- Change field focus. ( k )
-
scroll_down
- Change field focus. ( j )
To select an attachment, type its index (you will see the typed result in the command buffer on the bottom right of the status line), then issue the corresponding command.
-
add_addresses_to_contacts
- Select addresses from envelope to add to contacts. ( c )
-
edit
- Open envelope in composer. ( e )
-
go_to_url
-
Go to url of given index (with the command
url_launcher
setting in PAGER section) ( g ) -
open_attachment
-
Opens selected attachment with
xdg-open
( a ) -
open_mailcap
- Opens selected attachment according to its mailcap entry. See meli(1) FILES for the mailcap file locations. ( m )
-
open_html
- Opens html attachment in the default browser. ( v )
-
reply
- Reply to envelope. ( R )
- Reply to author. ( C-r )
-
reply_to_all
- Reply to all/Reply to list/Follow up. ( C-g )
-
forward
- Forward email. ( C-f )
-
return_to_normal_view
- Return to envelope if viewing raw source or attachment. ( r )
-
toggle_expand_headers
- Expand extra headers (References and others) ( h )
-
toggle_url_mode
-
Toggles url open mode. When active, it prepends an index next to each url
that you can select by typing the index and open by issuing
go_to_url
( u ) -
view_raw_source
- View raw envelope source in a pager. ( M-r )
-
change_charset
- Force attachment charset for decoding. ( d )
-
scroll_up
- Scroll up list. ( k )
-
scroll_down
- Scroll down list. ( j )
-
collapse_subtree
- collapse thread branches. ( h )
-
next_page
- Go to next page. ( PageDown )
-
prev_page
- Go to previous page. ( PageUp )
-
reverse_thread_order
- reverse thread order. ( C-r )
-
toggle_mailview
- toggle mail view visibility. ( p )
-
toggle_threadview
- toggle thread view visibility. ( t )
-
toggle_layout
- Toggle between horizontal and vertical layout. ( Space )
NOTIFICATIONS
Default values are shown in parentheses.
-
enable
boolean - Enable notifications. ( true )
-
script
String - ( optional ) Script to pass notifications to, with title as 1st arg and body as 2nd ( none )
-
new_mail_script
String -
(
optional
) A command to pipe new mail notifications
through (preferred over
script
), with title as 1st arg and body as 2nd. ( none ) -
xbiff_file_path
String - ( optional ) File that gets its size updated when new mail arrives. ( none )
-
play_sound
boolean - ( optional ) Play theme sound in notifications if possible. ( false )
-
sound_file
String - ( optional ) Play sound file in notifications if possible. ( none )
PAGER
Default values are shown in parentheses.
-
sticky_headers
boolean - ( optional ) Always show headers when scrolling. ( false )
-
html_filter
String - ( optional ) Pipe html attachments through this filter before display ( none )
-
html_open
String - ( optional ) A command to open html files. ( none )
-
filter
String - ( optional ) A command to pipe mail output through for viewing in pager. ( none )
-
format_flowed
bool - ( optional ) Respect format=flowed ( true )
-
split_long_lines
bool - ( optional ) Split long lines that would overflow on the x axis. ( true )
-
minimum_width
num - ( optional ) Minimum text width in columns. ( 80 )
-
auto_choose_multipart_alternative
boolean -
(
optional
) Choose
text/html
alternative iftext/plain
is empty inmultipart/alternative
attachments. ( true ) -
show_date_in_my_timezone
boolean -
(
optional
) Show
Date
: in local timezone ( true ) -
url_launcher
String - ( optional ) A command to launch URLs with. The URL will be given as the first argument of the command. ( xdg-open )
-
show_extra_headers
[String] -
(
optional
) Extra headers to display, if present, in the
default header preamble of the pager. This setting is useful especially
when used per-folder or per-account. For example, if you use
rss2email
(See
r2e(1)
) the e-mail you will receive
will have the
X-RSS-Feed
header by default. You can show them only in the folder where you keep
your feed items:
[accounts."personal".mailboxes] INBOX = {} "INBOX/Sent" = { sort_order=0 } "INBOX/Feeds" = { pager.show_extra_headers = ["X-RSS-Feed"] }
LISTING
Default values are shown in parentheses.
-
(
optional
)
Show auto-hiding scrollbar in accounts sidebar menu. ( true ) -
datetime_fmt
String - ( optional ) Datetime formatting passed verbatim to strftime(3) . ( %Y-%m-%d %T )
-
recent_dates
Boolean - ( optional ) Show recent dates as `X {minutes,hours,days} ago`, up to 7 days. ( true )
-
filter
Query -
(
optional
) Show only envelopes matching this query. (For
query syntax see
meli(1)
QUERY ABNF
SYNTAX) (
None
)
Example:
filter = "not flags:seen" # show only unseen messages
-
index_style
String - Sets the way mailboxes are displayed.
- ( optional ) Sets the string to print in the mailbox tree for a level where its root has a sibling. See example below for a clear explanation and examples.
- ( optional ) Sets the string to print in the mailbox tree for a level where its root has no sibling.
- ( optional ) Sets the string to print in the mailbox tree for a leaf level where its root has a sibling.
- ( optional ) Sets the string to print in the mailbox tree for a leaf level where its root has no sibling.
- ( optional ) Sets the character to print as the divider between the accounts list and the message list.
- ( optional ) This is the width of the right container to the entire screen width. ( 90 )
-
unseen_flag
Option<String> - Flag to show if thread entry contains unseen mail. ( ● )
-
thread_snoozed_flag
Option<String> - Flag to show if thread has been snoozed. ( 💤 )
-
selected_flag
Option<String> - Flag to show if thread entry has been selected. ( ☑️ )
-
attachment_flag
Option<String> - Flag to show if thread entry contains attachments. ( 📎 )
-
thread_subject_pack
bool - Should threads with differentiating Subjects show a list of those subjects on the entry title? ( true )
-
threaded_repeat_identical_from_values
bool - In threaded listing style, repeat identical From column values within a thread. Not repeating adds empty space in the From column which might result in less visual clutter. ( false )
- Show relative indices in menu mailboxes to quickly help with jumping to them. ( true )
-
relative_list_indices
bool - Show relative indices in listings to quickly help with jumping to them. ( true )
- Start app with sidebar hidden. ( false )
Examples of sidebar mailbox tree customization
The default values
has_sibling = " " no_sibling = " "; has_sibling_leaf = " " no_sibling_leaf = " "
render a mailbox tree like the following:
0 Inbox 3 1 Archive 2 Drafts 3 Lists 4 example-list-a 5 example-list-b 6 Sent 7 Spam 8 Trash
Other possible trees:
has_sibling = " ┃" no_sibling = " " has_sibling_leaf = " ┣━" no_sibling_leaf = " ┗━"
0 Inbox 3 1 ┣━Archive 2 ┣━Drafts 3 ┣━Lists 4 ┃ ┣━example-list-a 5 ┃ ┗━example-list-b 6 ┣━Sent 7 ┣━Spam 8 ┗━Trash
A completely ASCII one:
has_sibling = " |" no_sibling = " " has_sibling_leaf = " |\_" no_sibling_leaf = " \_"
0 Inbox 3 1 |\_Archive 2 |\_Drafts 3 |\_Lists 4 | |\_example-list-a 5 | \_example-list-b 6 |\_Sent 7 |\_Spam 8 \_Trash
TAGS
Default values are shown in parentheses.
-
colours
hash table String[Color] - ( optional ) Set UI colors for tags
- ( optional ) Hide tags (not the tagged messages themselves)
Example:
[tags] # valid inputs: #HHHHHH, #ABC -> #AABBCC, XTERM_NAME, 0-255 byte colors = { signed="#Ff6600", replied="DeepSkyBlue4", draft="#f00", replied="8" } [accounts.dummy] ... [accounts.dummy.mailboxes] # per mailbox override: "INBOX" = { tags.ignore_tags=["inbox", ] }
PGP
Default values are shown in parentheses.
-
auto_verify_signatures
boolean - Auto verify signed e-mail according to RFC3156 ( true )
-
auto_decrypt
boolean - ( optional ) Always decrypt encrypted e-mail ( true )
-
auto_sign
boolean - ( optional ) Always sign sent messages ( false )
-
auto_encrypt
boolean - ( optional ) Always encrypt sent messages ( false )
-
sign_key
String - ( optional ) ID of key to be used for signatures ( none )
-
decrypt_key
String - ( optional ) ID of key to be used for decryption ( none )
-
encrypt_key
String - ( optional ) ID of key to be used for encryption ( none )
-
auto_remote_lookup
boolean - ( optional ) Allow remote lookups ( false )
-
remote_lookup_mechanisms
LocateKey -
(
optional
) Remote lookup mechanisms. Use comma to
separate values.
(
Local,WKD
)
Possible mechanisms:
TERMINAL
Default values are shown in parentheses.
-
theme
String - ( optional ) Theme name to use. ( dark )
-
ascii_drawing
boolean - ( optional ) If true, box drawing will be done with ASCII characters. ( false )
-
use_color
boolean - ( optional ) If false, no ANSI colors are used. ( true )
-
window_title
String - ( optional ) Set window title in xterm compatible terminals An empty string means no window title is set. ( meli )
-
file_picker_command
String -
(
optional
) Set command that prints file paths in stderr,
separated by NULL bytes. Used with
add-attachment-file-picker
when composing new mail. ( None ) -
themes
hash table String[String[Attribute]] -
Define UI themes. See
meli-themes(5)
for details.
[terminal] theme = "themeB" [terminal.themes.themeA] "mail.view.body" = {fg = "HotPink3", bg = "LightSalmon1"} ... [terminal.themes.themeB] "mail.view.body" = {fg = "CadetBlue", bg = "White"} ... [terminal.themes.themeC] ...
-
use_mouse
bool -
Use mouse events. This will disable text selection, but you will be able
to resize some widgets. This setting can be toggled with
toggle mouse
. ( false ) -
mouse_flag
String - String to show in status bar if mouse is active. ( 🖱️ )
-
progress_spinner_sequence
Either < Integer, ProgressSpinner > -
Choose between 37 built in sequences (integers between 0-36) or define
your own list of strings for the progress spinner animation. Set to an
empty array to disable the progress spinner.
(
20
)
Built-in sequences are:
0 ["-", "\", "|", "/"] 1 ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] 2 ["⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿"] 3 ["⣀", "⣄", "⣆", "⣇", "⣧", "⣷", "⣿"] 4 ["○", "◔", "◐", "◕", "⬤"] 5 ["□", "◱", "◧", "▣", "■"] 6 ["□", "◱", "▨", "▩", "■"] 7 ["□", "◱", "▥", "▦", "■"] 8 ["░", "▒", "▓", "█"] 9 ["░", "█"] 10 ["⬜", "⬛"] 11 ["▱", "▰"] 12 ["▭", "◼"] 13 ["▯", "▮"] 14 ["◯", "⬤"] 15 ["⚪", "⚫"] 16 ["▖", "▗", "▘", "▝", "▞", "▚", "▙", "▟", "▜", "▛"] 17 ["|", "/", "-", "\"] 18 [".", "o", "O", "@", "*"] 19 ["◡◡", "⊙⊙", "◠◠", "⊙⊙"] 20 ["◜ ", " ◝", " ◞", "◟ "] 21 ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"] 22 ["▁", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃"] 23 [ "▉", "▊", "▋", "▌", "▍", "▎", "▏", "▎", "▍", "▌", "▋", "▊", "▉" ] 24 ["▖", "▘", "▝", "▗"] 25 ["▌", "▀", "▐", "▄"] 26 ["┤", "┘", "┴", "└", "├", "┌", "┬", "┐"] 27 ["◢", "◣", "◤", "◥"] 28 ["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"] 29 ["⢎⡰", "⢎⡡", "⢎⡑", "⢎⠱", "⠎⡱", "⢊⡱", "⢌⡱", "⢆⡱"] 30 [".", "o", "O", "°", "O", "o", "."] 31 ["㊂", "㊀", "㊁"] 32 ["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "] 33 [ "🕛 ", "🕐 ", "🕑 ", "🕒 ", "🕓 ", "🕔 ", "🕕 ", "🕖 ", "🕗 ", "🕘 ", "🕙 ", "🕚 " ] 34 ["🌍 ", "🌎 ", "🌏 "] 35 [ "[ ]", "[= ]", "[== ]", "[=== ]", "[ ===]", "[ ==]", "[ =]", "[ ]", "[ =]", "[ ==]", "[ ===]", "[====]", "[=== ]", "[== ]", "[= ]" ] 36 ["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "]
Or, define an array of strings each consisting of a frame in the progress sequence indicator for a custom spinner:
-
interval_ms
u64 - ( optional ) Frame interval. (50)
-
frames
[String] - The animation frames.
Example:
progress_spinner_sequence = { interval_ms = 150, frames = [ "-", "=", "≡" ] }
-
LOG
Default values are shown in parentheses.
-
log_file
String - ( optional ) path of the log file ( $XDG_DATA_HOME/meli/meli.log )
-
maximum_level
String -
(
optional
) maximum level of messages to log. All levels
less or equal to the
maximum_level
will be appended to the log file. Available levels are, in partial order: This means that to turn logging off, setmaximum_level
to OFF . ( INFO )
SMTP Connections
Default values are shown in parentheses.
-
hostname
String - server hostname
-
port
Integer - server port
-
envelope_from
String - ( optional ) address to set as sender in SMTP transactions ( none )
-
auth
SmtpAuth - SMTP server authentication. See SmtpAuth subsection.
-
security
SmtpSecurity - ( optional ) gpg binary name or file location to use. (see SmtpSecurity subsection)
-
extensions
SmtpExtensions - ( optional ) set support for SMTP extensions if they are advertised by the server. (see SmtpExtensions subsection)
SmtpAuth
-
type
none | auto | xoauth2
For type "auto":
-
username
String -
password
SmtpPassword -
require_auth
bool - ( optional ) require authentication in every case. ( true )
For type "xoauth2":
-
token_command
String - Command to evaluate that returns an XOAUTH2 token.
-
require_auth
bool - ( optional ) require authentication in every case. ( true )
Examples:
auth = { type = "auto", username = "user", password = { type = "raw", value = "hunter2" } }
auth = { type = "auto", username = "user", password = "hunter2" }
auth = { type = "none" }
For Gmail (see Gmail OAUTH2 for details on the authentication token command):
auth = { type = "xoauth2", token_command = "TOKEN=$(python3 oauth2.py --user=xxx@gmail.com --quiet --client_id=1038[...].apps.googleusercontent.com --client_secret=[..] --refresh_token=[..] && python3 oauth2.py --user=xxx@gmail.com --generate_oauth2_string --quiet --access_token=$TOKEN" }
SmtpPassword
Examples:
password = { type = "raw", value = "hunter2" }
password = { type = "command_eval", value = "gpg2 --no-tty -q -d ~/.passwords/user.gpg" }
SmtpSecurity
Default security type is auto .
-
type
none | auto | starttls | tls -
danger_accept_invalid_certs
bool - Accept invalid SSL / TLS certificates ( false )
SmtpExtensions
-
pipelining
bool - RFC2920 ( true )
-
chunking
bool - RFC3030 ( true )
-
prdr
bool - draft-hall-prdr-00 ( true )
-
dsn_notify
String - RFC3461 ( FAILURE )
SEE ALSO
CONFORMING TO
TOML Standard
v.0.5.0
https://toml.io/en/v0.5.0
AUTHORS
Copyright 2017-2019 Manos Pitsidianakis manos@pitsidianak.is Released under the GPL, version 3 or greater. This software carries no warranty of any kind. (See COPYING for full copyright and warranty notices.)
November 11, 2022 | rendered by mandoc |
meli-themes(5) [go back]
MELI-THEMES(5) | File Formats Manual | MELI-THEMES(5) |
NAME
meli-themes
—
themes for the
meli(1)
terminal e-mail client
SYNOPSIS
meli
|
comes with two themes,
dark
(default) and
light
.
Custom themes are defined as lists of key-values in the configuration files:
The application theme is defined in the configuration as follows: [terminal] theme = "dark" |
TABLE OF CONTENTS
- DESCRIPTION
- EXAMPLES
- CUSTOM THEMES
- VALID ATTRIBUTE VALUES
- VALID COLOR VALUES
- NO COLOR
- VALID KEYS
- COLOR NAMES
- SEE ALSO
- CONFORMING TO
- AUTHORS
DESCRIPTION
Themes for
meli
are described in the
configuration language TOML, as they are key-value tables defined in the
TERMINAL section of the configuration file. Each key defines the semantic
location of the theme attribute within the application. For example,
mail.listing.compact.*
keys are settings for the
compact
mail listing style. A setting contains three
fields: fg for foreground color, bg for background color, and attrs for text
attribute.
"widget.key.label" = { fg =
"Default", bg = "Default", attrs = "Default"
}
Each field contains a value, which may be either a
color/attribute, a link (key name) or a valid alias. An alias is a string
starting with the "$" character and must be declared in advance in
the
color_aliases
or
attr_aliases
fields of a theme. An alias' value can
be any valid value, including links and other aliases, as long as they are
valid. In the case of a link the setting's real value depends on the value
of the referred key. This allows for defaults within a group of associated
values. Cyclic references in a theme results in an error:
spooky theme contains a cycle: fg:
mail.listing.compact.even -> mail.listing.compact.highlighted ->
mail.listing.compact.odd -> mail.listing.compact.even
Two themes are included by default, `light` and `dark`.
EXAMPLES
Specific settings from already defined themes can be overwritten:
[terminal] theme = "dark" [terminal.themes.dark] "mail.sidebar_highlighted_account" = { bg = "#ff4529" } "mail.listing.attachment_flag" = { fg = "#ff4529" } "mail.view.headers" = { fg = "30" } "mail.view.body" = {fg = "HotPink3", bg = "LightSalmon1"} # Linked value keys can be whatever key: "mail.listing.compact.even_unseen" = { bg = "mail.sidebar_highlighted_account" } # Linked color value keys can optionally refer to another field: "mail.listing.compact.odd_unseen" = { bg = "mail.sidebar_highlighted_account.fg" } # define new theme. Undefined settings will inherit from the default "dark" theme. [terminal.themes."hunter2"] color_aliases= { "Jebediah" = "#b4da55" } "mail.listing.tag_default" = { fg = "$Jebediah" } "mail.view.headers" = { fg = "White", bg = "Black" }
CUSTOM THEMES
Custom themes can be included in your configuration files or be saved independently in your $XDG_CONFIG_HOME/meli/themes/ directory as TOML files. To start creating a theme right away, you can begin by editing the default theme keys and values:
meli print-default-theme >
~/.config/meli/themes/new_theme.toml
new_theme.toml will now include all keys and values of the "dark" theme.
meli print-loaded-themes
will print all loaded themes with the links resolved.
VALID ATTRIBUTE VALUES
Case-sensitive.
- "Default"
- "Bold"
- "Dim"
- "Italics"
- "Underline"
- "Blink"
- "Reverse"
- "Hidden"
- Any combo of the above separated by a bitwise XOR "|" eg "Dim | Italics"
VALID COLOR VALUES
Color values are of type String with the following valid contents:
- "Default" is the terminal default. (Case-sensitive)
- Hex triplet e.g. #FFFFFF for RGB colors. Three character shorthand is also valid, e.g. #09c → #0099cc (Case-insensitive)
- 0-255 byte for 256 colors.
- xterm(1) name but with some modifications (for a full table see COLOR NAMES addendum) (Case-sensitive)
NO COLOR
To completely disable ANSI colors, there are two options:
-
Set the
use_color
option (sectionterminal
) to false, which is true by default. -
The
NO_COLOR
environmental variable, when present (regardless of its value), prevents the addition of ANSI color. When the configuration valueuse_color
is explicitly set to true by the user,NO_COLOR
is ignored.
In this mode, cursor locations (i.e., currently selected entries/items) will use the "reverse video" ANSI attribute to invert the terminal's default foreground/background colors.
VALID KEYS
- theme_default
- error_message
- highlight
- status.bar
- status.command_bar
- status.history
- status.history.hints
- status.notification
- tab.focused
- tab.unfocused
- tab.bar
- widgets.list.header
- widgets.form.label
- widgets.form.field
- widgets.form.highlighted
- widgets.options.highlighted
- mail.sidebar
- mail.sidebar_divider
- mail.sidebar_unread_count
- mail.sidebar_index
- mail.sidebar_highlighted
- mail.sidebar_highlighted_unread_count
- mail.sidebar_highlighted_index
- mail.sidebar_highlighted_account
- mail.sidebar_highlighted_account_unread_count
- mail.sidebar_highlighted_account_index
- mail.listing.compact.even
- mail.listing.compact.odd
- mail.listing.compact.even_unseen
- mail.listing.compact.odd_unseen
- mail.listing.compact.even_selected
- mail.listing.compact.odd_selected
- mail.listing.compact.even_highlighted
- mail.listing.compact.odd_highlighted
- mail.listing.compact.even_highlighted_selected
- mail.listing.compact.odd_highlighted_selected
- mail.listing.plain.even
- mail.listing.plain.odd
- mail.listing.plain.even_unseen
- mail.listing.plain.odd_unseen
- mail.listing.plain.even_selected
- mail.listing.plain.odd_selected
- mail.listing.plain.even_highlighted
- mail.listing.plain.odd_highlighted
- mail.listing.plain.even_highlighted_selected
- mail.listing.plain.odd_highlighted_selected
- mail.listing.conversations
- mail.listing.conversations.subject
- mail.listing.conversations.from
- mail.listing.conversations.date
- mail.listing.conversations.unseen
- mail.listing.conversations.highlighted
- mail.listing.conversations.selected
- mail.listing.conversations.highlighted_selected
- mail.view.headers
- mail.view.headers_names
- mail.view.headers_area
- mail.view.body
- mail.view.thread.indentation.a
- mail.view.thread.indentation.b
- mail.view.thread.indentation.c
- mail.view.thread.indentation.d
- mail.view.thread.indentation.e
- mail.view.thread.indentation.f
- mail.listing.attachment_flag
- mail.listing.thread_snooze_flag
- mail.listing.tag_default
- pager.highlight_search
- pager.highlight_search_current
COLOR NAMES
name ↓ | byte |
|
name | byte ↓ |
Aqua | 14 |
|
Black | 0 |
Aquamarine1 | 122 |
|
Maroon | 1 |
Aquamarine2 | 86 |
|
Green | 2 |
Aquamarine3 | 79 |
|
Olive | 3 |
Black | 0 |
|
Navy | 4 |
Blue | 12 |
|
Purple1 | 5 |
Blue1 | 21 |
|
Teal | 6 |
Blue2 | 19 |
|
Silver | 7 |
Blue3 | 20 |
|
Grey | 8 |
BlueViolet | 57 |
|
Red | 9 |
CadetBlue | 72 |
|
Lime | 10 |
CadetBlue1 | 73 |
|
Yellow | 11 |
Chartreuse1 | 118 |
|
Blue | 12 |
Chartreuse2 | 112 |
|
Fuchsia | 13 |
Chartreuse3 | 82 |
|
Aqua | 14 |
Chartreuse4 | 70 |
|
White | 15 |
Chartreuse5 | 76 |
|
Grey0 | 16 |
Chartreuse6 | 64 |
|
NavyBlue | 17 |
CornflowerBlue | 69 |
|
DarkBlue | 18 |
Cornsilk1 | 230 |
|
Blue2 | 19 |
Cyan1 | 51 |
|
Blue3 | 20 |
Cyan2 | 50 |
|
Blue1 | 21 |
Cyan3 | 43 |
|
DarkGreen | 22 |
DarkBlue | 18 |
|
DeepSkyBlue5 | 23 |
DarkCyan | 36 |
|
DeepSkyBlue6 | 24 |
DarkGoldenrod | 136 |
|
DeepSkyBlue7 | 25 |
DarkGreen | 22 |
|
DodgerBlue3 | 26 |
DarkKhaki | 143 |
|
DodgerBlue2 | 27 |
DarkMagenta | 90 |
|
Green4 | 28 |
DarkMagenta1 | 91 |
|
SpringGreen6 | 29 |
name ↓ | byte |
|
name | byte ↓ |
DarkOliveGreen1 | 192 |
|
Turquoise4 | 30 |
DarkOliveGreen2 | 155 |
|
DeepSkyBlue3 | 31 |
DarkOliveGreen3 | 191 |
|
DeepSkyBlue4 | 32 |
DarkOliveGreen4 | 107 |
|
DodgerBlue1 | 33 |
DarkOliveGreen5 | 113 |
|
Green2 | 34 |
DarkOliveGreen6 | 149 |
|
SpringGreen4 | 35 |
DarkOrange | 208 |
|
DarkCyan | 36 |
DarkOrange2 | 130 |
|
LightSeaGreen | 37 |
DarkOrange3 | 166 |
|
DeepSkyBlue2 | 38 |
DarkRed | 52 |
|
DeepSkyBlue1 | 39 |
DarkRed2 | 88 |
|
Green3 | 40 |
DarkSeaGreen | 108 |
|
SpringGreen5 | 41 |
DarkSeaGreen1 | 158 |
|
SpringGreen2 | 42 |
DarkSeaGreen2 | 193 |
|
Cyan3 | 43 |
DarkSeaGreen3 | 151 |
|
DarkTurquoise | 44 |
DarkSeaGreen4 | 157 |
|
Turquoise2 | 45 |
DarkSeaGreen5 | 115 |
|
Green1 | 46 |
DarkSeaGreen6 | 150 |
|
SpringGreen3 | 47 |
DarkSeaGreen7 | 65 |
|
SpringGreen1 | 48 |
DarkSeaGreen8 | 71 |
|
MediumSpringGreen | 49 |
DarkSlateGray1 | 123 |
|
Cyan2 | 50 |
DarkSlateGray2 | 87 |
|
Cyan1 | 51 |
DarkSlateGray3 | 116 |
|
DarkRed | 52 |
DarkTurquoise | 44 |
|
DeepPink8 | 53 |
DarkViolet | 128 |
|
Purple4 | 54 |
DarkViolet1 | 92 |
|
Purple5 | 55 |
DeepPink1 | 199 |
|
Purple3 | 56 |
DeepPink2 | 197 |
|
BlueViolet | 57 |
DeepPink3 | 198 |
|
Orange3 | 58 |
DeepPink4 | 125 |
|
Grey37 | 59 |
name ↓ | byte |
|
name | byte ↓ |
DeepPink6 | 162 |
|
MediumPurple6 | 60 |
DeepPink7 | 89 |
|
SlateBlue2 | 61 |
DeepPink8 | 53 |
|
SlateBlue3 | 62 |
DeepPink9 | 161 |
|
RoyalBlue1 | 63 |
DeepSkyBlue1 | 39 |
|
Chartreuse6 | 64 |
DeepSkyBlue2 | 38 |
|
DarkSeaGreen7 | 65 |
DeepSkyBlue3 | 31 |
|
PaleTurquoise4 | 66 |
DeepSkyBlue4 | 32 |
|
SteelBlue | 67 |
DeepSkyBlue5 | 23 |
|
SteelBlue3 | 68 |
DeepSkyBlue6 | 24 |
|
CornflowerBlue | 69 |
DeepSkyBlue7 | 25 |
|
Chartreuse4 | 70 |
DodgerBlue1 | 33 |
|
DarkSeaGreen8 | 71 |
DodgerBlue2 | 27 |
|
CadetBlue | 72 |
DodgerBlue3 | 26 |
|
CadetBlue1 | 73 |
Fuchsia | 13 |
|
SkyBlue3 | 74 |
Gold1 | 220 |
|
SteelBlue1 | 75 |
Gold2 | 142 |
|
Chartreuse5 | 76 |
Gold3 | 178 |
|
PaleGreen4 | 77 |
Green | 2 |
|
SeaGreen4 | 78 |
Green1 | 46 |
|
Aquamarine3 | 79 |
Green2 | 34 |
|
MediumTurquoise | 80 |
Green3 | 40 |
|
SteelBlue2 | 81 |
Green4 | 28 |
|
Chartreuse3 | 82 |
GreenYellow | 154 |
|
SeaGreen3 | 83 |
Grey | 8 |
|
SeaGreen1 | 84 |
Grey0 | 16 |
|
SeaGreen2 | 85 |
Grey100 | 231 |
|
Aquamarine2 | 86 |
Grey11 | 234 |
|
DarkSlateGray2 | 87 |
Grey15 | 235 |
|
DarkRed2 | 88 |
Grey19 | 236 |
|
DeepPink7 | 89 |
name ↓ | byte |
|
name | byte ↓ |
Grey23 | 237 |
|
DarkMagenta | 90 |
Grey27 | 238 |
|
DarkMagenta1 | 91 |
Grey3 | 232 |
|
DarkViolet1 | 92 |
Grey30 | 239 |
|
Purple2 | 93 |
Grey35 | 240 |
|
Orange4 | 94 |
Grey37 | 59 |
|
LightPink3 | 95 |
Grey39 | 241 |
|
Plum4 | 96 |
Grey42 | 242 |
|
MediumPurple4 | 97 |
Grey46 | 243 |
|
MediumPurple5 | 98 |
Grey50 | 244 |
|
SlateBlue1 | 99 |
Grey53 | 102 |
|
Yellow4 | 100 |
Grey54 | 245 |
|
Wheat4 | 101 |
Grey58 | 246 |
|
Grey53 | 102 |
Grey62 | 247 |
|
LightSlateGrey | 103 |
Grey63 | 139 |
|
MediumPurple | 104 |
Grey66 | 248 |
|
LightSlateBlue | 105 |
Grey69 | 145 |
|
Yellow5 | 106 |
Grey7 | 233 |
|
DarkOliveGreen4 | 107 |
Grey70 | 249 |
|
DarkSeaGreen | 108 |
Grey74 | 250 |
|
LightSkyBlue2 | 109 |
Grey78 | 251 |
|
LightSkyBlue3 | 110 |
Grey82 | 252 |
|
SkyBlue2 | 111 |
Grey84 | 188 |
|
Chartreuse2 | 112 |
Grey85 | 253 |
|
DarkOliveGreen5 | 113 |
Grey89 | 254 |
|
PaleGreen3 | 114 |
Grey93 | 255 |
|
DarkSeaGreen5 | 115 |
Honeydew2 | 194 |
|
DarkSlateGray3 | 116 |
HotPink | 205 |
|
SkyBlue1 | 117 |
HotPink1 | 206 |
|
Chartreuse1 | 118 |
HotPink2 | 169 |
|
LightGreen | 119 |
name ↓ | byte |
|
name | byte ↓ |
HotPink3 | 132 |
|
LightGreen1 | 120 |
HotPink4 | 168 |
|
PaleGreen1 | 121 |
IndianRed | 131 |
|
Aquamarine1 | 122 |
IndianRed1 | 167 |
|
DarkSlateGray1 | 123 |
IndianRed2 | 204 |
|
Red2 | 124 |
IndianRed3 | 203 |
|
DeepPink4 | 125 |
Khaki1 | 228 |
|
MediumVioletRed | 126 |
Khaki3 | 185 |
|
Magenta4 | 127 |
LightCoral | 210 |
|
DarkViolet | 128 |
LightCyan2 | 195 |
|
Purple | 129 |
LightCyan3 | 152 |
|
DarkOrange2 | 130 |
LightGoldenrod1 | 227 |
|
IndianRed | 131 |
LightGoldenrod2 | 222 |
|
HotPink3 | 132 |
LightGoldenrod3 | 179 |
|
MediumOrchid3 | 133 |
LightGoldenrod4 | 221 |
|
MediumOrchid | 134 |
LightGoldenrod5 | 186 |
|
MediumPurple2 | 135 |
LightGreen | 119 |
|
DarkGoldenrod | 136 |
LightGreen1 | 120 |
|
LightSalmon2 | 137 |
LightPink1 | 217 |
|
RosyBrown | 138 |
LightPink2 | 174 |
|
Grey63 | 139 |
LightPink3 | 95 |
|
MediumPurple3 | 140 |
LightSalmon1 | 216 |
|
MediumPurple1 | 141 |
LightSalmon2 | 137 |
|
Gold2 | 142 |
LightSalmon3 | 173 |
|
DarkKhaki | 143 |
LightSeaGreen | 37 |
|
NavajoWhite3 | 144 |
LightSkyBlue1 | 153 |
|
Grey69 | 145 |
LightSkyBlue2 | 109 |
|
LightSteelBlue3 | 146 |
LightSkyBlue3 | 110 |
|
LightSteelBlue | 147 |
LightSlateBlue | 105 |
|
Yellow6 | 148 |
LightSlateGrey | 103 |
|
DarkOliveGreen6 | 149 |
name ↓ | byte |
|
name | byte ↓ |
LightSteelBlue | 147 |
|
DarkSeaGreen6 | 150 |
LightSteelBlue1 | 189 |
|
DarkSeaGreen3 | 151 |
LightSteelBlue3 | 146 |
|
LightCyan3 | 152 |
LightYellow3 | 187 |
|
LightSkyBlue1 | 153 |
Lime | 10 |
|
GreenYellow | 154 |
Magenta1 | 201 |
|
DarkOliveGreen2 | 155 |
Magenta2 | 165 |
|
PaleGreen2 | 156 |
Magenta3 | 200 |
|
DarkSeaGreen4 | 157 |
Magenta4 | 127 |
|
DarkSeaGreen1 | 158 |
Magenta5 | 163 |
|
PaleTurquoise1 | 159 |
Magenta6 | 164 |
|
Red3 | 160 |
Maroon | 1 |
|
DeepPink9 | 161 |
MediumOrchid | 134 |
|
DeepPink6 | 162 |
MediumOrchid1 | 171 |
|
Magenta5 | 163 |
MediumOrchid2 | 207 |
|
Magenta6 | 164 |
MediumOrchid3 | 133 |
|
Magenta2 | 165 |
MediumPurple | 104 |
|
DarkOrange3 | 166 |
MediumPurple1 | 141 |
|
IndianRed1 | 167 |
MediumPurple2 | 135 |
|
HotPink4 | 168 |
MediumPurple3 | 140 |
|
HotPink2 | 169 |
MediumPurple4 | 97 |
|
Orchid | 170 |
MediumPurple5 | 98 |
|
MediumOrchid1 | 171 |
MediumPurple6 | 60 |
|
Orange2 | 172 |
MediumSpringGreen | 49 |
|
LightSalmon3 | 173 |
MediumTurquoise | 80 |
|
LightPink2 | 174 |
MediumVioletRed | 126 |
|
Pink3 | 175 |
MistyRose1 | 224 |
|
Plum3 | 176 |
MistyRose3 | 181 |
|
Violet | 177 |
NavajoWhite1 | 223 |
|
Gold3 | 178 |
NavajoWhite3 | 144 |
|
LightGoldenrod3 | 179 |
name ↓ | byte |
|
name | byte ↓ |
Navy | 4 |
|
Tan | 180 |
NavyBlue | 17 |
|
MistyRose3 | 181 |
Olive | 3 |
|
Thistle3 | 182 |
Orange1 | 214 |
|
Plum2 | 183 |
Orange2 | 172 |
|
Yellow3 | 184 |
Orange3 | 58 |
|
Khaki3 | 185 |
Orange4 | 94 |
|
LightGoldenrod5 | 186 |
OrangeRed1 | 202 |
|
LightYellow3 | 187 |
Orchid | 170 |
|
Grey84 | 188 |
Orchid1 | 213 |
|
LightSteelBlue1 | 189 |
Orchid2 | 212 |
|
Yellow2 | 190 |
PaleGreen1 | 121 |
|
DarkOliveGreen3 | 191 |
PaleGreen2 | 156 |
|
DarkOliveGreen1 | 192 |
PaleGreen3 | 114 |
|
DarkSeaGreen2 | 193 |
PaleGreen4 | 77 |
|
Honeydew2 | 194 |
PaleTurquoise1 | 159 |
|
LightCyan2 | 195 |
PaleTurquoise4 | 66 |
|
Red1 | 196 |
PaleVioletRed1 | 211 |
|
DeepPink2 | 197 |
Pink1 | 218 |
|
DeepPink3 | 198 |
Pink3 | 175 |
|
DeepPink1 | 199 |
Plum1 | 219 |
|
Magenta3 | 200 |
Plum2 | 183 |
|
Magenta1 | 201 |
Plum3 | 176 |
|
OrangeRed1 | 202 |
Plum4 | 96 |
|
IndianRed3 | 203 |
Purple | 129 |
|
IndianRed2 | 204 |
Purple1 | 5 |
|
HotPink | 205 |
Purple2 | 93 |
|
HotPink1 | 206 |
Purple3 | 56 |
|
MediumOrchid2 | 207 |
Purple4 | 54 |
|
DarkOrange | 208 |
Purple5 | 55 |
|
Salmon1 | 209 |
name ↓ | byte |
|
name | byte ↓ |
Red | 9 |
|
LightCoral | 210 |
Red1 | 196 |
|
PaleVioletRed1 | 211 |
Red2 | 124 |
|
Orchid2 | 212 |
Red3 | 160 |
|
Orchid1 | 213 |
RosyBrown | 138 |
|
Orange1 | 214 |
RoyalBlue1 | 63 |
|
SandyBrown | 215 |
Salmon1 | 209 |
|
LightSalmon1 | 216 |
SandyBrown | 215 |
|
LightPink1 | 217 |
SeaGreen1 | 84 |
|
Pink1 | 218 |
SeaGreen2 | 85 |
|
Plum1 | 219 |
SeaGreen3 | 83 |
|
Gold1 | 220 |
SeaGreen4 | 78 |
|
LightGoldenrod4 | 221 |
Silver | 7 |
|
LightGoldenrod2 | 222 |
SkyBlue1 | 117 |
|
NavajoWhite1 | 223 |
SkyBlue2 | 111 |
|
MistyRose1 | 224 |
SkyBlue3 | 74 |
|
Thistle1 | 225 |
SlateBlue1 | 99 |
|
Yellow1 | 226 |
SlateBlue2 | 61 |
|
LightGoldenrod1 | 227 |
SlateBlue3 | 62 |
|
Khaki1 | 228 |
SpringGreen1 | 48 |
|
Wheat1 | 229 |
SpringGreen2 | 42 |
|
Cornsilk1 | 230 |
SpringGreen3 | 47 |
|
Grey100 | 231 |
SpringGreen4 | 35 |
|
Grey3 | 232 |
SpringGreen5 | 41 |
|
Grey7 | 233 |
SpringGreen6 | 29 |
|
Grey11 | 234 |
SteelBlue | 67 |
|
Grey15 | 235 |
SteelBlue1 | 75 |
|
Grey19 | 236 |
SteelBlue2 | 81 |
|
Grey23 | 237 |
SteelBlue3 | 68 |
|
Grey27 | 238 |
Tan | 180 |
|
Grey30 | 239 |
name ↓ | byte |
|
name | byte ↓ |
Teal | 6 |
|
Grey35 | 240 |
Thistle1 | 225 |
|
Grey39 | 241 |
Thistle3 | 182 |
|
Grey42 | 242 |
Turquoise2 | 45 |
|
Grey46 | 243 |
Turquoise4 | 30 |
|
Grey50 | 244 |
Violet | 177 |
|
Grey54 | 245 |
Wheat1 | 229 |
|
Grey58 | 246 |
Wheat4 | 101 |
|
Grey62 | 247 |
White | 15 |
|
Grey66 | 248 |
Yellow | 11 |
|
Grey70 | 249 |
Yellow1 | 226 |
|
Grey74 | 250 |
Yellow2 | 190 |
|
Grey78 | 251 |
Yellow3 | 184 |
|
Grey82 | 252 |
Yellow4 | 100 |
|
Grey85 | 253 |
Yellow5 | 106 |
|
Grey89 | 254 |
Yellow6 | 148 |
|
Grey93 | 255 |
SEE ALSO
CONFORMING TO
TOML Standard v.0.5.0 https://toml.io/en/v0.5.0
AUTHORS
Copyright 2017-2019 Manos Pitsidianakis manos@pitsidianak.is Released under the GPL, version 3 or greater. This software carries no warranty of any kind. (See COPYING for full copyright and warranty notices.)
November 11, 2022 | rendered by mandoc |
meli(7) [go back]
MELI(7) | Miscellaneous Information Manual | MELI(7) |
NAME
meli
—
Tutorial
for the meli terminal e-mail client
SYNOPSIS
meli
|
[...] |
TABLE OF CONTENTS
- DESCRIPTION
- INTRODUCTION
-
INTERACTING WITH
meli
- MODES
- ACTIVE SHORTCUTS POPUP
- MAIN VIEW
- MAIL LIST
- PAGER
- MAIL VIEW
- COMPOSING
- THEMES
- SEE ALSO
- AUTHORS
DESCRIPTION
meli
is a terminal mail client aiming for
extensive and user-frendly configurability.
^^ .-=-=-=-. ^^ ^^ (`-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ ( `-=-=-=-(@)-=-=-` ) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-=-=-=-`) ^^ (`-=-=-=-=-=-=-`) ^^ ^^ (`-=-=-=-=-`) `-=-=-=-=-` ^^
INTRODUCTION
To quit
meli
press
q
(
shortcuts.general.
quit
)
at any time. When launched for the first time,
meli
will search for its configuration directory,
$XDG_CONFIG_HOME/meli/
. If it doesn't exist, you
will be asked if you want to create one and presented with a sample
configuration file
(
$XDG_CONFIG_HOME/meli/config.toml
) that includes
the basic settings required for setting up accounts allowing you to copy and
edit right away. See
meli.conf(5)
for
the available configuration options.
At any time, you may press ? ( shortcuts.general. toggle_help ) for a searchable list of all available actions and shortcuts, along with every possible setting and command that your version supports.
Each time a shortcut is mentioned in this document, you will find a parenthesis next to it with the name of the shortcut setting along with its section in the configuration settings so that you can modify it if you wish.
For example, to set the toggle_help shortcut mentioned in the previous paragraph, add the following to your configuration:
[shortcuts] general.toggle_help = 'F1'
Or alternatively:
[shortcuts.general] toggle_help = 'F1'
To go to the next tab on the right, press T ( shortcuts.general. next_tab ).
INTERACTING
WITH
meli
You will be interacting with
meli
in four
primary ways:
1. keyboard shortcuts in NORMAL mode. |
2. commands with arguments in COMMAND mode. |
3. regular text input in text input widgets in INSERT mode. |
4. any kind of input that gets passed directly into an embedded terminal in EMBED mode. |
MODES
meli
is a modal application, just like
vi(1)
. This means that pressing the same keys
in different modes would yield different results. This allows you to
separate how the input is interpreted without the need to focus your input
with a mouse.
- NORMAL
-
This is the default mode of
meli
. All keyboard shortcuts work in this mode. - COMMAND
- Commands are issued in COMMAND mode, by default started with : ( shortcuts.general. enter_command_mode ) and exited with Esc key.
- EMBED
-
This is the mode of the embed terminal emulator. To exit an embedded
application, issue
Ctrl-C
to kill it or
Ctrl-Z
to stop the program and follow the instructions on
meli
to exit. - INSERT
- This mode is entered when pressing Enter on a cursor selected text input field, and it captures all input as text input. It is exited with the Esc key.
ACTIVE SHORTCUTS POPUP
By pressing ? ( shortcuts.general. toggle_help ) at any time, the shortcuts popup display status gets toggled. You can find all valid shortcuts for the current UI state you are in.
┌─shortcuts──Press ? to close────────────────────────────────┐ │ ▀│ │ use COMMAND "search" to find shortcuts █│ │ Use Up, Down, Left, Right to scroll. █│ │ █│ │ pager █│ │ █│ │ PageDown page_down █│ │ PageUp page_up │ │ j scroll_down │ │ k scroll_up │ │ │ │ view mail │ │ │ │ c add_addresses_to_contacts │ │ e edit │ │ u toggle_url_mode │ │ a open_attachment │ │ m open_mailcap │ │ R reply │ │ C-r reply_to_author │ │ C-g reply_to_all │ │ C-f forward │ │ M-r view_raw_source │ │ h toggle_expand_headers ▄│ └────────────────────────────────────────────────────────────┘
MAIN VIEW
┌───────────────────────┐ ├────┼──────────────────┤ │___ │ ___________ │ │ _ │ _______________ │ │ _ │__________________│ │ _ │ ___________ │ │ │ _____ │ │ │ │ └────┴──────────────────┘
This is the view you will spend more time with in
meli
.
Press Left ( shortcuts.listing. focus_right ) to switch focus on the sidebar menu. Press Right ( shortcuts.listing. focus_left ) to switch focus on the e-mail list.
On the e-mail list, press k ( shortcuts.listing. scroll_up ) to scroll up, and j ( shortcuts.listing. scroll_down ) to scroll down. Press Enter ( shortcuts.listing. open_entry ) to open an e-mail entry and i ( shortcuts.listing. exit_entry ) to exit it.
┌─────────────┉┉┉┉┉✂ │ mail▐ contact li✂ │personal account ✂ │ 0 INBOX ✂ │ 1 ┣━Sent ✂ │ 2 ┣━Lists ✂ │ 3 ┃ ┣━meli-dev ✂ │ 4 ┃ ┗━meli ✂ │ 5 ┣━Drafts ✂ │ 6 ┣━Trash ✂ │ 7 ┗━foobar ✂ ┇ 8 Trash ✂ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ✂
Press k ( shortcuts.listing. scroll_up ) to scroll up, and j ( shortcuts.listing. scroll_down ) to scroll down.
Press Enter ( shortcuts.listing. open_mailbox ) to open an entry (either a mailbox or an account name). Entering an account name will show you a page with details about the account and its network connection, depending on the backend.
While focused in the sidebar, you can
“collapse” a mailbox tree, if it has children, and you can
open it with
Space
(
shortcuts.listing.
toggle_mailbox_collapse
).
You can have mailbox trees collapsed on startup by default by setting a
mailbox's
collapsed
setting to
true
. See
meli.conf(5)
section MAILBOXES for
details.
You can increase the sidebar's width with Ctrl-p ( shortcuts.listing. increase_sidebar ) and decrease with Ctrl-o ( shortcuts.listing. decrease_sidebar ).
┌────────────────────────────────────────────────────┈┈ │NORMAL | Mailbox: Inbox, Messages: 25772, New: 3006 └────────────────────────────────────────────────────┈┈
The status bar shows which mode you are, and the status message of the current view. In the pictured example, it shows the status of a mailbox called “Inbox” with lots of e-mails.
┈┈────────────┐ 12 │ ┈┈────────────┘
Some commands may accept a number modifier. For example, scroll down commands can receive a multiplier n to scroll down n entries. Another use of the number buffer is opening URLs inside the pager. See PAGER for an explanation of interacting with URLs in e-mails.
Pressing numbers in NORMAL mode will populate this buffer. To erase it, press the Esc key.
MAIL LIST
There are four different list styles:
- "plain" which shows one line per e-mail.
- "threaded" which shows a threaded view with drawn tree structure.
- "compact" which shows one line per thread which can include multiple e-mails.
- "conversations" which shows more than one line per thread which can include multiple e-mails with more details about the thread.
│42 Fri, 02 Sep 2022 19:51 xxxxxxxxxxxxx < [PATCH 3/8] │ │43 Fri, 02 Sep 2022 19:51 xxxxxxxxxxxxx < [PATCH 2/8] │ │44 Fri, 02 Sep 2022 19:51 xxxxxxxxxxxxx < [PATCH 1/8] │ |45 Fri, 02 Sep 2022 19:51 xxxxxxxxxxxxx < [PATCH 0/8] | │46 Fri, 02 Sep 2022 18:18 xxxxxxxx <xxxxx Re: [PATCH 3│
│12 9 hours ago xxxxxxxxxxxxxxx [PATCH v3 0│ │13 9 hours ago xxxxxxxxxxxxxxx ├─>[PATCH │ │14 9 hours ago xxxxxxxxxxxxxxx ├─>[PATCH │ |15 9 hours ago xxxxxxxxxxxxxxx ├─>[PATCH | │16 9 hours ago xxxxxxxxxxxxxxx ├─>[PATCH │ │17 9 hours ago xxxxxxxxxxxxxxx └─>[PATCH │ │18 2022-08-23 01:23:51 xxxxxxxxxxxxxxx [RFC v4 00/│ │19 2022-08-23 01:23:52 xxxxxxxxxxxxxxx ├─>[RFC v4│ |20 2022-08-30 10:30:16 xxxxxxxxxxxxxxx │ └─> | │21 6 days ago xxxxxxxxxxxxxxx │ └─> │ │22 2022-08-23 01:23:53 xxxxxxxxxxxxxxx ├─>[RFC v4│
│18 2022-…:38 xxxxxxxxxxxxxxx [PATCH v3 3/3] u…_l() (2) │ |19 2022-…:49 xxxxxxxxxxxxxxx [PATCH v8 0/7] A…e (3) | │20 2022-…:10 xxxxxxxxxxxxxxx [PATCH v8 2/7] f…s (2) │ │21 2022-…:38 xxxxxxxxxxxxxxx [PATCH v8 3/7] b…s (2) │ │22 2022-…:53 xxxxxxxxxxxxxxx [PATCH v6 00/10] p…g (31) │
│[PATCH v2] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (5) │ |1 day ago▁▁▁▁xxxxxxxxxxxxx <xxxxxxxxxxxxx@xxxxxxxxxx>, xxxxx│ │ | │[PATCH v2 0/8] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│ │1 day ago▁▁▁▁xxxxxxxxxxxxxxx <xxxxxxxxxx@xxxxxxxxxxxxxx>, xx│ | │ │[PATCH 0/2] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (4) | │2 days ago▁▁▁▁xxxxxxxxxxxxxxxx <xxxxxxxx@xxxxxxxxxxx>, xxxxx│ │ │ │[PATCH 0/8] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (12) │ │2 days ago▁▁▁▁xxxxxxxxxxxxx <xxxxxxxx@xxxxxxxxxx>, xxxxxxxxx│
Performing actions on entries and/or selections.
Press v ( shortcuts.listing. select_entry ) to toggle the selection of a single entry. "select_entry" can be prefixed by a number modifier and affixed by a scrolling motion (up or down) to select multiple entries. Simple set operations can be performed on a selection with these shortcut modifiers:
- Union modifier: Ctrl-u ( shortcuts.listing. union_modifier )
- Difference modifier: Ctrl-d ( shortcuts.listing. diff_modifier )
- Intersection modifier: Ctrl-i ( shortcuts.listing. intersection_modifier )
To set an entry as "read" , use the n ( shortcuts.listing. set_seen ) shortcut. To set an entry as "unread" , use the command
set unseen
which also has its complement
set seen
action.
For e-mail backends that support tags (like "IMAP" or "notmuch") you can use the following commands on entries and selections to modify them:
tag add TAG
tag remove TAG
(see
meli.conf(5)
TAGS,
settings
colors
and
ignore_tags
for how to set tag colors and tag
visibility)
PAGER
You can open an e-mail entry by pressing Enter ( shortcuts.listing. open_entry ). This brings up the e-mail view with the e-mail content inside a pager.
┌────────────────────────────────────────────────────────────┐ │Date: Sat, 21 May 2022 16:16:11 +0300 ▀│ │From: Narrator <narrator@example.com> █│ │To: Stanley <427@example.com> █│ │Subject: The e-mail ending █│ │Message-ID: <gambheerata@example.com> █│ │ █│ │The story, and the choices, or what have you, and therefore█│ │by becoming it is! So on and so forth, until inevitably, we │ │all until the end of time. At which time, everything all at │ │once, so now you see? Blah, blah, blah, rah, rah, rah... │ │We've eaten too much and it can't be just yet. No, no! │ │Until two-hundred and forty-five! But the logic of │ │elimination, working backwards, the deduction therefore │ │becomes impossible to manufacture. It went on for nearly │ │ten thousand years, until just yesterday. Here and there, │ │forward and back, and never a moment before lunchtime. It │ │can't be! It's the only thing there is! How many billions │ │left until so much more than forever ago! Which is why I │ │say: │ │ │ │The story, and the choices, or what have you, and therefore │ │by becoming it is! So on and so forth, until inevitably, we▄│ └────────────────────────────────────────────────────────────┘
The pager is simple to use. Scroll with the following:
- Go to next pager page
- PageDown ( shortcuts.pager. page_down )
- Go to previous pager page
- PageUp ( shortcuts.pager. page_up )
- Scroll down pager.
- j ( shortcuts.pager. scroll_down )
- Scroll up pager.
- k ( shortcuts.pager. scroll_up )
All scrolling shortcuts can be prefixed with a number modifier which will act as a multiplier.
The pager can enter a special
url
mode which will
prefix all detected hyperlinks and e-mail addresses with a number inside
square brackets
u
(
shortcuts.pager.
toggle_url_mode
).
Writing down a chosen number as a number modifier
and pressing
g
(
shortcuts.envelope_view.
go_to_url
)
will attempt to open the link with the system's default open command
(
xdg-open(1)
in supported OSes, and
open(1)
on MacOS). To override with a custom
launcher, see "
pager
" configuration
setting "
url_launcher
" (see
meli.conf(5)
PAGER for more
details).
MAIL VIEW
Other things you can do when viewing e-mail:
- Most importantly, you can exit the mail view with: i ( shortcuts.listing. exit_entry )
- Add addresses from the e-mail headers to contacts: c ( shortcuts.envelope_view. add_addresses_to_contacts )
- Open an attachment by entering its index as a number modifier and pressing: a ( shortcuts.envelope_view. open_attachment )
- Open an attachment by its mailcap(5) entry by entering its index as a number modifier and pressing: m ( shortcuts.envelope_view. open_mailcap )
- Reply to envelope: R ( shortcuts.envelope_view. reply )
- Reply to author: Ctrl-r ( shortcuts.envelope_view. reply_to_author )
- Reply to all/Reply to list/Follow up: Ctrl-g ( shortcuts.envelope_view. reply_to_all )
- Forward email: Ctrl-f ( shortcuts.envelope_view. forward )
- Expand extra headers: (References and others) h ( shortcuts.envelope_view. toggle_expand_headerk )
- View envelope source in a pager: (toggles between raw and decoded source) M-r ( shortcuts.envelope_view. view_raw_source )
- Return to envelope_view if viewing raw source or attachment: r ( shortcuts.envelope_view. return_to_normal_view )
COMPOSING
To compose an e-mail, you can either start with an empty draft by pressing m ( shortcuts.listing. new_mail ) which opens a composer view in a new tab. To reply to a specific e-mail, when in envelope view you can select the specific action you want to take:
- Reply to envelope. R ( shortcuts.envelope_view. reply )
- Reply to author. Ctrl-r ( shortcuts.envelope_view. reply_to_author )
- Reply to all. Ctrl-g ( shortcuts.envelope_view. reply_to_all )
To launch your editor, press e ( shortcuts.composing. edit ). To send your draft, press s ( shortcuts.composing. send_mail ). To save the draft without submission, enter the command
close
and select "save as draft". You can return to the draft by going to your "Drafts" mailbox and selecting e ( shortcuts.envelope_view. edit ).
┌────────────────────────────────────────────────────────────┐ │ mail▐ contact list ▐ composing ▍███████████████████████│ │ COMPOSING MESSAGE │ │ Date Mon, 05 Sep 2022 17:49:19 +0300 │ │ From myself <myself@example.com>░░░░ │ │ To friend <myfriend@example.com>░░ │ │ Cc ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ Bcc ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ Subject This is my subject!░░░░░░░░░░░░ │ │ │ │ Hello friend!░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ │ │ ☐ don't sign │ │ ☐ don't encrypt │ │ no attachments │ │ │ │NORMAL | Mailbox: Inbox, Messages: 25772, New: 3006 │ └────────────────────────────────────────────────────────────┘
If you enable the embed terminal option, you can launch your
terminal editor of choice when you press
edit
.
┌────────────────────────────────────────────────────────────┐ │ mail▐ contact list ▐ composing ▍███████████████████████│ │ ╓COMPOSING MESSAGE┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╖ │ │ ║ p/v/f/h/5/T/m/07f56b6e-ec09-49d9-b8d8-f0c5a81e7826 ║ │ │ ║ 7 Date: Mon, 05 Sep 2022 18:43:10 +0300 ║ │ │ ║ 6 From: Mister Cardholder <mrholder@example.com> ║ │ │ ║ 5 To: ║ │ │ ║ 4 Cc: ║ │ │ ║ 3 Bcc: ║ │ │ ║ 2 Subject: ║ │ │ ║ 1 User-Agent: meli 0.7.2 ║ │ │ ║8 █ ║ │ │ ║~ ║ │ │ ║~ ║ │ │ ║~ ║ │ │ ║~ ║ │ │ ║ N… <6e-ec09-49d9-b8d8-f0c5a81e7826 100% ㏑:8 ℅:1║ │ │ ╚════════════════════════════════════════════════════╝ │ │ │ │ │ │ ☐ don't sign │ │ ☐ don't encrypt │ │ no attachments │ │ │ │EMBED | Mailbox: Inbox, Messages: 25772, New: 3006 │ └────────────────────────────────────────────────────────────┘
composing mail commands
-
add-attachment
PATH - in composer, add PATH as an attachment
-
add-attachment <
CMD ARGS - in composer, pipe CMD ARGS output into an attachment
-
add-attachment-file-picker
-
Launch command defined in the configuration value
file_picker_command
in meli.conf(5) TERMINAL -
add-attachment-file-picker <
CMD ARGS - Launch command CMD ARGS . The command should print file paths in stderr, separated by NULL bytes.
-
remove-attachment
INDEX - remove attachment with given index
-
toggle sign
- toggle between signing and not signing this message. If the gpg invocation fails then the mail won't be sent. See meli.conf(5) PGP for PGP configuration.
-
save-draft
- saves a copy of the draft in the Draft folder
THEMES
See
meli-themes(5)
for
documentation on how to theme
meli
.
SEE ALSO
meli(1) , meli.conf(5) , meli-themes(5) , xdg-open(1) , mailcap(5)
AUTHORS
Copyright 2017-2022 Manos Pitsidianakis manos@pitsidianak.is Released under the GPL, version 3 or greater. This software carries no warranty of any kind. (See COPYING for full copyright and warranty notices.)
https://meli-email.org https://github.com/meli/meli https://crates.io/crates/meli
November 11, 2022 | rendered by mandoc |
[go back]