Skip to content

Reading mail

Everything here works offline, on local data, at local speed. Keys shown are the defaults; every one is rebindable (see keys), and ? always shows the truth for your config.

The list

The message list is flat, newest first, with the sidebar on the left and (by default) a reading pane below. Move with J / K, page with Ctrl+D / Ctrl+U, jump with gg and G. Motions take vi-style counts: 4j moves down four.

The status column tells a message's story 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 (with the subject in bold)
flagged

Your own messages show → recipient in the FROM/TO column, the way a sent folder should read.

The sidebar

The sidebar lists the unified view, each account with its folders nested beneath, four built-in searches (all, inbox, unread, flagged) and your saved searches. Move the highlight with Ctrl+N / Ctrl+P and open with Ctrl+O; gt and gT cycle account scope directly.

A folder holding unread mail steps out of the muted rank in bold and carries its unread count beside the name. Folders can wear friendlier names than the server gives them; see folder aliases.

Searching

/ opens a search prompt that takes full notmuch syntax, always scoped to the accounts in view:

from:alba tag:unread
subject:invoice date:2026-01..2026-06
attachment:pdf not tag:archived

Saved searches from your config sit in the sidebar for the ones you run daily.

Threads

The list stays flat until you ask. Shift+T pivots onto the selected message's whole thread; Esc returns to exactly the listing you came from. Rows whose thread has more messages in view carry the T mark.

The pager

Enter opens a message. The top bar names the keys that matter (generated from your bindings), then the headers you chose to see (t toggles every header of the message), a rule, and the body. Scroll with J / K, Enter / Backspace, or the mouse wheel; G jumps to the end.

  • H flips between the plain-text and HTML renderings of the message. Antiphon renders HTML to text itself and never fetches anything remote.
  • O opens a numbered picker over the links in the message; a left click on a link does the same. Only http, https and mailto are ever handed to the system opener.
  • Quoted lines, patch diffs and signature blocks each wear their own colour; a message that looks like a git patch is classified line by line, and :save-patches / :apply turn a series into git am (see patches).
  • PGP-signed mail shows its verdict beside the headers; encrypted mail decrypts through your gpg-agent when opened (see security).

Attachments

A message with attachments shows a one-line drawer at the bottom of the pager. V expands it: J / K select, S saves to a prompted path, V again opens a temporary copy with the system opener, Esc collapses it.

Calendar invites

An invitation renders as a readable summary in the pager. Answer it with :accept, :tentative or :decline: each opens an ordinary compose to the organiser with the RFC 5546 reply attached, so nothing is sent before you confirm on the review screen.

The reading pane

With the pane below (the default), the list keeps list_rows rows and the selected message previews underneath; Shift+J / Shift+K scroll the pane without leaving the list, and H toggles its HTML rendering too. p cycles the pane below, to the right, or off.