Skip to content

Config File Format ​

The syntax of ~/.config/otty/config.toml.

Otty's config is a TOML file — a flat list of key = value pairs, one per line, with # for comments. It follows TOML string quoting, and Otty's reader is lenient: quotes around simple string values are optional.

Lexical structure ​

# Comments start with `#`
key = value
key-with-dashes = "string value"
font-feature = "+liga, +calt"   # quoted to preserve commas
  • One assignment per line.
  • Whitespace around = is optional.
  • Unknown keys are silently ignored — typos won't error.
  • Blank lines and # comments are skipped.

Value types ​

TypeExamples
StringJetBrains Mono, "value with spaces", 'literal'
Integer13, 0, -1
Float0.92, 1.0, 3.14
Booleantrue / false, also on / off
Color#RRGGBB, #RRGGBBAA, named (red, cornflowerblue)
Enumblock, glass-dark — see each key's docs
Listsee below — either a repeated key or an inline array

Lists ​

Some settings hold several values. They come in two spellings, and each key uses one or the other:

Repeated key — one line per entry, in order. keybind, env, cli-alias, hint-pattern, agent-command, agent-quota-off, open-with-app, open-with-command, profile, tab-rule, details-view, autocomplete-history-ignore.

env = FOO=bar
env = NO_PROXY=localhost,127.0.0.1

An entry is the rest of the line, so it may contain commas — the second line above is one variable, not two.

Inline array — one line holding the whole list. font-family-fallback (and its bold / italic variants), widen-ambiguous, link-scheme-allowlist, shell-integration-disabled-shells, notification-sound, session-restore-process-allowlist, progress-bar-commands.

font-family-fallback = ["PingFang SC", "Noto Color Emoji"]

[] empties the list.

From the command line, otty config get <key> prints one entry per line and otty config set <key> takes the whole list back — or a signed entry to change just one:

bash
otty config set env +EDITOR=nvim   # add, or replace the EDITOR entry
otty config set env -EDITOR        # remove

See the CLI Reference for the rest of otty config.

Includes ​

include = ~/.config/otty/personal.toml
include = ~/dotfiles/otty/work.toml

Later includes override earlier ones; the main file is read last and overrides everything.

Environment expansion ​

~ and $VAR expand inside string values:

working-directory = ~/projects
shell-command     = $HOMEBREW_PREFIX/bin/fish

Hot reload ​

Saving config.toml reapplies the changes immediately to every window. No restart, no signal.

What Otty writes back ​

The Settings window and otty config set edit this file in place rather than regenerating it, so:

  • Comments, blank lines and key order survive. A key you already have is updated where it sits; a new one is appended at the end.
  • Keys Otty doesn't recognise are left alone. A file shared with a newer version keeps its newer keys.
  • A setting you reset is commented out, as # cursor-style = bar (reset to default), so you can see what it used to be.
  • A key written under an alias is rewritten under its real name. shell becomes command, font-bold becomes text-bold. The value is unchanged — only the spelling is, so that resetting it later actually clears it.

See also ​

Otty