Skip to content

Keys

The quick reference lays the whole default map out by task.

Every action is rebindable under [keys] in config.toml; the in-app cheatsheet (?) always renders the effective map, defaults merged with your overrides, and so do the pager keybar and the status-line hints.

Sequences

Single keys (j, /, G), modifiers (ctrl-d, alt-v), named keys (enter, esc, tab, space, up, down), and two-key sequences (gg, ,s). Unknown action names and unparseable sequences fail at startup naming the entry.

Movement actions take a count prefix, vi style: 4j moves down four, 12k up twelve. Digits accumulate until a bound key consumes them (capped at 9999); esc clears a pending count.

Actions: move-down, move-up, top, bottom, half-page-down, half-page-up, open, back, quit, search, command, next-account, previous-account, sidebar-next, sidebar-previous, sidebar-open, toggle-sidebar, cycle-reading-pane, sync, settings, reply, reply-all, forward, reply-list, compose, toggle-read, mark-all-read, toggle-flagged, delete-message, toggle-html (h: flip the open or previewed message between plain and html parts), toggle-headers (t: flip the pager and reading pane between the configured headers set and every header of the message), open-link (o: a numbered picker over the links of the open message; type the number and press enter, or move with j/k, and the url goes to the system opener, open on macOS and xdg-open elsewhere; esc closes), attachments (v: expand the attachment drawer), archive (a: move the message to the account's archive folder, from the list or the pager; the row leaves at once and the daemon replays the move against the server), move-to (c: a picker over the account's other folders, aliases shown where configured; enter moves, esc closes; :move <folder> does the same by name, accepting an alias, the real path, or inbox for the account root), pane-down/pane-up (J/K: scroll the reading pane), thread-view (T: pivot the flat list onto the selected message's whole thread; back (esc) restores the listing you came from; a T in the status column marks messages whose thread has more rows in the current listing), help (?: the keybinding cheatsheet, generated live from these bindings with your overrides applied).

In the pager, link spans render underlined in the accent colour. The mouse works there too: the wheel scrolls, and a left click on a link opens it. Only http, https and mailto urls are ever handed to the opener, and Antiphon itself never fetches anything.

A message with attachments shows a one-line drawer at the pager's bottom, e.g. 2 attachments: report.pdf, photo.jpg, truncated to the width. v expands it into a list: j/k select, s saves the decoded bytes to a prompted path (prefilled with the sent filename, ~ expands), v writes a temporary copy and hands it to the system opener, and esc collapses the drawer again.

next-account (gt) and previous-account (gT) cycle the view scope: unified, then each account in turn. sidebar-next (ctrl-n) and sidebar-previous (ctrl-p) move the sidebar highlight over the unified view, the accounts (each with its folders nested beneath it), four built-in searches (all, inbox, unread, flagged) and the [[saved_searches]] from config, in that order; sidebar-open (ctrl-o) applies the highlighted entry. 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 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 on each refresh, 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.

[folder_names] gives folders friendlier sidebar names (INBOX/Accounts shown as accounts); the alias also works wherever a folder name is typed. The left side is the folder path as the store knows it: lowercase, /-separated.

reply-list (L) replies to the mailing list a message came from: Mail-Followup-To wins when the author set one, otherwise the List-Post mailto address is used. A List-Post: NO list refuses with a status message, and a list without any List-Post header falls back to reply-all with a warning naming the recipient count rather than guessing an address.

:accept, :tentative and :decline answer the calendar invite of the open message: each opens an ordinary compose to the organiser with the RFC 5546 reply attached as a calendar part, so nothing is sent before the review screen's y. The organiser's copy updates your attendance when their client processes the part, which the big providers all do.

:unsubscribe acts on the current message's List-Unsubscribe header. An RFC 8058 one-click entry asks for confirmation naming the list, then hands the POST to antiphond, which requires https and performs it off the serve loop (the client never touches the network). A mailto entry opens a compose prefilled with the address, subject and body from the URI. A web-only entry displays the URL for you to open; nothing is ever fetched automatically.