aerc
My name is Robin Jarry
aerc maintainer* since 2021
Software engineer at Red Hat
aerc?Who cares?
| Drew DeVault | /aɹk/ |
|---|---|
| French | /ɛʀk/ |
| Hungarian | /aɛːrt͡s/ |
| Spanish | /aerθe/ |
Legend says that it was originally an acronym for
Async (or Advanced?)
Email
Reading
Client
aerc?An email client that runs in your terminal
IMAP, JMAP, SMTP, Maildir, Notmuch, mbox
Multiple tabs and/or accounts
VIM-style commands and key bindings
Compose in $EDITOR, view emails in $PAGER
Account configuration wizard
Builtin documentation
UI configuration
Email part/attachment filters
Key bindings
Future work
Runs automatically on first startup
Basic SRV autoconf
Improves new users onboarding
Can also be started with the :new-account command
:new-account with JMAPDocumentation available as man pages
Can be accessed via the :help <topic> command
Also available via man aerc-<topic>
Display contextual key bindings with :help keys
:help keys is bound to ? by default
:help command examplesMost settings can be found in aerc.conf
Colors configured in stylesets
Use :reload without restarting aerc
aerc uses go templates
(see :help templates)
# ~/.config/aerc/aerc.conf
[ui]
index-columns = star:1,name<15%,reply:1,subject,size>=,date>=
column-star = {{if .IsFlagged}}★{{end}}
column-name = {{.Peer | names | join ", "}}
column-reply = {{if .IsReplied}}⮪{{else if .IsForwarded}}⮫{{end}}
column-subject = {{.Style .ThreadPrefix "thread"}}{{.Subject}}
column-size = {{if .HasAttachment}}📎 {{end}}{{humanReadable .Size}}
column-date = {{.DateAutoFormat .Date.Local}}
# ~/.config/aerc/aerc.conf
[ui]
threading-enabled = true # changed at runtime with :toggle-threading
sort-thread-siblings = true
msglist-scroll-offset = 5
sidebar-width = 15
styleset-name = pink
[ui:account=work]
styleset-name = blue
[ui:folder=Sent]
column-name = To: {{.Peer | names | join ", "}}
UI elements can be assigned colors and various terminal
attributes (see :help stylesets)
# ~/.config/aerc/stylesets/pink
*.default = true
*.normal = true
msglist_unread.bold = true
msglist_deleted.fg = "#999999"
msglist_marked.fg = white
msglist_marked.bg = "#de4e85"
msglist_marked.selected.bg = "#c93687"
msglist_pill.bg = "#de4e85"
"msglist_*.Subject,~^\[([\w-]+]\s*)?(RFC )?PATCH.fg" = blue
msglist*.X-Sourcehut-Patchset-Update,APPLIED.fg = green
# ... stylesets are much longer and don't fit on a slide ...
aerc mild ricing exampleUser defined commands per MIME type
Colorize emails and patches
Reformat text, wrap long lines, ...
Decode non-plaintext parts
Message part
> filter
| pager
> virtual terminal
# ~/.config/aerc/aerc.conf
[viewer]
# default pager for non-interactive commands (starting with !)
pager = less -Rc -+S --wordwrap
[filters]
# hard wrap at 90 columns (except patches) and colorize
text/plain = wrap -w 90 | colorize
# pipe raw HTML into a sandboxed and interactive w3m
text/html = ! html
# render images as ASCII art (not needed since 0.18.0)
image/* = catimg -w$(tput cols) -
aerc ships with a few custom filters:
colorize,
wrap,
html,
calendar
Any key sequence can be bound to a command
Bindings are per-context
More info with :help bindings
View context bindings with :help keys
# ~/.config/aerc/binds.conf
[messages]
# change folder via an interactive menu
<C-p> = :menu -dc - :cf<Enter>
# bindings can use templates as well
C = :compose -H 'To:{{.To | persons | join ", "}}'<Enter>
[compose::review]
# comments at the end show on the review screen
y = :send<Enter> # Send
p = :postpone<Enter> # Postpone
e = :edit<Enter> # Edit
0.20.1 is outCome check it out!
~$ git clone https://git.sr.ht/~rjarry/aerc
~$ gmake -C aerc install -j PREFIX=~/.local
~$ aerc -v
aerc 0.20.1 +notmuch-5.6.0 (go1.23.6 amd64 linux 2025-02-01)
Full release notes:
https://git.sr.ht/~rjarry/aerc/refs/0.20.1
Better patch management commands
Full offline mode for SMTP, IMAP and JMAP
Chaining commands with key bindings
More threading options
What do you have in mind?
Questions?
#aerc on irc.libera.chat