Reading mail¶
Keys below are the defaults; all are rebindable (see keys), and ? shows the live map for your config.
Move around the list¶
| Key | Does |
|---|---|
| J / K | down / up |
| Ctrl+D / Ctrl+U | half page down / up |
gg / Shift+G |
top / bottom |
| Enter | open the message |
| Esc | back |
Motions take vi-style counts: 4j moves down four.
The status column reads a message at a glance:
| Mark | Meaning |
|---|---|
R |
you replied |
F |
you forwarded |
A |
it carries attachments |
T |
its thread has more messages in this listing |
◆ |
unread (subject in bold) |
⚑ |
flagged |
Your own messages show → recipient in the FROM/TO column.
The sidebar¶
| Key | Does |
|---|---|
| Ctrl+N / Ctrl+P | move the highlight |
| Ctrl+O | open the selected entry |
| Shift+B | show / hide the sidebar |
gt / gT |
next / previous account scope |
g1...g9 |
jump to account 1...9 |
gu |
the unified view |
The sidebar lists the unified view, each account with its
folders nested beneath it, four built-in searches (all,
inbox, unread, flagged) and your [[saved_searches]],
in that order. Account entries set the scope; saved searches
run their query inside the current scope. On startup the
all search is selected, so everything in scope is listed.
Folder entries each list one folder of one account: inbox
is the account's root maildir, and every other folder is
discovered from the store's maildir tree, nested IMAP
folders included (lists/aerc, inbox/accounts). Opening a
folder scopes the view to its account and shows only that
folder's messages. A folder holding unread mail steps out of
the muted rank and carries its unread count beside the name,
refreshed with the rest of the sidebar every couple of
seconds. Rename folders with
folder aliases.
Search¶
/ opens a search prompt taking full notmuch syntax, scoped to the accounts in view:
from:alba tag:unread
subject:invoice date:2026-01..2026-06
attachment:pdf not tag:archived
The full language (every prefix, date ranges, booleans and
regular expressions) is in searching mail; add
searches you run daily to the sidebar via saved_searches in
your config, and act on a whole result at once with the
bulk actions.
Threads¶
| Key | Does |
|---|---|
| Shift+T | show the selected message's whole thread |
za / zo / zc |
toggle / open / close the selected subtree |
| Esc | back to the listing you came from |
The list stays flat by default; Shift+T pivots it onto
the selected message's whole thread as a reply tree, each
row indented under what it answers and carrying its own
date. The thread spans folders: replies you sent are pulled
in from the sent folder, so the conversation reads complete
rather than one-sided. Subtrees fold vi-style with za,
zo and zc, and Esc restores the listing you came
from. A T in the status column marks messages whose thread
has more rows in the current listing.
Read a message¶
Enter opens the pager.
| Key | Does |
|---|---|
| J / K, wheel | scroll |
| Enter / Backspace | scroll |
| Shift+G | jump to the end |
| T | show / hide every header |
| H | switch plain-text / HTML rendering |
| B | open the HTML part in your browser |
| O | pick a link to open (also left-click [n]) |
Link spans render underlined in the accent colour, each with
a number; O opens a picker where you type the number (or
move with J / K) and Enter hands the URL to the
system opener, open on macOS and xdg-open elsewhere. The
mouse works too: the wheel scrolls and a left click on a
link opens it. Only http, https and mailto links ever
reach the opener. HTML renders to text in the terminal;
nothing remote is fetched.
For patch series, :save-patches <path> and :apply <repo>
hand the thread to git am (see patches).
PGP-signed mail shows its verdict beside the headers;
encrypted mail decrypts through your gpg-agent (see
security).
Attachments¶
A message with attachments shows a one-line drawer at the
bottom of the pager, e.g. 2 attachments: report.pdf,
photo.jpg. V expands it into a list:
| Key | Does |
|---|---|
| J / K | select |
| S | save to a prompted path, prefilled with the sent filename (~ expands) |
| V | open a temporary copy with the system opener |
| Esc | collapse |
Calendar invites¶
An invitation renders as a summary in the pager. Answer with
:accept, :tentative or :decline: each opens a compose to
the organiser with the reply attached, so nothing sends until
you confirm on review.
The reading pane¶
P cycles the reading pane below the list, to its right, or off. With the pane open:
| Key | Does |
|---|---|
| Shift+J / Shift+K | scroll the pane without leaving the list |
| H | toggle its HTML rendering |
| V | expand the attachment drawer for the previewed message |
| O | the link picker over the previewed message |
V and O act on the selected message in place, the same keys as the pager, so following a link or saving a file never forces the full pager open. The preview never decrypts: an encrypted message shows neither links nor attachments until you open it.
Set how many list rows stay visible above the pane:
[ui]
list_rows = 7