The settings view¶
Open it with :settings or Shift+, (the < key);
Esc leaves it. Tab / Shift+Tab move between its
tabs, and the status line always names the keys that work
right now. Every change is a surgical edit of the same
config files, so you can mix the view and a text editor
freely.
Accounts¶
Every configured account, one per row: its name, address and IMAP host, and for OAuth accounts the grant state. J / K select.
- A adds an account.
- E edits the selected one.
- D removes it, after a confirmation that names the
account (
delete work? y/n). - Shift+J / Shift+K move it down or up the order.
- O runs the OAuth sign-in for the selected account.
- X revokes its stored grants, after a confirmation.
The order is [accounts] order in config.toml, used
everywhere: sidebar, tab bar, gt cycling and unified
queries. The account at the top is the primary, selected on
startup and the sender of a fresh compose in the unified
view (see
configuration).
Removing an account deletes only its file under
accounts/; its maildir stays in the store untouched, and
putting the file back restores the account.
Adding and editing open a form, one row per field. Tab / Down and Shift+Tab / Up move between fields, Enter on the last field (or Ctrl+S from anywhere) saves, and Esc cancels.
The account type row at the top cycles IMAP, Microsoft 365 and Google with Left / Right (or Space), and the rows below follow the type:
- IMAP shows the server rows (imap host, imap user, smtp host) and the password rows. With the type on IMAP, Ctrl+D autodiscovers: it looks the typed e-mail address up through Thunderbird-style autoconfig and fills the IMAP host and user and the SMTP host, leaving them editable; when nothing is found it says so and you fill them in.
- Microsoft 365 and Google have fixed servers, so the form hides the server and password rows and shows an optional oauth client id instead (blank on a Microsoft account uses Thunderbird's registration). Microsoft adds a graph mode toggle; switching it on reveals an auth type toggle (delegated or app-only) and a tenant id field, and app-only adds a graph secret command row.
The full file shape behind these rows is under accounts.
When editing an existing account, an identities row
replaces the add-form's from name and address: Enter
opens a list of the account's [[identity]] blocks, where
A adds one, E or Enter edits, and D removes
(the last identity cannot be removed). The per-identity
editor holds the from name and address, an optional PGP key,
an auto-sign toggle, the signature and the comma-separated
match patterns; the signature field is multi-line, so
Enter inserts a newline there and Ctrl+S commits the
identity.
Signing in¶
O on an OAuth account starts the provider's sign-in without leaving the client: the browser opens on the consent page and the interface stays responsive while you authorise (Esc cancels with nothing stored). A Microsoft sign-in falls back to the device-code flow when the local listener cannot bind, showing a URL and code in the status line. Completion stores the grants and reloads the daemon.
The browser's account picker is steered to the right identity: the account's own address pre-selects it, and a sign-in that comes back as a different account (a Microsoft browser session for another mailbox, say) is rejected with an error naming both addresses rather than silently storing the wrong account's grant.
Each OAuth account's row shows its grant state: ok with
the minutes left on the access token, refresh due or
needs sign-in, plus an app-only marker where Graph
sending uses client credentials. The selected row spells out
each grant's scope and expiry beneath the list, the same
detail antiphon oauth status prints.
X removes the selected account's stored grants after a confirmation; the account itself is untouched and a fresh O signs it back in.
Two fields deserve a word:
- Password: on macOS a password toggle picks the
mode. In
commandmode you give a command that prints the password (pass show mail/personal,secret-tool lookup ...); inkeychainmode you type the password into a masked field once and it is stored in the Keychain, with the matching lookup command written to the file, which is what the setup wizard offers too. Elsewhere the command is the only mode. Nothing secret is ever written into the file itself. - Name: renaming an account renames its file; the store folder keeps the account's name, so rename before the first sync if you care what the directory is called.
Essentials¶
The daily-driver settings, edited in place: J / K select a row, H / L (or Enter) change its value.
| Row | What it changes |
|---|---|
| theme | the palette, previewed live as you cycle |
| sync interval (minutes) | how often antiphond does a pass |
| idle | IMAP IDLE push on each INBOX |
| accounts bar | sidebar or tabs |
| reading pane | below, right or off |
| composer | embedded or suspend |
| list rows | rows in the list when the pane is below |
| sidebar width | columns, clamped 10 to 40 |
| notify sound | play a sound on new mail |
| notify speech | speak new-mail notifications |
Every row takes effect immediately. The rows the daemon
reads (sync interval, idle, notify sound, notify speech) are
pushed to a running antiphond as you change them, and the
view says applied to the running daemon. Numeric rows step
by one and stop at their bounds.
Folders¶
The third tab lists every discovered folder of every account, hidden ones included, with its sidebar alias where one is set. J / K select, and then:
- Enter edits the alias inline (Enter saves, Esc abandons); an empty alias removes the mapping.
- Shift+J / Shift+K move the folder down or up its account's sidebar order.
- H hides the folder from the sidebar, or unhides it. A hidden folder stays synced and searchable, just unlisted.
- U stops syncing the folder, or resumes it. An unsynced folder is not fetched at all.
A newly added Microsoft 365 account arrives with the mailbox's non-mail folders (calendars, contacts, conversation history, journal, RSS feeds, the outbox) already unsynced; they stay listed here, and U re-includes any you want (see accounts).
Changes show in the sidebar at once; on disk they are the
account file's [folder_names] table, folder_order,
folders_hidden and folders_unsynced lists, described
under
accounts.
Where it writes¶
Client settings land under [ui] and [sync] in
config.toml; account details land in that account's file
under accounts/. Each change is one atomic edit, and a
local.toml override kept for one machine still wins
afterwards, as configuration describes.