Appearance
Config File Format
The syntax of ~/.config/otty/config.toml.
Otty's config is a TOML file — a flat list of
key = valuepairs, 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
| Type | Examples |
|---|---|
| String | JetBrains Mono, "value with spaces", 'literal' |
| Integer | 13, 0, -1 |
| Float | 0.92, 1.0, 3.14 |
| Boolean | true / false, also on / off |
| Color | #RRGGBB, #RRGGBBAA, named (red, cornflowerblue) |
| Enum | block, glass-dark — see each key's docs |
| List | see 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.1An 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 # removeSee the CLI Reference for the rest of otty config.
Includes
include = ~/.config/otty/personal.toml
include = ~/dotfiles/otty/work.tomlLater 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/fishHot 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.
shellbecomescommand,font-boldbecomestext-bold. The value is unchanged — only the spelling is, so that resetting it later actually clears it.
See also
- Configuration Reference — every key.
- Theme Format — the
.tomlschema for theme files (full TOML, with[token]sections).