Fork of the aerc email client (
Go to file
q3cpma d925ac8f72 filters: make it explicit that encoding is UTF-8
Document filter input charset
Add w3m filter example to default config
Adapt html and html-unsafe filters

Signed-off-by: q3cpma <>
Acked-by: Robin Jarry <>
2022-08-03 22:36:51 +02:00
.builds ci: add missing yaml document header 2022-07-11 11:31:33 +02:00
.github/workflows builds: add gnupg in preparation of gpg integration 2022-04-14 21:51:09 +02:00
commands lint: apply new formatting rules 2022-08-01 10:44:52 +02:00
completer completer: remove useless logger parameter 2022-07-17 19:00:35 +02:00
config filters: make it explicit that encoding is UTF-8 2022-08-03 22:36:51 +02:00
contrib Add changelog 2022-07-26 23:28:43 +02:00
doc filters: make it explicit that encoding is UTF-8 2022-08-03 22:36:51 +02:00
filters filters: make it explicit that encoding is UTF-8 2022-08-03 22:36:51 +02:00
lib lint: apply new formatting rules 2022-08-01 10:44:52 +02:00
logging logging: add logger system with levels 2022-07-23 22:52:10 +02:00
models lint: apply new formatting rules 2022-08-01 10:44:52 +02:00
templates compose: add default template for new messages 2022-01-19 21:42:41 +01:00
widgets mailto: add account query parameter 2022-08-01 12:26:29 +02:00
worker lint: apply new formatting rules 2022-08-01 10:44:52 +02:00
.editorconfig Add .editorconfig file 2022-01-20 21:43:47 +01:00
.gitignore mk: rebuild if goflags or ldflags have changed 2022-02-27 21:11:31 +01:00
.mailmap Add git mailmap 2022-07-23 22:07:04 +02:00 commands: add check-mail command 2022-08-01 10:37:28 +02:00
LICENSE LICENSE: add license name 2022-02-06 16:04:15 +01:00
Makefile lint: use gofumpt instead of gofmt 2022-08-01 10:44:50 +02:00 Add changelog 2022-07-26 23:28:43 +02:00
aerc.go logging: print init procedure and config contents 2022-07-23 22:52:20 +02:00
go.mod lint: use gofumpt instead of gofmt 2022-08-01 10:44:50 +02:00
go.sum lint: use gofumpt instead of gofmt 2022-08-01 10:44:50 +02:00

aerc status GitHub macOS CI status

aerc is an email client for your terminal.

This is a fork of the original aerc by Drew DeVault.

A short demonstration can be found on

Join the IRC channel: #aerc on for end-user support, and development.


On its first run, aerc will copy the default config files to ~/.config/aerc on Linux or ~/Library/Preferences/aerc on MacOS (or $XDG_CONFIG_HOME/aerc if set) and show the account configuration wizard.

If you redirect stdout to a file, logging output will be written to that file:

$ aerc > log

Note that the example HTML filter (off by default), additionally needs w3m and dante to be installed.


Also available as man pages:

User contributions and integration with external tools:


Binary Packages

Recent versions of aerc are available on:

And likely other platforms.

From Source

Install the dependencies:

Then compile aerc:

$ make

aerc optionally supports notmuch. To enable it, you need to have a recent version of notmuch, including the header files (notmuch.h). Then compile aerc with the necessary build tags:

$ GOFLAGS=-tags=notmuch make

To install aerc locally:

# make install

By default, aerc will install config files to directories under /usr/local/aerc, and will search for templates and stylesets in these locations in order:

  • ${XDG_CONFIG_HOME:-~/.config}/aerc
  • ${XDG_DATA_HOME:-~/.local/share}/aerc
  • /usr/local/share/aerc
  • /usr/share/aerc

At build time it is possible to add an extra location to this list and to use that location as the default install location for config files by setting the PREFIX option like so:

# make PREFIX=/custom/location
# make install PREFIX=/custom/location

This will install templates and other config files to /custom/location/share/aerc, and man pages to /custom/location/share/man. This extra location will have lower priority than the XDG locations but higher than the fixed paths.

Contribution Quick Start

Anyone can contribute to aerc. First you need to clone the repository and build the project:

$ git clone
$ cd aerc
$ make

Patch the code. Make some tests. Ensure that your code is properly formatted with gofmt. Ensure that everything builds and works as expected. Ensure that you did not break anything.

  • If applicable, update unit tests.
  • If adding a new feature, please consider adding new tests.
  • Do not forget to update the docs.
  • If your commit brings visible changes for end-users, add an entry in the Unreleased section of the file.

Once you are happy with your work, you can create a commit (or several commits). Follow these general rules:

  • Limit the first line (title) of the commit message to 60 characters.
  • Use a short prefix for the commit title for readability with git log --oneline.
  • Use the body of the commit message to actually explain what your patch does and why it is useful.
  • Address only one issue/topic per commit.
  • If you are fixing a ticket, use appropriate commit trailers.
  • If you are fixing a regression introduced by another commit, add a Fixes: trailer with the commit id and its title.

There is a great reference for commit messages in the Linux kernel documentation.

IMPORTANT: you must sign-off your work using git commit --signoff. Follow the Linux kernel developer's certificate of origin for more details. All contributions are made under the MIT license. If you do not want to disclose your real name, you may sign-off using a pseudonym. Here is an example:

Signed-off-by: Robin Jarry <>

Before sending the patch, you should configure your local clone with sane defaults:

$ git config format.subjectPrefix "PATCH aerc"
$ git config "~rjarry/"

And send the patch to the mailing list:

$ git send-email --annotate -1

Before your patch can be applied, it needs to be reviewed and approved by others. They will indicate their approval by replying to your patch with a Tested-by, Reviewed-by or Acked-by trailer. For example:

Acked-by: Robin Jarry <>

There is no "chain of command" in aerc. Anyone that feels comfortable enough to "ack" or "review" a patch should express their opinion freely with an official Acked-by or Reviewed-by trailer. If you only tested that a patch works as expected but did not conduct a proper code review, you can indicate it with a Tested-by trailer.

You can follow the review process via email and on the web ui.

Wait for feedback. Address comments and amend changes to your original commit. Then you should send a v2 (and maybe a v3, v4, etc.):

$ git send-email --annotate -v2 -1

Be polite, patient and address all of the reviewers' remarks. If you disagree with something, feel free to discuss it.

Once your patch has been reviewed and approved (and if the maintainer is OK with it), it will be applied and pushed.


Ask for support or follow general discussions on ~rjarry/

Send patches and development related questions to ~rjarry/

Instructions for preparing a patch are available at

Subscribe to release announcements on ~rjarry/

Submit confirmed bug reports and confirmed feature requests on


Change log.