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
A
sync (or A
dvanced?)
E
mail
R
eading
C
lient
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