Reference

Configuration

Every option in config.toml, with its default.

tern reads ~/.config/tern/config.toml, or another file with --config <path>. tern --init writes a commented example. The file needs at least one [[accounts]] block.

Most [ui] options can also be changed in Settings → General, which rewrites the file in place and keeps your comments.

[[accounts]]

Key Default
name required shown in the sidebar, used by tern auth and account = …. Must be unique
email required your address on this account
display_name none From becomes display_name <email>
save_sent true copy sent mail to Sent. Set false for Gmail, which files it itself
signature none added below your text. Use "-- \nName"

[accounts.imap]

Key Default
host required
port 993
tls "implicit" implicit, starttls or none
username required
password_cmd a shell command that prints the password on its first line
password the password itself (plain text; tern doctor warns)
page_size 300 how many of the newest messages to load per folder
poll_secs 60 seconds between checks when the server doesn’t support IDLE

[accounts.smtp]

Key Default
host required
port 465
tls "implicit" use "starttls" for port 587
username required
password_cmd / password as for IMAP

[accounts.folders]

Only needed when the server doesn’t flag its special folders. Keys: sent, drafts, archive, trash, junk. Each is a folder name, such as trash = "Deleted Items".

[accounts.oauth]

Key Default
provider required google, microsoft or custom
client_id required your OAuth client’s id
client_secret / client_secret_cmd none Google needs one; Microsoft public clients don’t
tenant "common" Microsoft tenant, for work accounts
auth_url, token_url provider’s required for custom; override for others
scopes provider’s list of scopes

See OAuth.

[[dav]]

One per calendar and contacts server.

Key Default
name required shown in the calendar sidebar and settings
url required any URL on the server; calendars and address books are discovered
username required
password_cmd / password its own credentials
account none a mail account whose sign-in to reuse: its OAuth token, or its IMAP password when this block has none
hidden [] calendar ids not shown in the agenda (set by space)

The older [carddav] block (url, username, password or password_cmd) is still read, as one source named “Contacts”.

[ui]

Key Default
sidebar_width 24 folder column width, in columns
list_percent 40 share of the remaining width for the message list
icons true Nerd Font glyphs
paint_background false fill with the theme’s background; false keeps the terminal’s (and its transparency)
theme_dir Omarchy’s current theme where to read colors from. See Themes
date_format "%b %d" strftime format for dates older than a week
editor $VISUAL, $EDITOR, then nvim/vim/vi/nano used by :e in the composer
download_dir ~/Downloads where S saves attachments
mark_read_ms 800 how long a message stays open before it counts as read; 0 = immediately
mouse true click and scroll; false gives the terminal its own selection back
threads true group the list into conversations
collapse_threads true show each conversation as one row until za
calendar_timezone "America/New_York" IANA name, or est, cst, mst, pst, utc
undo_send_secs 10 how long a sent message waits so ^z can take it back; 0 sends at once
agenda_in_mail true your next meetings under the folders in the mail view
notifications true desktop notifications for new mail and meetings
reminder_minutes 10 minutes before a meeting with no alarm of its own; 0 = only events’ own alarms
zoom_link none your Personal Meeting Room link, for gz
meet_account first Google OAuth account the account gm creates Meet links with
default_calendar none "<server name>/<calendar id>", where new events and accepted invitations go (set with *)

A complete example

[[accounts]]
name = "Personal"
email = "you@fastmail.com"
display_name = "Your Name"
signature = "-- \nYour Name"

[accounts.imap]
host = "imap.fastmail.com"
username = "you@fastmail.com"
password_cmd = "pass show mail/fastmail"

[accounts.smtp]
host = "smtp.fastmail.com"
username = "you@fastmail.com"
password_cmd = "pass show mail/fastmail"

[[accounts]]
name = "Work"
email = "you@company.com"
save_sent = false

[accounts.imap]
host = "imap.gmail.com"
username = "you@company.com"

[accounts.smtp]
host = "smtp.gmail.com"
username = "you@company.com"

[accounts.oauth]
provider = "google"
client_id = "1234….apps.googleusercontent.com"
client_secret_cmd = "pass show oauth/google-secret"

[[dav]]
name = "Personal · Calendar"
url = "https://caldav.fastmail.com/dav/"
username = "you@fastmail.com"
account = "Personal"

[[dav]]
name = "Work · Calendar"
url = "https://apidata.googleusercontent.com/caldav/v2/"
username = "you@company.com"
account = "Work"

[ui]
calendar_timezone = "America/New_York"
zoom_link = "https://zoom.us/j/1234567890"
undo_send_secs = 10