Skip to content

Configuration files

Allison Bayless edited this page Oct 17, 2026 · 1 revision

Configuration files

TideMail stores its config in ~/.config/tidemail/config.toml and its SQLite cache in ~/.local/share/tidemail/mail.db. Set XDG_DATA_HOME to use a different cache location. The update checker's own state (when it last checked, and which version you dismissed) is kept in mail.db, not in config.toml, so a config file under version control doesn't change every time TideMail checks for updates.

Example configuration:

theme = "catppuccin-mocha"
default_account = "8f43c9e644384bd5a25a27ff0d9c2701"

[display]
send_delay_seconds = 5
send_max_attempts = 3
images = "auto"  # "auto" (inline + blocked remote), or "off" (text placeholders)

[[account]]
id = "8f43c9e644384bd5a25a27ff0d9c2701" # generated by TideMail; do not copy or edit
name = "Personal"
imap_host = "imap.example.com"
imap_port = 993
imap_tls = true
smtp_host = "smtp.example.com"
smtp_port = 587
smtp_tls = true
user = "alice@example.com"
auth_method = "password"  # "password" (default) or "oauth2"
password = "app-password"
from = "Alice <alice@example.com>"
signature = "Alice\nSent with TideMail"
sync_minutes = 0  # 0 = push (IDLE), N = poll every N min, -1 = manual only

from is the From address row in the account form. Give it an address — alice@example.com or Alice <alice@example.com> — or leave it blank to send as user, which works only when user is itself an address. A display name on its own is not enough: the account form refuses to save one, because SMTP has no address to send from and would only fail once the message was already queued.

The signature is a multi-line box in the account form — press Enter for a new line, Tab to move on, and Ctrl+S to save without leaving it. Arrow keys walk its lines and step to the next field at the top and bottom. Editing the file by hand works too; a TOML multi-line string is easier to read than escapes:

signature = """
Alice
Sent with TideMail"""

auth_method is set for you: it becomes "oauth2" once you complete a Ctrl+O sign-in for a Gmail/Outlook account, otherwise "password". The refresh token and password live in the system keychain, not this file. An account never switches to OAuth on its own — a leftover keychain token cannot promote it.

default_account names the account a new message is sent from, and the account TideMail focuses at startup. It holds an account id, not a position, so renaming or reordering accounts never moves it. Delete it, or the account it names, and TideMail falls back to the first account and opens on the Unified Inbox. Space in Accounts writes this line for you.

The order of the [[account]] blocks is the order accounts appear in: the sidebar, the account list, and the Ctrl+U sender picker in compose. Reorder them here, or with Shift+J and Shift+K in Accounts.

The generated account id links this block to cached mail, drafts, queued mail, and keychain credentials. It stays fixed when the display name changes. TideMail adds missing IDs on upgrade and first saves the original file as config.toml.pre-account-ids.bak.

If config.toml is malformed or an automatic migration cannot be saved, TideMail stops instead of starting with defaults that could overwrite the real settings. The startup error names the exact config path and the parse or permission problem to fix. If an account's cached folders no longer have a matching config block, affected actions stop with a status-line explanation; open Accounts and re-enter that account's server details.


Source in TideMail at 65f889c

Clone this wiki locally