init: pristine aerc 0.20.0 source

This commit is contained in:
Mortdecai
2026-04-07 19:54:54 -04:00
commit 083402a548
502 changed files with 68722 additions and 0 deletions
+321
View File
@@ -0,0 +1,321 @@
AERC-ACCOUNTS(5)
# NAME
aerc-accounts - account configuration file format for *aerc*(1)
# SYNOPSIS
The _accounts.conf_ file is used for configuring each mail account used for
aerc. It is expected to be in your XDG config home plus _aerc_, which defaults
to _~/.config/aerc/accounts.conf_. This file must be kept secret, as it may
include your account credentials. An alternate file can be specified via the
_--accounts-conf_ command line argument, see *aerc*(1).
If _accounts.conf_ does not exist, the *:new-account* configuration wizard will
be executed automatically on first startup.
This file is written in the ini format where each *[section]* is the name of an
account you want to configure, and the keys & values in that section specify
details of that account's configuration. Global options may be configured by
placing them at the top of the file, before any account-specific sections. These
can be overridden for an account by specifying them again in the account
section. In addition to the options documented here, specific transports for
incoming and outgoing emails may have additional configuration parameters,
documented on their respective man pages.
# CONFIGURATION
Note that many of these configuration options are written for you, such as
*source* and *outgoing*, when you run the account configuration wizard
(*:new-account*).
*archive* = _<folder>_
Specifies a folder to use as the destination of the *:archive* command.
Default: _Archive_
*check-mail* = _<duration>_
Specifies an interval to check for new mail. Mail will be checked at
startup, and every interval. IMAP accounts will check for mail in all
unselected folders, and the selected folder will continue to receive
PUSH mail notifications. Maildir/Notmuch folders must use
*check-mail-cmd* in conjunction with this option. See *aerc-maildir*(5)
and *aerc-notmuch*(5) for more information.
Setting this option to _0_ will disable *check-mail*
Example:
*check-mail* = _5m_
Default: _0_
*copy-to* = _<folder1,folder2,folder3...>_
Specifies a comma separated list of folders to copy sent mails to,
usually _Sent_.
By default, the mail is copied to no folders;
*copy-to-replied* = _true_|_false_
In addition of *copy-to*, also copy replies to the folder in which the
replied message is.
Default: _false_
*strip-bcc* = _true_|_false_
Strip _Bcc_ headers before sending emails. This also affects local
copies of the sent messages (*copy-to* and *copy-to-replied*).
Some email providers/backends automatically strip _Bcc_ headers before
dispatching the messages to recipients. Double check before setting this
to _false_ to avoid leaking any private information.
Default: _true_
*default* = _<folder>_
Specifies the default folder to open in the message list when aerc
configures this account.
Default: _INBOX_
*folders* = _<folder1,folder2,folder3...>_
Specifies the comma separated list of folders to display in the sidebar.
Names prefixed with _~_ are interpreted as regular expressions.
By default, all folders are displayed.
*folders-exclude* = _<folder1,folder2,folder3...>_
Specifies the comma separated list of folders to exclude from the sidebar.
Names prefixed with _~_ are interpreted as regular expressions.
Note that this overrides anything from *folders*.
By default, no folders are excluded.
*enable-folders-sort* = _true_|_false_
If _true_, folders are sorted, first by specified folders (see *folders-sort*),
then alphabetically.
Default: _true_
*folders-sort* = _<folder1,folder2,folder3...>_
Specifies a comma separated list of folders to be shown at the top of the
list in the provided order. Remaining folders will be sorted alphabetically.
*folder-map* = _<file>_
The folder map contains a one-to-one mapping of server folders to displayed
folder names. The *folder-map* file expects a
_<display-folder-name>_=_<server-folder-name>_[\*]
mapping per line (similar key=value syntax as for the *query-map* in notmuch).
The mappings are applied as they appear in the *folder-map*.
Supported backends: imap, maildir.
Note that other account options such as *archive*, *default*, *copy-to*,
*postpone*, *folders*, *folders-exclude*, *folders-sort* need to be
adjusted if one of those folders is affected by a folder mapping.
To apply the mapping to subfolders or folders with a similar prefix,
append '\*' to the server folder name.
Examples:
Remap a single folder:
```
Spam = [Gmail]/Spam
```
Remap the folder and all of its subfolders:
```
G = [Gmail]\*
```
Remove a prefix for all subfolders:
```
* = [Gmail]/\*
```
Remap all subfolders and avoid a folder collision:
```
Archive/existing = Archive\*
Archive = OldArchive\*
```
*from* = _<address>_
The default value to use for the From header in new emails. This should be
an RFC 5322-compatible string, such as _Your Name <you@example.org>_.
*aliases* = _<address1,address2,address3...>_
All aliases of the current account. These will be used to fill in the From:
field. Make sure that your email server accepts this value, or for example
use *aerc-sendmail*(5) in combination with *msmtp*(1) and
*--read-envelope-from*.
An alias can also use fnmatch-style wildcards in the address portion. These
wildcards can be useful for catch-all addresses. For example, the alias
_"Your Name" <\*@you.com>_ would ensure that when replying to emails addressed
to _hi@you.com_ and _contact@you.com_, the From: field is set to
_hi@you.com_ and _contact@you.com_, respectively. The name from the alias,
not from the matching address, is used.
*use-envelope-from* = _true_|_false_
Use the email envelope From header address instead of the *from*
configuration option when submitting messages.
Default: _false_
*headers* = _<header1,header2,header3...>_
Specifies the comma separated list of headers to fetch with the message.
By default, all headers are fetched. If any headers are specified in this
list, aerc will append it to the following list of required headers:
- date
- subject
- from
- sender
- reply-to
- to
- cc
- bcc
- in-reply-to
- message-id
- references
*headers-exclude* = _<header1,header2,header3...>_
Specifies the comma separated list of headers to exclude from fetching.
Note that this overrides anything from *headers*.
By default, no headers are excluded.
*outgoing* = _<uri>_
Specifies the transport for sending outgoing emails on this account. It
should be a connection string, and the specific meaning of each component
varies depending on the protocol in use. See each protocol's man page for
more details:
- *aerc-sendmail*(5)
- *aerc-smtp*(5)
*outgoing-cred-cmd* = _<command>_
Specifies an optional command that is run to get the outgoing account's
password. See each protocol's man page for more details.
*outgoing-cred-cmd-cache* = _true_|_false_
By default, the credentials returned by the command will be cached until
aerc is shut down. If set to _false_, *outgoing-cred-cmd* will be executed
every time an email is to be sent.
Default: _true_
*pama-auto-switch* = _true_|_false_
If _true_, the patch manager will automatically switch to an existing
project for the *:patch* command if the subject contains a '[PATCH <project>]'
segment.
Default: _false_
*pgp-auto-sign* = _true_|_false_
If _true_, all outgoing emails from this account will be signed (if a signing
key is available).
Default: _false_
*pgp-attach-key* = _true_|_false_
If _true_, attach the public signing key to signed outgoing emails.
Default: _false_
*pgp-self-encrypt* = _true_|_false_
If _true_, any outgoing encrypted email will be also encrypted for the sender
or the key specified in *pgp-key-id*.
Default: _false_
*pgp-error-level* = _none_|_warn_|_error_
The level of error to display when opportunistic encryption cannot be
performed. See *pgp-opportunistic-encryption*.
Default: _warn_
*pgp-key-id* = _<key-id>_
Specify the key id to use when signing a message. Can be either short or
long key id. If unset, aerc will look up the key by email.
*pgp-opportunistic-encrypt* = _true_|_false_
If _true_, any outgoing email from this account will be encrypted when all
recipients (including Cc and Bcc field) have a public key available in
the keyring. The level of error to display when a message can't be
encrypted can be configured with *pgp-error-level*.
Default: _false_
*postpone* = _<folder>_
Specifies the folder to save postponed messages to.
Default: _Drafts_
*send-as-utc* = _true_|_false_
Converts the timestamp of the Date header to UTC.
Default: _false_
*send-with-hostname* = _true_|_false_
Uses the local hostname in outgoing Message-Id headers instead of your
email address domain name.
Default: _false_
*source* = _<uri>_
Specifies the source for reading incoming emails on this account. This key
is required for all accounts. It should be a connection string, and the
specific meaning of each component varies depending on the protocol in use.
See each protocol's man page for more details:
- *aerc-imap*(5)
- *aerc-jmap*(5)
- *aerc-maildir*(5)
- *aerc-notmuch*(5)
*source-cred-cmd* = _<command>_
Specifies an optional command that is run to get the source account's
password. See each protocol's man page for more details.
*signature-file* = _<path>_
Specifies the file to read in order to obtain the signature to be added
to emails sent from this account.
Please note that by convention the Usenet signature style of two dashes,
followed by a space ("-- ") should be placed at the top of the signature
to separate content and signature. Aerc will add that delimiter if it is
not already present.
*signature-cmd* = _<command>_
Specifies the command to execute with _sh -c_ in order to obtain the
signature to be added to emails sent from this account. If the command
fails then *signature-file* is used instead.
*trusted-authres* = _<host1,host2,host3...>_
Comma-separated list of trustworthy hostnames from which the
Authentication Results header will be displayed. Entries can be regular
expressions. If you want to trust any host (e.g. for debugging),
use the wildcard _\*_.
*subject-re-pattern* = _<regexp>_
When replying to a message, this is the regular expression that will
be used to match the prefix of the original message's subject that has
to be removed, to create the subject line of the new message.
Typically, this will be used to avoid a repetition of the Re:
prefix in the subject header. The default will match known
translations for the common Re:.
Default: _(?i)^((AW|RE|SV|VS|ODP|R): ?)+_
# SEE ALSO
*aerc*(1) *aerc-config*(5) *aerc-imap*(5) *aerc-jmap*(5) *aerc-maildir*(5)
*aerc-notmuch*(5) *aerc-sendmail*(5) *aerc-smtp*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+220
View File
@@ -0,0 +1,220 @@
AERC-BINDS(5)
# NAME
aerc-binds - key bindings configuration file format for *aerc*(1)
# SYNOPSIS
The _binds.conf_ file is used for configuring keybindings used in the aerc
interactive client. It is expected to be in your XDG config home plus _aerc_,
which defaults to _~/.config/aerc/binds.conf_. If the file does not exist, the
built-in default will be installed. An alternate file can be specified via the
_--binds-conf_ command line argument, see *aerc*(1).
This file is written in the ini format with key bindings defined as:
*<key sequence>* = _<command>_
Where *<key sequence>* is the keystrokes pressed (in order) to invoke this
keybinding, and _<command>_ specifies keystrokes that aerc will simulate when
the keybinding is invoked. Generally this is used to execute commands, for
example:
*rq* = _:reply -q<Enter>_
Pressing *r*, then *q*, will simulate typing in _:reply -q<Enter>_, and execute
*:reply -q* accordingly. It is also possible to invoke keybindings recursively
in a similar fashion.
You may configure different keybindings for different contexts by writing them
into different *[sections]* of the ini file.
# CONTEXTS
The available contexts are:
*[messages]*
keybindings for the message list
*[view]*
keybindings for the message viewer
*[view::passthrough]*
keybindings for the viewer, when in key passthrough mode
(toggled with *:toggle-key-passthrough*)
*[compose]*
keybindings for the message composer
*[compose::editor]*
keybindings for the composer, when the editor is focused
*[compose::review]*
keybindings for the composer, when reviewing the email before it's sent
To customize the description shown on the review screen, add a comment
(_" # "_) at the end of the keybinding. Example:
p = :postpone<Enter> # I'll work on it later
The order in which bindings are defined is preserved on the review
screen. If a non-default binding is not annotated it will be displayed
without any description.
To hide a binding from the review screen, explicitly annotate it with
a _" # -"_ comment. Example:
<C-e> = :encrypt<Enter> # -
*[terminal]*
keybindings for terminal tabs
You may also configure account specific key bindings for each context:
*[context:account=*_AccountName_*]*
keybindings for this context and account, where _AccountName_ is a
regular expression that matches the account name you provided in _accounts.conf_.
Folder and context-specific bindings can be configured for message lists:
*[messages:folder=*_FolderName_*]*++
*[view:folder=*_FolderName_*]*++
*[compose:folder=*_FolderName_*]*++
*[compose::editor:folder=*_FolderName_*]*++
*[compose::review:folder=*_FolderName_*]*
keybindings under this section will be specific to the folder that
matches the regular expression _FolderName_.
Keybindings from a folder specifier will take precedence over account specifiers
Examples:
```
[messages:account=Mailbox]
c = :cf path:mailbox/** and<space>
[compose::editor:account=Mailbox2]
[compose::editor:folder=aerc]
y = :send -t aerc
[messages:folder=Drafts]
<Enter> = :recall<Enter>
[messages:folder=Archive/\d+/.*]
gi = :cf Inbox<Enter>
...
```
You may also configure global keybindings by placing them at the beginning of
the file, before specifying any context-specific sections.
Parent keybindings can be erased in the context ones by specifying an "empty"
binding:
```
[compose::review]
a = :attach<space>
d = :detach<space>
[compose::review:account=no-attachments]
a =
d =
```
# SPECIAL OPTIONS
In addition of user defined key sequences, the following special options are
available in each binding context:
*$noinherit* = _true_|_false_
If set to _true_, global keybindings will not be effective in this context.
Default: _false_
*$ex* = _<key-stroke>_
This can be set to a keystroke which will bring up the command input in this
context.
Default: _:_
*$complete* = _<key-stroke>_
This can be set to a keystroke which will trigger command completion in
this context for text inputs that support it.
Default: _<tab>_
Note: automatic command completion is disabled when simulating
keystrokes and re-enabled at the end. When *[ui].completion-min-chars*
is set to _manual_ (see *aerc-config*(5)), it is possible to end
a keybinding with the completion key to explicitly display the
completion menu. E.g.:
*o* = _:cf<space><tab>_
# SUPPORTED KEYS
In addition to letters and some characters (e.g. *a*, *RR*, *gu*, *?*, *!*,
etc.), special keys may be specified in *<angle brackets>*. The syntax for
modified or special keys is:
<C-A-S-key>
Where C is control, A is alt, S is shift, and key is the named key or character.
Valid key names are:
[[ *Name*
:- *Description*
| *<space>*
: " "
| *<semicolon>*
: ;
| *<tab>*
: Tab
| *<enter>*
: Enter
| *<up>*
: Up arrow
| *<down>*
: Down arrow
| *<right>*
: Right arrow
| *<left>*
: Left arrow
| *<pgup>*
: Page Up
| *<pgdn>*
: Page Down
| *<home>*
: Home
| *<end>*
: End
| *<insert>*
: Insert
| *<delete>*
: Delete
| *<backspace>*
: Backspace
| *<exit>*
: Exit
| *<cancel>*
: Cancel
| *<print>*
: Print screen
| *<pause>*
: Pause
| *<backtab>*
: Shift+Tab
| *<esc>*
: Escape
# SEE ALSO
*aerc*(1) *aerc-config*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
File diff suppressed because it is too large Load Diff
+164
View File
@@ -0,0 +1,164 @@
AERC-IMAP(5)
# NAME
aerc-imap - IMAP configuration for *aerc*(1)
# SYNOPSIS
aerc implements the IMAP protocol as specified by RFC 3501, with the following
IMAP extensions:
- IDLE (RFC 2177)
- LIST-STATUS (RFC 5819)
- X-GM-EXT-1 (Gmail)
# CONFIGURATION
Basic IMAP configuration may be done interactively with the *:new-account*
command.
In _accounts.conf_ (see *aerc-accounts*(5)), the following IMAP-specific options
are available:
*source* = _<scheme>_://_<username>_[_:<password>_]_@<hostname>_[_:<port>_]_?_[_<oauth2_params>_]
Remember that all fields must be URL encoded. The _@_ symbol, when URL
encoded, is _%40_.
Possible values of _<scheme>_ are:
_imap_
IMAP with STARTTLS
_imap+insecure_
IMAP without STARTTLS
_imaps_
IMAP with TLS/SSL
_imaps+insecure_
IMAP with TLS/SSL, skipping certificate verification
_imaps+oauthbearer_
IMAP with TLS/SSL using OAUTHBEARER Authentication
_<oauth2_params>_:
If specified and a _token_endpoint_ is provided, the configured password
is used as a refresh token to obtain an access token. If _token_endpoint_
is omitted, refresh token exchange is skipped, and the password acts
like an access token instead.
- _token_endpoint_ (optional)
- _client_id_ (optional)
- _client_secret_ (optional)
- _scope_ (optional)
Example:
imaps+oauthbearer://...?token_endpoint=https://...&client_id=
_imaps+xoauth2_
IMAP with TLS/SSL using XOAUTH2 Authentication. Parameters are
the same as OAUTHBEARER.
*source-cred-cmd* = _<command>_
Specifies the command to run to get the password for the IMAP
account. This command will be run using _sh -c command_. If a
password is specified in the *source* option, the password will
take precedence over this command.
Example:
source-cred-cmd = pass hostname/username
*connection-timeout* = _<duration_>
Maximum delay to establish a connection to the IMAP server. See
https://pkg.go.dev/time#ParseDuration.
Default: _30s_
*keepalive-period* = _<duration>_
The interval between the last data packet sent (simple ACKs are not
considered data) and the first keepalive probe. After the connection is
marked to need keepalive, this counter is not used any further. See
https://pkg.go.dev/time#ParseDuration.
By default, the system tcp socket settings are used.
*keepalive-probes* = _<int>_
The number of unacknowledged probes to send before considering the
connection dead and notifying the application layer.
By default, the system tcp socket settings are used.
If keepalive-period is specified, this option defaults to 3 probes.
This option is only supported on linux. On other platforms, it will be
ignored.
*keepalive-interval* = _<duration>_
The interval between subsequential keepalive probes, regardless of what
the connection has exchanged in the meantime. Fractional seconds are
truncated.
By default, the system tcp socket settings are used.
If *keepalive-period* is specified, this option defaults to _3s_.
This option is only supported on linux. On other platforms, it will be
ignored.
*check-mail-include* = _<folder1,folder2,folder3...>_
Specifies the comma separated list of folders to include when checking for
new mail with *:check-mail*. Names prefixed with _~_ are interpreted as regular
expressions. This setting is ignored if your IMAP server supports the
LIST-STATUS command, in which case all folders will be checked.
By default, all folders are included.
*check-mail-exclude* = _<folder1,folder2,folder3...>_
Specifies the comma separated list of folders to exclude when checking for
new mail with *:check-mail*. Names prefixed with _~_ are interpreted as regular
expressions. This setting is ignored if your IMAP server supports the
LIST-STATUS command, in which case all folders will be checked.
Note that this overrides anything from *check-mail-include*.
By default, no folders are excluded.
*cache-headers* = _true_|_false_
If set to _true_, headers will be cached. The cached headers will be stored
in _$XDG_CACHE_HOME/aerc_, which defaults to _~/.cache/aerc_.
Default: _false_
*cache-max-age* = _<duration>_
Defines the maximum age of cached files. Note: the longest unit of time
*cache-max-age* can be specified in is hours. Set to _0_ to disable cleaning
the cache
Default: _720h_ (30 days)
*idle-timeout* = _<duration>_
The length of time the client will wait for the server to send any final
update before the IDLE is closed.
Default: _10s_
*idle-debounce* = _<duration>_
Specifies the length of time from the last client command until the
idler starts.
Default: _10ms_
*use-gmail-ext* = _true_|_false_
If set to _true_, the X-GM-EXT-1 extension will be used if supported.
This only works for Gmail accounts.
Default: _false_
# SEE ALSO
*aerc*(1) *aerc-accounts*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+148
View File
@@ -0,0 +1,148 @@
AERC-JMAP(5)
# NAME
aerc-jmap - JMAP configuration for *aerc*(1)
# SYNOPSIS
aerc implements the JMAP protocol as specified by RFCs 8620 and 8621.
# CONFIGURATION
Basic JMAP configuration may be done interactively with the *:new-account*
command.
In _accounts.conf_ (see *aerc-accounts*(5)), the following JMAP-specific options
are available:
*source* = _<scheme>_://[_<username>_][_:<password>@_]_<hostname>_[_:<port>_]/_<path>_
Remember that all fields must be URL encoded. The _@_ symbol, when URL
encoded, is _%40_.
_<hostname>_[_:<port>_]/_<path>_ is the HTTPS JMAP session resource as
specified in RFC 8620 section 2 without the leading _https://_ scheme.
Possible values of _<scheme>_ are:
_jmap_
JMAP over HTTPS using Basic authentication.
_jmap+oauthbearer_
JMAP over HTTPS using OAUTHBEARER authentication
The username is ignored and may be left empty. If specifying the
password, make sure to prefix it with _:_ to make it explicit
that the username is empty. Or set the username to any random
value. E.g.:
```
source = jmap+oauthbearer://:s3cr3t@example.com/jmap/session
source = jmap+oauthbearer://me:s3cr3t@example.com/jmap/session
```
Your source credentials must have the _urn:ietf:params:jmap:mail_
capability.
*source-cred-cmd* = _<command>_
Specifies the command to run to get the password for the JMAP account.
This command will be run using _sh -c command_. If a password is
specified in the *source* option, the password will take precedence over
this command.
Example:
source-cred-cmd = pass hostname/username
*outgoing* = _jmap://_
The JMAP connection can also be used to send emails. No need to repeat
the URL nor any credentials. Just the URL scheme will be enough.
Your source credentials must have the _urn:ietf:params:jmap:submission_
capability.
*cache-state* = _true_|_false_
Cache all email state (mailboxes, email headers, mailbox contents, email
flags, etc.) on disk in a levelDB database located in folder
_~/.cache/aerc/<account>/state_.
The cached data should remain small, in the order of a few megabytes,
even for very large email stores. Aerc will make its best to purge
deleted/outdated information. It is safe to delete that folder when aerc
is not running and it will be recreated from scratch on next startup.
Default: _false_
*cache-blobs* = _true_|_false_
Cache all downloaded email bodies and attachments on disk as individual
files in _~/.cache/aerc/<account>/blobs/<xx>/<blob_id>_ (where _<xx>_ is
a subfolder named after the last two characters of _<blob_id>_).
Aerc will not purge the cached blobs automatically. Even when their
related emails are destroyed permanently from the server. If required,
you may want to run some periodic cleanup based on file creation date in
a crontab, e.g.:
@daily find ~/.cache/aerc/foo/blobs -type f -mtime +30 -delete
Default: _false_
*use-labels* = _true_|_false_
If set to _true_, mailboxes with the _archive_ role (usually _Archive_)
will be hidden from the directory list and replaced by an *all-mail*
virtual folder. The name of that folder can be configured via the
*all-mail* setting.
*:archive* _flat_ may still be used to effectively "tag" messages with the
hidden _Archive_ mailbox so that they appear in the *all-mail* virtual
folder. When the *all-mail* virtual folder is selected, *:archive* _flat_
should not be used and will have no effect. The messages will be grayed
out but will never be refreshed until aerc is restarted.
Also, this enables support for the *:modify-labels* (alias *:tag*)
command.
Default: _false_
*all-mail* = _<name>_
Name of the virtual folder that replaces the role=_archive_ mailbox when
*use-labels* = _true_.
Default: _All mail_
*server-ping* = _<duration>_
Interval the server should ping the client at when monitoring for email
changes. The server may choose to ignore this value. By default, no ping
will be requested from the server.
See https://pkg.go.dev/time#ParseDuration.
# NOTES
JMAP messages can be seen as "labels" or "tags". Every message must belong to
one or more mailboxes (folders in aerc). Each mailbox has a "role" as described
in _https://www.iana.org/assignments/imap-mailbox-name-attributes/_.
When deleting messages that belong only to the selected mailbox, aerc will
attempt to "move" these messages to a mailbox with the _trash_ role. If it
cannot find such mailbox or if the selected mailbox is the _trash_ mailbox, it
will effectively destroy the messages from the server.
*:delete* removes messages from the selected mailbox and effectively does the
same thing than *:tag -<selected_folder>*.
*:cp <foo>* is an alias for *:tag <foo>* or *:tag +<foo>*.
*:mv <foo>* is a compound of *:delete* and *:mv* and can be seen as an alias of
*:tag -<selected_folder> +<foo>*.
*:archive* _flat_ is an alias for *:tag -<selected_folder> +<archive>*.
# SEE ALSO
*aerc*(1) *aerc-accounts*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+58
View File
@@ -0,0 +1,58 @@
AERC-MAILDIR(5)
# NAME
aerc-maildir - maildir configuration for *aerc*(1)
# SYNOPSIS
aerc implements the maildir format.
# CONFIGURATION
Basic Maildir configuration may be done interactively with the *:new-account*
command.
The following maildir-specific options are available:
*check-mail-cmd* = _<command>_
Command to run in conjunction with *check-mail* option.
Example:
check-mail-cmd = mbsync -a
*check-mail-timeout* = _<duration>_
Timeout for the *check-mail-cmd*. The command will be stopped if it does
not complete in this interval and an error will be displayed. Increase from
the default if repeated errors occur
Default: 10s
*source* = _maildir_|_maildirpp_://_<path>_
The *source* indicates the path to the directory containing your maildirs
rather than one maildir specifically.
The path portion of the URL following _maildir://_ must be either an absolute
path prefixed by _/_ or a path relative to your home directory prefixed with
*~*. For example:
source = maildir:///home/me/mail
source = maildir://~/mail
If your maildir is using the Maildir++ directory layout, you can use the
_maildirpp://_ scheme instead:
source = maildirpp:///home/me/mail
source = maildirpp://~/mail
# SEE ALSO
*aerc*(1) *aerc-accounts*(5) *aerc-smtp*(5) *aerc-notmuch*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+122
View File
@@ -0,0 +1,122 @@
AERC-NOTMUCH(5)
# NAME
aerc-notmuch - notmuch configuration for *aerc*(1)
# SYNOPSIS
aerc supports using the notmuch email system as a backend, for fast indexing
and searching.
For this to be enabled, aerc needs to be built with notmuch support.
Refer to the installation instructions for details.
# CONFIGURATION
Basic Notmuch configuration may be done interactively with the *:new-account*
command.
In _accounts.conf_ (see *aerc-accounts*(5)), the following notmuch-specific
options are available:
*check-mail-cmd* = _<command>_
Command to run in conjunction with *check-mail* option.
Example:
check-mail-cmd = mbsync -a
*check-mail-timeout* = _<duration>_
Timeout for the *check-mail-cmd*. The command will be stopped if it does
not complete in this interval and an error will be displayed. Increase from
the default if repeated errors occur
Default: _10s_
*source* = notmuch://_<path>_
The *source* indicates the path to the directory containing your notmuch
database (usually a _.notmuch/_ folder).
The path portion of the URL following _notmuch://_ must be either an absolute
path prefixed by _/_ or a path relative to your home directory prefixed with
_~_. For example:
source = notmuch:///home/me/mail
source = notmuch://~/mail
*query-map* = _<file>_
Path to a file containing a mapping from display name to notmuch query
in the form of *<NAME>*=_<QUERY>_.
Multiple entries can be specified, one per line. Lines starting with _#_
are ignored and serve as comments.
e.g. inbox=tag:inbox and not tag:archived
*exclude-tags* = _<tag1,tag2,tag3...>_
Comma separated list of tags which will be excluded from query results,
unless explicitly mentioned in the query.
This can for example be useful if you use an _archive_ or _spam_ tag.
*maildir-store* = _<path>_
Path to the maildir store containing the message files backing the
notmuch database. This is often the same as the notmuch database path.
If specified, this option will be used by aerc to list available folders
and enable commands such as *:delete* and *:archive*.
N.B.: aerc will still always show messages and not files (under notmuch,
a single message can be represented by several files), which makes the
semantics of certain commands as *move* ambiguous. Use *multi-file-strategy*
to tell aerc how to resolve these ambiguities.
*maildir-account-path* = _<path>_
Path to the maildir account relative to the *maildir-store*.
This could be used to achieve traditional maildir one tab per account
behavior. The note on *maildir-store* also applies to this option.
*multi-file-strategy* = _<strategy>_
Strategy for file operations (e.g., move, copy, delete) on messages that are
backed by multiple files. Possible values:
- *refuse* (default): Refuse to act.
- *act-all*: Act on all files.
- *act-one*: Act on one of the files, arbitrarily chosen, and ignore the
rest.
- *act-one-delete-rest*: Like *act-one*, but delete the remaining files.
- *act-dir*: Act on all files within the current folder and ignore the rest.
Note that this strategy only works within the maildir directories; in other
directories, it behaves like *refuse*.
- *act-dir-delete-rest*: Like *act-dir*, but delete the remaining files.
Note that the strategy has no effect on cross-account operations. Copying a
message across accounts will always copy a single file, arbitrarily chosen.
Moving a message across accounts will always copy a single file, arbitrarily
chosen, and refuse to delete multiple files from the source account.
# USAGE
Notmuch shows slightly different behavior than for example imap. Some commands
are slightly different in semantics and mentioned below:
*cf* _<notmuch query>_
The change folder command allows for arbitrary notmuch queries. Performing a
*:cf* command will perform a new top-level notmuch query.
*filter* _<notmuch query>_
The filter command for notmuch backends takes in arbitrary notmuch queries.
It applies the query on the set of messages shown in the message list. This
can be used to perform successive filters/queries. It is equivalent to
performing a set of queries concatenated with "and".
# SEE ALSO
*aerc*(1) *aerc-accounts*(5) *aerc-smtp*(5) *aerc-maildir*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+195
View File
@@ -0,0 +1,195 @@
AERC-PATCH(7)
# NAME
aerc-patch - local patch management for *aerc*(1)
# SYNOPSIS
*aerc* provides support for managing local patch sets. In an email-based
software development workflow, there are usually many different locally applied
patch series for testing and reviewing. Managing the local repository can thus
be challenging. With the local patch management system, *aerc* facilitates this
bookkeeping process.
When applying a patch set, *aerc* creates a tag for those commits. With this
tag, the patch set can be tracked and later dropped if needed. Patches are
stored in a project data structure which also keeps track of the directory where
the repository is. Multiple code bases can be tracked by defining a separate
project for each.
# COMMANDS
The following *:patch* sub-commands are supported:
*:patch init* [*-f*] [_<project>_]
Creates a new project _<project>_. If _<project>_ is not defined, *aerc*
will use the last element of the current directory path. It also
performs a search for a supported repository in the current directory.
*-f*: Overwrite an existing project.
*:patch list* [*-a*]++
*:patch ls* [*-a*]
Lists the current project with the tracked patch sets.
*-a*: Lists all projects.
*:patch apply* [*-c* _<cmd>_] [*-w* _<commit-ish>_] _<tag>_
Applies the selected message(s) to the repository of the current
project. It uses the *:pipe* command for this and keeps track of the
applied patch.
Completions for the _<tag>_ are available based on the subject lines of
the selected or marked messages.
*-c* _<cmd>_: Apply patches with the provided _<cmd>_. Any occurrence of
'%r' in the command string will be replaced with the root directory of
the current project. Note that this approach is not recommended in
general and should only be used for very specific purposes, i.e. when
a maintainer is applying a patch set via a separate script to deal with
git trailers.
*aerc* will propose completions for the _<tag>_ based on the subject
lines of the selected or marked messages.
Example:
```
:patch apply -c "git -C %r am -3" fix_v2
```
*-w* _<commit-ish>_: Create a linked worktree for the current project at
_<commit-ish>_ and apply the patches to the linked worktree. A new
project is created to store the worktree information. When this project
is deleted, the worktree will be deleted as well.
Example:
```
:patch apply -w origin/master fix_v2
```
*:patch drop* _<tag>_
Drops the patch _<tag>_ from the repository.
*:patch rebase* [_<commit-ish>_]
Rebases the patch data on commit _<commit-ish>_.
If the _<commit-ish>_ is omitted, *aerc* will use the base commit of
the current project for the rebase.
*:patch find* [*-f*] _<commit-hash>_
Searches the messages in the current folder of the current account for
the message associated with this _commit hash_ based on the subject line.
If a Message-ID is linked to a commit (i.e. when *:patch apply* was
used) then *find* will first perform a search for the Message-ID.
*-f*: Filter the message list instead of just showing the search
results. Only effective when search for Message-ID was not successful.
*:patch cd*
Changes the working directory to the root directory of the current
project.
*:patch term* [_<cmd>_]
Opens a shell (or runs _<cmd>_) in the working directory of the
current project.
*:patch switch* _<project>_
Switches the context to _<project>_.
*:patch unlink* [_<project>_]
Deletes all patch tracking data for _<project>_ and unlinks it from
a repository. If no project is provided, the current project is deleted.
*:patch*
Root command for path management. Use it to run the sub-commands.
# GETTING STARTED
Make sure you have an initialized project (see *:patch init*).
Now, there are two ways to get patches under the local patch management system:
- Apply patches with the *:patch apply* command. This will automatically create
a new tag for the applied commits.
- Use *:patch rebase*. If there are some existing local patches in the commit
history that should be managed by *aerc*, you can run *:patch rebase
<commit-ish>* and set the _<commit-ish>_ to the commit before the first patch
that you want to include. For a *git* repository which has an upstream called
*origin*, you would run *:patch rebase origin/master*.
# EXAMPLE
The following example demonstrates how to manage the local patch sets.
First, a project needs to be initialized. This is done by changing into the
working directory where the project's repository is located. For this example,
let's assume we have a project called _bar_ in the directory
_/home/user/foo/bar_.
```
:cd /home/user/foo/bar
```
and then creating a new project with
```
:patch init
```
If no name is provided to *:patch init*, *aerc* will use the last element of the
working directory path (here: _bar_).
Now the patch tracking is ready for action. Go to the message list, mark a patch
series and apply it:
```
:patch apply fix_v2
```
This will apply the selected patch set and assigns the _fix_v2_ tag to those
commits. The tag helps to keep the commits grouped together, and will be helpful
when we want to drop this exact patch set at a later point.
With *:patch list* you can verify that the patch set was correctly applied.
If there is a change in the underlying repository (e.g. by rebasing to
upstream), the hashes of the applied local commits can change. *:patch list* can
detect such a change and will then propose to rebase the internal data. To
do this, run
```
:patch rebase
```
This will open an editor where you can adjust the correct tags again. You could
also change the rebase point by providing an optional argument (e.g. a commit
hash, or even _HEAD~3_ or _origin/master_, etc.).
To drop a patch set, use the tag that was assigned during applying:
```
:patch drop fix_v2
```
And to delete the project data in *aerc*:
```
:patch unlink bar
```
# SUPPORTED REVISION CONTROL SYSTEMS
The supported revision control systems are currently: *git*.
# SEE ALSO
*aerc*(1)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+129
View File
@@ -0,0 +1,129 @@
AERC-SEARCH(1)
# NAME
aerc-search - search and filter patterns and options for *aerc*(1)
# SYNTAX
This syntax is common to all backends.
*:filter* [*-rubae*] [*-x* _<flag>_] [*-X* _<flag>_] [*-H* _<header>:[<value>]_] [*-f* _<from>_] [*-t* _<to>_] [*-c* _<cc>_] [*-d* _<start[..end]>_] [_<terms>_...]++
*:search* [*-rubae*] [*-x* _<flag>_] [*-X* _<flag>_] [*-H* _<header>:[<value>]_] [*-f* _<from>_] [*-t* _<to>_] [*-c* _<cc>_] [*-d* _<start[..end]>_] [_<terms>_...]
Searches the current folder for messages matching the given set of
conditions.
*:filter* restricts the displayed messages to only the search results.
Each space separated term of _<terms>_, if provided, is searched
case-insensitively among subject lines unless *-b* or *-a* are
provided.
*-r*: Search for read messages
*-u*: Search for unread messages
*-x* _<flag>_, *-X* _<flag>_: Restrict search to messages with or without _<flag>_
Use *-x* to search for messages with the flag set.
Use *-X* to search for messages without the flag set.
Possible values are:
_Seen_
Read messages
_Answered_
Replied messages
_Forwarded_
Forwarded messages
_Flagged_
Flagged messages
_Draft_
Draft messages
*-H* _<header>:[<value>]_:
Search in the headers of the messages for a specific _<header>_ that matches _<value>_,
_<value>_ can be omitted to only search for a _<header>_.
If either the _<header>_ or the _<value>_ contain a space then the whole argument needs
to be escaped with quotes, note: spaces around _<value>_ are trimmed.
*-b*: Search in the body of the messages
*-a*: Search in the entire text of the messages
*-e*: Instruct the backend to use a custom search extension
(such as X-GM-EXT-1 if available). Search terms are expected
in _<terms>_; other flags will be ignored.
*-f* _<from>_: Search for messages from _<from>_
*-t* _<to>_: Search for messages to _<to>_
*-c* _<cc>_: Search for messages cc'ed to _<cc>_
*-d* _<since[..until]>_:
Search for messages within a particular date range between
_since_ and _until_, excluding the latter (in mathematical
notation: search for messages in the [_since_, _until_)
interval). _until_ can be omitted to only search for _<since>_
to present.
Spaces and underscores are allowed in relative dates to improve
readability.
_YYYY-MM-DD_
*today*, *yesterday*
*(this|last) (year|month|week)*
*Weekdays*, *Monthnames*
Can also be abbreviated, so Monday..Tuesday can be written
as Mon..Tue and February..March as Feb..Mar.
_<N>_ *(y[ear]|m[onth]|w[eek]|d[ay])*
_<N>_ is a positive integer that represents the number
of time units in the past. Multiple relative terms
can be accumulated. The units can also be abbreviated
by a single letter such that yesterday would
correspond to _1d_ (equivalent to _1 day_ or _1_day_)
and _8 days ago_ would be either _1w1d_ or _8d_.
# CUSTOM IMAP EXTENSIONS
The Gmail IMAP extension (X-GM-EXT-1) can be used for searching and filtering.
To use this custom extension, make sure it is activated (see *aerc-imap*(5))
and use the extension *-e* flag in your *:filter* or *:search* commands.
Example:
:filter -e filename:pdf from:bob
:filter -e has:attachment newer_than:2d
:search -e is:read is:starred
:search -e list:~rjarry/aerc-devel@lists.sr.ht
# NOTMUCH
For notmuch, it is possible to avoid using the above flags and only rely on
notmuch search syntax.
*:filter* _query_...++
*:search* _query_...
You can use the full notmuch query language as described in
*notmuch-search-terms*(7).
The query will only apply on top of the active folder query.
Example, jump to next unread:
:search tag:unread
# SEE ALSO
*aerc*(1) *aerc-config*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+32
View File
@@ -0,0 +1,32 @@
AERC-SENDMAIL(5)
# NAME
aerc-sendmail - sendmail configuration for *aerc*(1)
# SYNOPSIS
aerc can defer to sendmail for the delivery of outgoing messages.
# CONFIGURATION
Basic sendmail configuration may be done interactively with the *:new-account*
command.
In _accounts.conf_ (see *aerc-accounts*(5)), the following sendmail-specific
options are available:
*outgoing* = _</path/to/sendmail>_
This should be set to the path to the sendmail binary you wish to use,
which is generally _/usr/sbin/sendmail_. aerc will execute it with a list of
recipients on the command line and pipe the message to deliver to stdin.
# SEE ALSO
*aerc*(1) *aerc-accounts*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+79
View File
@@ -0,0 +1,79 @@
AERC-SMTP(5)
# NAME
aerc-smtp - SMTP configuration for *aerc*(1)
# SYNOPSIS
aerc implements the SMTP protocol as specified by RFC 5321.
# CONFIGURATION
Basic SMTP configuration may be done interactively with the *:new-account*
command.
In _accounts.conf_ (see *aerc-accounts*(5)), the following SMTP-specific options
are available:
*outgoing* = _<scheme>_[_+<auth>_]://_<username>_[_:<password>_]_@<hostname>_[_:<port>_]?[_<oauth2_params>_]
Remember that all fields must be URL encoded. The _@_ symbol, when URL
encoded, is _%40_.
The value of _<scheme>_ can be:
_smtp_
SMTP with STARTTLS
_smtp+insecure_
SMTP without STARTTLS
_smtps_
SMTP with TLS/SSL
Additionally, you can specify an authentication mechanism like so:
_none_
No authentication is required to use this SMTP server. You may omit the
username and password in this case.
_plain_
Authenticate with a username and password using AUTH PLAIN. This is the
default behavior.
_login_
Authenticate with a username and password using AUTH LOGIN. This is an obsolete
protocol, but is required for some common webmail providers.
_oauthbearer_
SMTP with TLS/SSL using OAUTHBEARER Authentication. See
documentation in *aerc-imap*(5) for usage.
_xoauth2_
SMTP with TLS/SSL using XOAUTH2 Authentication. See
documentation in *aerc-imap*(5) for usage.
*outgoing-cred-cmd* = _<command>_
Specifies the command to run to get the password for the SMTP
account. This command will be run using _sh -c [command]_. If a
password is specified in the *outgoing* option, the password will
take precedence over this command.
Example:
outgoing-cred-cmd = pass hostname/username
*smtp-domain* = _<domain>_
Local domain name to use in the HELO/EHLO SMTP command. Set this to a fully
qualified domain name if the server requires it as an antispam measure.
Default: _localhost_
# SEE ALSO
*aerc*(1) *aerc-accounts*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+466
View File
@@ -0,0 +1,466 @@
AERC-STYLESETS(7)
# NAME
aerc-stylesets - styleset file specification for *aerc*(1)
# SYNOPSIS
aerc uses a simple configuration syntax to configure the styleset for
its ui.
# STYLESET CONFIGURATION
The styleset is described as *<object>*.*<attribute>* = _<value>_ pairs.
For example, in the line below, the foreground color of the
style object *msglist_unread* is set to _cornflowerblue_
*msglist_unread*.*fg* = _cornflowerblue_
The configuration also allows wildcard matching of the keys
to configure multiple style objects at a time.
# ATTRIBUTES
The following options are available to be modified for each of the
style objects.
*<object>*.*fg* = _<color>_
The foreground color of the style object is set.
*<object>*.*bg* = _<color>_
The background color of the style object is set.
*<object>*.*bold* = _true_|_false_|_toggle_
The bold attribute of the style object is set/unset.
*<object>*.*blink* = _true_|_false_|_toggle_
The blink attribute of the style object is set/unset.
The terminal needs to support blinking text.
*<object>*.*underline* = _true_|_false_|_toggle_
The underline attribute of the style object is set/unset.
The terminal needs to support underline text.
*<object>*.*italic* = _true_|_false_|_toggle_
The italic attribute of the style object is set/unset.
The terminal needs to support italic text.
*<object>*.*dim* = _true_|_false_|_toggle_
The dim attribute of the style object is set/unset.
The terminal needs to support half-bright text.
*<object>*.*reverse* = _true_|_false_|_toggle_
Reverses the color of the style object. Exchanges the foreground
and background colors.
If the value is _false_, it doesn't change anything.
*<object>*.*normal* = true
All the attributes of the style object are unset.
The value doesn't matter.
*<object>*.*default* = true
Set the style object to the default style of the context. Usually
based on the terminal.
The value doesn't matter.
# STYLE OBJECTS
The style objects represent the various ui elements or ui instances for
styling.
[[ *Style Object*
:[ *Description*
| *default*
: The default style object used for normal ui elements while not using specialized configuration.
| *error*
: The style used to show errors.
| *warning*
: The style used when showing warnings.
| *success*
: The style used for success messages.
| *title*
: The style object used to style titles in ui elements.
| *header*
: The style object used to style headers in ui elements.
| *statusline_default*
: The default style applied to the statusline.
| *statusline_error*
: The style used for error messages in statusline.
| *statusline_success*
: The style used for success messages in statusline.
| *msglist_default*
: The default style for messages in a message list.
| *msglist_unread*
: Unread messages in a message list.
| *msglist_read*
: Read messages in a message list.
| *msglist_flagged*
: The messages with the flagged flag.
| *msglist_deleted*
: The messages marked as deleted.
| *msglist_marked*
: The messages with the marked flag.
| *msglist_result*
: The messages which match the current search.
| *msglist_answered*
: The messages marked as answered.
| *msglist_forwarded*
: The messages marked as forwarded.
| *msglist_gutter*
: The message list gutter.
| *msglist_pill*
: The message list pill.
| *msglist_thread_folded*
: Visible messages that have folded thread children.
| *msglist_thread_context*
: The messages not matching the mailbox / query, displayed for context.
| *msglist_thread_orphan*
: Threaded messages that have a missing parent message.
| *dirlist_default*
: The default style for directories in the directory list.
| *dirlist_unread*
: The style used for directories with unread messages
| *dirlist_recent*
: The style used for directories with recent messages
| *part_switcher*
: Background for the part switcher in the message viewer.
| *part_filename*
: Attachment file name in the part switcher.
| *part_mimetype*
: Attachment/part MIME type in the part switcher.
| *completion_default*
: The default style for the completion engine.
| *completion_description*
: Completion item descriptions.
| *completion_gutter*
: The completion gutter.
| *completion_pill*
: The completion pill.
| *tab*
: The style for the tab bar.
| *stack*
: The style for ui stack element.
| *spinner*
: The style for the loading spinner.
| *border*
: The style used to draw borders (only the *bg* color is used unless you customize *border-char-vertical* and/or *border-char-horizontal* in _aerc.conf_).
| *selector_default*
: The default style for the selector ui element.
| *selector_focused*
: The focused item in a selector ui element.
| *selector_chooser*
: The item chooser in a selector ui element.
These next style objects only affect the built-in *colorize* filter and must be
declared under a *[viewer]* section of the styleset file.
[[ *Style Object*
:[ *Description*
| *url*
: URLs.
| *header*
: RFC-822-like header names.
| *signature*
: Email signatures.
| *diff_meta*
: Patch diff meta lines.
| *diff_chunk*
: Patch diff chunks.
| *diff_chunk_func*
: Patch diff chunk function names.
| *diff_add*
: Patch diff added lines.
| *diff_del*
: Patch diff deleted lines.
| *quote_1*
: First level quoted text.
| *quote_2*
: Second level quoted text.
| *quote_3*
: Third level quoted text.
| *quote_4*
: Fourth level quoted text.
| *quote_x*
: Above fourth level quoted text.
User defined styles can be used to style arbitrary strings in go-templates (see
_.Style_ in *aerc-templates*(7)). User styles must be defined in the _[user]_
ini section. Styles can be referenced by their name (e.g. _red.fg_ is named
"red").
Example:
```
[user]
red.fg=red
```
User styles are layered with other styles applied to the context in which they
are rendered. The user style colors (fg and/or bg) will only be effective if the
context style does not define any. Other boolean attributes will be merged with
the underlying style boolean attributes.
For example, if the context style is:
fg=red bold
And the inline style is:
fg=yellow italic underline
The effective style will be:
fg=red bold italic underline
# FNMATCH STYLE WILDCARD MATCHING
The styleset configuration can be made simpler by using the fnmatch
style wildcard matching for the style object.
The special characters used in the fnmatch wildcards are:
[[ *Pattern*
:[ *Meaning*
| *\**
: Matches everything
| *\?*
: Matches any single character
For example, the following wildcards can be made using this syntax.
[[ *Example*
:[ *Description*
| *\**.*fg* = _blue_
: Set the foreground color of all style objects to blue.
| *\*list*.*bg* = _hotpink_
: Set the background color of all style objects that end in list to hotpink.
Note that the statements in a given styleset are parsed in the order in which
they are written. That means that with the following styleset:
```
msglist_marked.fg = pink
msglist_*.fg = white
```
The *msglist_marked.fg* attribute will be set to _white_.
# SELECTED MODIFIER
The *selected* modifier can be applied to any style object. The style provided for
the *selected* modifier is applied on top of the style object it corresponds to.
If you would like to make sure message that are flagged as read in the msglist
appear in yellow foreground and black background. You can specify that with
this:
*msglist_default*.*selected*.*fg* = _yellow_
*msglist_default*.*selected*.*bg* = _black_
If we specify the global style selected modifier using fnmatch as below:
*\**.*selected*.*reverse* = _toggle_
This toggles the reverse switch for selected version of all the style objects.
*selected* objects inherit from all attributes of their non-selected
counterparts. *selected* statements are parsed after non-selected ones and
effectively override the attributes of the non-selected style object.
# LAYERED STYLES
Some styles, (currently the *msglist_\** and *dirlist_\** ones) are applied in
layers. If a style differs from the base (in this case *\*list_default*) then
that style applies, unless overridden by a higher layer. If *fg* and *bg* colors
are not defined explicitly (or defined to the default color) they will be
considered as "transparent" and the colors from the lower layer will be used
instead.
The order that *msglist_\** styles are applied in is, from first to last:
. *msglist_default*
. *msglist_unread*
. *msglist_read*
. *msglist_answered*
. *msglist_forwarded*
. *msglist_flagged*
. *msglist_deleted*
. *msglist_result*
. *msglist_thread_folded*
. *msglist_thread_context*
. *msglist_thread_orphan*
. *msglist_marked*
So, the marked style will override all other msglist styles.
The order for *dirlist_\** styles is:
. *dirlist_default*
. *dirlist_unread*
. *dirlist_recent*
# DYNAMIC MESSAGE LIST STYLES
All *msglist_\** styles can be defined for specific email header values. The
syntax is as follows:
*msglist_<name>*._<header>_,_<header_value>_.*<attribute>* = _<attr_value>_
If _<header_value>_ starts with a tilde character _~_, it will be interpreted as
a regular expression. If you are writing regular expressions that try to match
with _._ or _\._ you need to wrap like this _~/<expression>/_.
_<header>,<header_value>_ can be specified multiple times to narrow down matches
to more than one email header value. In that case, all given headers must match
for the dynamic style to apply.
Examples:
```
msglist\*.X-Sourcehut-Patchset-Update,APPROVED.fg = green
msglist\*.X-Sourcehut-Patchset-Update,NEEDS\_REVISION.fg = yellow
msglist\*.X-Sourcehut-Patchset-Update,REJECTED.fg = red
"msglist_*.Subject,~^(\\[[\w-]+\]\\s*)?\\[(RFC )?PATCH.fg" = #ffffaf
"msglist_*.Subject,~^(\\[[\w-]+\]\\s*)?\\[(RFC )?PATCH.selected.fg" = #ffffaf
"msglist_*.From,~^Bob.Subject,~^(\\[[\w-]+\]\\s*)?\\[(RFC )?PATCH.selected.fg" = #ffffaf
"msglist_*.List-ID,~/lists\.sr\.ht/selected.fg" = blue
```
When a dynamic style is matched to an email header, it will be used in priority
compared to its non-dynamic counterpart. Provided the following styleset:
```
msglist_marked.fg = blue
msglist_*.Subject,~foobar.fg = red
```
An email with _foobar_ in its subject will be colored in _red_ all the time,
since *msglist_\** also applies to *msglist\_marked*.
When multiple _<header>,<header_value>_ pairs are given, the last style which
matches all given patterns will be applied. Provided the following styleset:
```
msglist_*.From,~^Bob.Subject,~foobar.fg = red
msglist_*.From,~^Bob.fg = blue
```
An email from _Bob_ with _foobar_ in its subject will be colored in _blue_,
since the second style is a full match too.
# COLORS
The color values are set using any of the following methods:
_default_
The color is set as per the system or terminal default.
_<Color name>_
Any w3c approved color name is used to set colors for the style.
_<Hex code>_
Hexcode for a color can be used. The format must be _#XXXXXX_.
_<Dec number>_
Color based on the terminal palette index. Valid numbers are
between _0_ and _255_.
# DEFAULTS
Before parsing a styleset, it is first initialized with the following defaults:
```
*.selected.bg = 12
*.selected.fg = 15
*.selected.bold = true
statusline_*.dim = true
*warning.dim = false
*warning.bold = true
*warning.fg = 11
*success.dim = false
*success.bold = true
*success.fg = 10
*error.dim = false
*error.bold = true
*error.fg = 9
border.bg = 12
border.fg = 15
title.bg = 12
title.fg = 15
title.bold = true
header.fg = 4
header.bold = true
msglist_unread.bold = true
msglist_deleted.dim = true
msglist_marked.bg = 6
msglist_marked.fg = 15
msglist_pill.bg = 12
msglist_pill.fg = 15
part_mimetype.fg = 12
selector_chooser.bold = true
selector_focused.bold = true
selector_focused.bg = 12
selector_focused.fg = 15
completion_*.bg = 8
completion_pill.bg = 12
completion_default.fg = 15
completion_description.fg = 15
completion_description.dim = true
[viewer]
url.underline = true
url.fg = 3
header.bold = true
header.fg = 4
signature.dim = true
signature.fg = 4
diff_meta.bold = true
diff_chunk.fg = 6
diff_chunk_func.fg = 6
diff_chunk_func.dim = true
diff_add.fg = 2
diff_del.fg = 1
quote_1.fg = 6
quote_2.fg = 4
quote_3.fg = 6
quote_3.dim = true
quote_4.fg = 4
quote_4.dim = true
quote_x.fg = 5
quote_x.dim = true
```
You can choose either to reset everything (except in the *[viewer]* section) by
starting your styleset with these two lines:
```
*.default=true
*.normal=true
```
Or selectively override style object attributes.
If you want to also reset the *[viewer]* section, you need to insert the same
two lines:
```
[viewer]
*.default=true
*.normal=true
```
# SEE ALSO
*aerc*(1) *aerc-config*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+598
View File
@@ -0,0 +1,598 @@
AERC-TEMPLATES(7)
# NAME
aerc-templates - template file specification for *aerc*(1)
# SYNOPSIS
aerc uses the go text/template package for the template parsing.
Refer to the go text/template documentation for the general syntax.
The template syntax described below can be used for message template files and
for dynamic formatting of some UI app.
Template files are composed of headers, followed by a newline, followed by the
body text.
Example:
```
X-Clacks-Overhead: GNU Terry Pratchett
Hello,
Greetings,
Chuck
```
If you have a template that doesn't add any header, it *must* be preceded by a
newline, to avoid parsing parts of the body as header text.
All headers defined in the template will have precedence over any headers that
are initialized by aerc (e.g. Subject, To, From, Cc) when composing a new
message, forwarding or replying.
# MESSAGE DATA
The following data can be used in templates. Though they are not all
available always.
*Addresses*
An array of mail.Address. That can be used to add sender or recipient
names to the template.
- _{{.From}}_: List of senders.
- _{{.Peer}}_: List of senders or To recipients if the message is from
you.
- _{{.To}}_: List of To recipients. Not always Available.
- _{{.ReplyTo}}_: List of ReplyTo recipients. Not always Available.
- _{{.Cc}}_: List of Cc recipients. Not always Available.
- _{{.Bcc}}_: List of Cc recipients. Not always Available.
- _{{.OriginalFrom}}_: List of senders of the original message.
Available for quoted reply and forward.
Example:
Get the name of the first sender.
```
{{(index .From 0).Name}}
{{index (.From | names) 0}}
```
Get the email address of the first sender.
```
{{(index .From 0).Address}}
```
*Date and Time*
The date and time information is always available and can be easily
formatted.
- _{{.Date}}_: Date and time information when the compose window is opened.
- _{{.OriginalDate}}_: Date and time when the original message was received.
Available for quoted reply and forward.
To format the date fields, _dateFormat_ and _.Local_ are provided.
Refer to the *TEMPLATE FUNCTIONS* section for details.
*Subject*
The subject of the email (_ThreadPrefix_ will be empty unless threading
is enabled).
```
{{.ThreadPrefix}}{{if .ThreadFolded}}{{printf "{%d}" .ThreadCount}}{{end}}{{.Subject}}
```
The subject of the email stripped of any _Re:_ and _Fwd:_ prefixes.
```
{{.SubjectBase}}
```
*Threading*
When threading is enabled, these attributes are available in the message
list:
_ThreadPrefix_
If the message is part of a thread, this will contain arrows
that represent the message tree based on _In-Reply-To_ and
_References_ headers.
_ThreadFolded_
Will be _true_ if the message has thread children which are
hidden by *:fold*.
_ThreadCount_
The number of messages in the thread.
_ThreadUnread_
The number of unread messages in the thread.
*Flags*
List of message flags, not available when composing, replying nor
forwarding. This is a list of strings that may be converted to a single
string with *join*.
```
{{.Flags | join ""}}
```
*IsReplied*, *IsForwarded*, *HasAttachment*, *IsFlagged*, *IsRecent*, *IsUnread*,
*IsMarked*, *IsDraft*
Individual boolean flags. not available when composing, replying nor
forwarding.
```
{{if .IsFlagged}}★{{end}}
```
*Labels*
Message labels (for example notmuch tags). Not available when composing,
replying nor forwarding. This is a list of strings that may be converted
to a single string with *join*.
```
{{.Labels | join " "}}
```
*Size*
The size of the message in bytes. Not available when composing, replying
nor forwarding. It can be formatted with *humanReadable*.
```
{{.Size | humanReadable}}
```
*Filename*
The full path of the message file. Not available when composing,
replying nor forwarding. For the notmuch backend, it returns a random
filename if there are multiple files associated with the message.
*Filenames*
A list of the full paths of the files associated with the message. For
maildir this is always a list with a single element. Not available when
composing, replying nor forwarding.
*Any header value*
Any header value of the email.
```
{{.Header "x-foo-bar"}}
```
Any header values of the original forwarded or replied message:
```
{{.OriginalHeader "x-foo-bar"}}
```
*Message-ID*
The message-ID of the message.
```
:term b4 am {{.MessageId}}
```
*MIME Type*
MIME type is available for quoted reply and forward.
- _{{.OriginalMIMEType}}_: MIME type info of quoted mail part. Usually
_text/plain_ or _text/html_.
*Original Message*
When using quoted reply or forward, the original message is available in a
field called _OriginalText_.
```
{{.OriginalText}}
```
*Signature*
The signature of the currently selected account obtained from
*signature-file* or *signature-cmd*.
```
{{.Signature}}
```
*Account info*
The current account name:
```
{{.Account}}
```
The current account's backend:
```
{{.AccountBackend}}
```
The current account's from address:
```
{{.AccountFrom}}
{{.AccountFrom.Address}}
```
Currently selected mailbox folder:
```
{{.Folder}}
```
Current message counts for all folders:
```
{{.Recent}} {{.Unread}} {{.Exists}}
{{.RUE}}
```
IANA role of the mailbox, converted to lowercase:
```
{{.Role}}
```
*aerc* implements two additional custom roles: A 'query' role is given
to folders from a notmuch query-map
and 'virtual' indicates a virtual node in the directory tree listing:
```
{{if eq .Role "query"}}{{...}}{{else}}{{...}}{{end}}
```
Current message counts for specific folders:
```
{{.Recent "inbox"}}
{{.Unread "inbox" "aerc/pending"}}
{{.Exists "archive" "spam" "foo/baz" "foo/bar"}}
{{.RUE "inbox"}}
```
*Status line*
The following data will only be available in the status line templates:
Connection state.
```
{{.Connected}}
{{.ConnectionInfo}}
```
General status information (e.g. filter, search) separated with
*[statusline].separator*.
```
{{.ContentInfo}}
```
Combination of *{{.ConnectionInfo}}* and *{{.StatusInfo}}* separated
with *[statusline].separator*.
```
{{.StatusInfo}}
```
General on/off information (e.g. passthrough, threading, sorting, visual
mode), separated with *[statusline].separator*.
```
{{.TrayInfo}}
```
Currently pressed key sequence that does not match any key binding
and/or is incomplete.
```
{{.PendingKeys}}
```
# TEMPLATE FUNCTIONS
Besides the standard functions described in go's text/template documentation,
aerc provides the following additional functions:
*wrap*
Wrap the original text to the specified number of characters per line.
```
{{wrap 72 .OriginalText}}
```
*quote*
Prepends each line with _"> "_.
```
{{quote .OriginalText}}
```
*trimSignature*
Removes the signature froma passed in mail. Quoted signatures are kept
as they are.
```
{{trimSignature .OriginalText}}
```
*join*
Join the provided list of strings with a separator:
```
{{.To | names | join ", "}}
```
*split*
Split a string into a string slice with a separator:
```
{{.To | names | join ", " | split ", "}}
```
*names*
Extracts the names part from a mail.Address list. If there is no name
available, the mbox (email address without @domain) is returned instead.
```
{{.To | names | join ", "}}
{{index (.To | names) 0}}
```
*firstnames*
Extracts the first names part from a mail.Address list. If there is no
name available, the short mbox (start of email address without @domain)
is returned instead.
```
{{.To | firstnames | join ", "}}
{{index (.To | firstnames) 0}}
```
*initials*
Extracts the initials from the names part from a mail.Address list. If
there is no name available, the first letter of the email address is
returned instead.
```
{{.To | initials | join ", "}}
{{index (.To | initials) 0}}
```
*emails*
Extracts the addresses part from a mail.Address list.
```
{{.To | emails | join ", "}}
{{index (.To | emails) 0}}
```
*mboxes*
Extracts the mbox part from a mail.Address list (i.e. _smith_ from
_smith@example.com_).
```
{{.To | mboxes | join ", "}}
{{index (.To | mboxes) 0}}
```
*shortmboxes*
Extracts the short mbox part from a mail.Address list (i.e. _smith_ from
_smith.and.wesson@example.com_).
```
{{.To | shortmboxes | join ", "}}
{{index (.To | shortmboxes) 0}}
```
*persons*
Formats a list of mail.Address into a list of strings containing the
human readable form of RFC5322 (e.g. _Firstname Lastname
<email@address.tld>_).
```
{{.To | persons | join ", "}}
{{index (.To | persons) 0}}
```
*.Attach*
Attaches a file to the message being composed.
```
{{.Attach '/usr/libexec/aerc/filters/html'}}
```
*exec*
Execute external command, provide the second argument to its stdin.
The command is executed with the same search *$PATH* than aerc filters
(see *aerc-config*(5) in the *FILTERS* section for more details).
```
{{exec `html` .OriginalText}}
```
*.Local*
Convert the date to the local timezone as specified by the locale.
```
{{.Date.Local}}
```
*dateFormat*
Format date and time according to the format passed as the second argument.
The format must be specified according to go's time package format.
```
{{dateFormat .Date "Mon Jan 2 15:04:05 -0700 MST 2006"}}
```
You can also use the _.DateAutoFormat_ method to format the date
according to *\*-time\*format* settings:
```
{{.DateAutoFormat .OriginalDate.Local}}
```
*now*
Return the current date as a golang time.Time object that can be
formatted with *dateFormat*.
```
{{dateFormat now "Mon Jan 2 15:04:05 -0700 MST 2006"}}
```
*humanReadable*
Return the human readable form of an integer value.
```
{{humanReadable 3217653721}}
```
*cwd*
Return the current working directory with the user home dir replaced by
_~_.
```
{{cwd}}
```
*compactDir*
Reduce a directory path into a compact form. The directory name will be
split with _/_ and each part will be reduced to the first letter in its
name: _INBOX/01_WORK/PROJECT_ will become _I/W/PROJECT_.
```
{{compactDir .Folder}}
```
*contains*
Checks if a string contains a substring.
```
{{contains "<!DOCTYPE html>" .OriginalText}}
```
*hasPrefix*
Checks if a string has a prefix.
```
{{hasPrefix "Business" .Folder}}
```
*toLower*
Convert a string to lowercase.
```
{{toLower "SPECIAL OFFER!"}}
```
*toUpper*
Convert a string to uppercase.
```
{{toUpper "important"}}
```
*replace*
Perform a regular expression substitution on the passed string.
```
{{replace `(.+) - .+ at .+\..+` `$1` ((index .OriginalFrom 0).Name)}}
```
*head*
Return first n characters from string.
```
{{"hello" | head 2}}
```
*tail*
Return last n characters from string.
```
{{"hello" | tail 2}}
```
*.Style*
Apply a user-defined style (see *aerc-stylesets*(7)) to a string.
```
{{.Style .Account "red"}}
{{.Style .ThreadPrefix "thread"}}{{.Subject}}
```
*.StyleSwitch*
Apply a user-defined style (see *aerc-stylesets*(7)) to a string if it
matches one of the associated regular expressions. If the string does
not match any of the expressions, leave it unstyled.
```
{{.StyleSwitch .Subject (`^(\[[\w-]+\]\s*)?\[(RFC )?PATCH` "cyan")}}
{{.StyleSwitch (.From | names | join ", ") (case `Tim` "cyan") (case `Robin` "pink-blink") (default "blue")}}
```
*.StyleMap*
Apply user-defined styles (see *aerc-stylesets*(7)) to elements of
a string list. The logic is the same than *.StyleSwitch* but works on
a list of elements. An additional *exclude* option is available to
remove the matching elements from the list.
```
{{.StyleMap .Labels (exclude .Folder) (exclude `^spam$`) (case `^inbox$` "red") (case `^Archive/.*` "green") (default "blue") | join " "}}
```
*version*
Returns the version of aerc, which can be useful for things like X-Mailer.
```
X-Mailer: aerc {{version}}
```
*match*
Check if a string matches a regular expression. This is intended for
use in conditional control flow:
```
{{if match .Folder `.*/Archive-[0-9]+`}}{{humanReadable .Unread}}{{end}}
```
*switch*
Do switch/case/default control flows. The switch value is compared with
regular expressions. If none of the case/default arms match, an empty
string is returned.
```
{{switch .Folder (case `^INBOX$` "📥") (case `^Archive/.*` "🗃") (default "📁")}}
```
*map*
Transform a string list into another one. The logic is the same than
*switch* but works on a list of elements. An additional *exclude* option
is available to remove the matching elements from the list.
```
{{map .Labels (exclude .Folder) (exclude `^spam$`) (case `^inbox$` "📥") (case `^Archive/.*` "🗃") | join " "}}
```
*Function chaining*
All of the template functions can be chained together if needed.
Example: Automatic HTML parsing for text/html mime type messages
```
{{if eq .OriginalMIMEType "text/html"}}
{{exec `/usr/libexec/aerc/filters/html` .OriginalText | wrap 72 | quote}}
{{else}}
{{wrap 72 .OriginalText | trimSignature | quote}}
{{end}}
```
# SEE ALSO
*aerc*(1) *aerc-config*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+157
View File
@@ -0,0 +1,157 @@
AERC-TUTORIAL(7)
# NAME
aerc-tutorial - tutorial for *aerc*(1)
# INTRODUCTION
Welcome to aerc! This tutorial will guide you through your first steps in using
the client. This tutorial is a man page - you can read it again later with
*:help* _tutorial_ from aerc, or *man aerc-tutorial* from your terminal.
First, let's introduce some basic keybindings. For convention, we'll use *<C-p>*
to represent _Ctrl+p_, which matches the convention used for writing keybindings
for aerc.
*<C-p>*, *<C-n>*
Cycles to the previous or next tab
Try using these now to switch between your message list and the tutorial. In
your message list, we use vim-style keys to get around.
*k*, *j*
Scrolls up and down between messages
*<C-u>*, *<C-d>*
Scrolls half a page up or down
*g*, *G*
Selects the first or last message, respectively
*K*, *J*
Switches between folders in the sidebar
*<Enter>*
Opens the selected message
You can also search the selected folder with */*, or filter with *\\ *. When
searching you can use *n* and *p* to jump to the next and previous result.
Filtering hides any non-matching message.
# THE MESSAGE VIEWER
Press *<Enter>* to open a message. By default, the message viewer will display
your message using *less*(1). This should also have familiar, vim-like
keybindings for scrolling around in your message.
Multipart messages (messages with attachments, or messages with several
alternative formats) show a part selector on the bottom of the message viewer.
*<C-k>*, *<C-j>*
Cycle between parts of a multipart message
*q*
Close the message viewer
To show HTML messages parts, the _text/html_ filter in your _aerc.conf_ file
(which is probably in _~/.config/aerc/_) requires *w3m* along with optional
dependencies for safer network isolation: *unshare* (from *util-linux*) or
*socksify* (from *dante-utils*).
You can also do many tasks you could do in the message list from here, like
replying to emails, deleting the email, or view the next and previous message
(*J* and *K*).
# COMPOSING MESSAGES
Return to the message list by pressing *q* to dismiss the message viewer. Once
there, let's compose a message.
*C*
Compose a new message
*rr*
Reply-all to a message
*rq*
Reply-all to a message, and pre-fill the editor with a quoted version of the
message being replied to
*Rr*
Reply to a message
*Rq*
Reply to a message, and pre-fill the editor with a quoted version of the
message being replied to
For now, let's use *C* to compose a new message. The message composer will
appear. You should see To, From, and Subject lines, as well as your *$EDITOR*.
You can use *<Tab>* or *<C-j>* and *<C-k>* to cycle between these fields (tab
won't cycle between fields once you enter the editor, but *<C-j>* and *<C-k>*
will).
Let's send an email to yourself. Note that the To and From headers expect RFC
5322 addresses, e.g. *John Doe <john@example.org>*, or simply
*<john@example.org>*. Separate multiple recipients with commas. Go ahead and
fill out an email, then close the editor.
The message review screen is shown next. You have a chance now to revise the
email before it's sent. Press *y* to send the email if it looks good.
*Note*: when using the terminal in the message view, you can summon aerc's ex
command line by using *<C-x>*. *:* is sent to the editor.
# USING THE TERMINAL
aerc comes with an embedded terminal, which you've already used to view and edit
emails. We can also use this for other purposes, such as referencing a git
repository while reviewing a patch. From the message list, we can use the
following keybindings to open a terminal:
*<C-t>*
Opens a new terminal tab, running your shell
*$*, *!*
Prompts for a command to run, then opens a new terminal tab running that
command
*|*
Prompts for a command to run, then pipes the selected email into that
command and displays the result on a new terminal tab
Try pressing *$* and entering _top_. You can also use the *:cd* command to
change aerc's working directory, and the directory in which new terminals run.
Use *:pwd* to see it again if you're not sure where you are.
# ADDITIONAL NOTES
## COMMANDS
Every keybinding is ultimately bound to an aerc command. You can also summon the
command line by pressing *:*, then entering one of these commands. See *aerc*(1)
or *:help* for a full list of commands.
## MESSAGE FILTERS
When displaying messages in the message viewer, aerc will pipe them through a
message filter first. This allows you to decode messages in non-plaintext
formats, add syntax highlighting, etc. aerc ships with a few default filters:
- _text/plain_ parts are piped through the _colorize_ built-in filter which
handles URL, quotes and diff coloring.
- _text/calendar_ is processed to be human readable text
- _text/html_ (disabled by default) can be uncommented to pipe through the
built-in _html_ filter.
## CUSTOMIZING AERC
Aerc is highly customizable. Review *aerc-config*(5) (or use *:help config*) to
learn more about how to add custom keybindings, install new message filters,
change its appearance and behavior, and so on.
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.
+1009
View File
File diff suppressed because it is too large Load Diff
+103
View File
@@ -0,0 +1,103 @@
CARDDAV-QUERY(1)
# NAME
carddav-query - Query a CardDAV server for contact names and emails.
# SYNOPSIS
*carddav-query* [*-h*] [*-l* _<limit>_] [*-v*] [*-c* _<file>_]
\[*-s* _<section>_] [*-k* _<key\_source>_] [*-C* _<key\_cred\_cmd>_]
\[*-s* _<server\_url>_] [*-u* _<username>_] [*-p* _<password>_] _<term>_ [_<term>_ ...]
This tool has been tailored for use as *address-book-cmd* in *aerc-config*(5).
# OPTIONS
*-h*, *--help*
show this help message and exit
*-v*, *--verbose*
Print debug info on stderr.
*-l* _<limit>_, *--limit* _<limit>_
Maximum number of results returned by the server. If the server does not
support limiting, this option will be disregarded.
Default: _10_
*-c* _<file>_, *--config-file* _<file>_
INI configuration file from which to read the CardDAV URL endpoint.
Default: _~/.config/aerc/accounts.conf_
*-S* _<section>_, *--config-section* _<section>_
INI configuration section where to find _<key\_source>_ and
_<key\_cred\_cmd>_. By default the first section where _<key\_source>_
is found will be used.
*-k* _<key\_source>_, *--config-key-source* _<key\_source>_
INI configuration key to lookup in _<section>_ from _<file>_. The value
must respect the following format:
https?://_<username>_[:_<password>_]@_<hostname>_/_<path/to/addressbook>_
Both _<username>_ and _<password>_ must be percent encoded. If
_<password>_ is omitted, it can be provided via *--config-key-cred-cmd*
or *--password*.
Default: _carddav-source_
*-C* _<key\_cred\_cmd>_, *--config-key-cred-cmd* _<key\_cred\_cmd>_
INI configuration key to lookup in _<section>_ from _<file>_. The value
is a command that will be executed with *sh -c* to determine
_<password>_ if it is not present in _<key\_source>_.
Default: _carddav-source-cred-cmd_
*-s* _<server_url>_, *--server-url* _<server_url>_
CardDAV server URL endpoint. Overrides configuration file.
*-u* _<username>_, *--username* _<username>_
Username to authenticate on the server. Overrides configuration file.
*-p* _<password>_, *--password* _<password>_
Password for the specified user. Overrides configuration file.
# POSITIONAL ARGUMENTS
_<term>_
Search term. Will be used to search contacts from their FN (formatted
name), EMAIL, NICKNAME, ORG (company) and TITLE fields.
# EXAMPLES
These are excerpts of _~/.config/aerc/accounts.conf_.
## Fastmail
```
[fastmail]
carddav-source = https://janedoe%40fastmail.com@carddav.fastmail.com/dav/addressbooks/user/janedoe@fastmail.com/Default
carddav-source-cred-cmd = pass fastmail.com/janedoe
address-book-cmd = carddav-query -S fastmail %s
```
## Gmail
```
[gmail]
carddav-source = https://johndoe%40gmail.com@www.googleapis.com/carddav/v1/principals/johndoe@gmail.com/lists/default
carddav-source-cred-cmd = pass gmail.com/johndoe
address-book-cmd = carddav-query -S gmail %s
```
# SEE ALSO
*aerc-config*(5)
# AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted
by other open source contributors. For more information about aerc development,
see _https://sr.ht/~rjarry/aerc/_.