Appearance
Config File
Where Otty keeps its settings, how to edit the file by hand, and how changes take effect.
Most settings have a control in the Settings panel, and the panel writes the same file for you — so you rarely have to touch it. But editing the file directly is handy when you want to version-control your setup, copy it between machines, comment your choices, or set a key that only lives in the file.
Where it is
~/.config/otty/config.tomlThe file is TOML — a flat list of key = value pairs, one assignment per line, with # for comments. Otty's reader is lenient, so quotes around simple string values are optional.
The file doesn't have to exist — Otty runs on defaults until you create it. If you've only ever used the Settings panel, the panel created it the first time you changed something.
Opening it
The quickest way is from the app:
- Open Settings (
⌘,, or Otty menu → Settings…). - Go to the Advanced tab.
- Under Config File, the Path row shows the exact location, and Open Config File opens it in your default editor — creating an empty file first if you don't have one yet.
Or just open ~/.config/otty/config.toml in any editor directly.
Editing it
Each line sets one key:
sh
# A comment
font-family = "JetBrains Mono"
font-size = 14
background-opacity = 0.95
theme = Nord
# Repeat a key to add list entries
keybind = cmd+shift+t=new_tab- One assignment per line; whitespace around
=is optional. - Unknown keys are silently ignored, so a typo won't break startup and a config written for a newer Otty still loads on an older build.
~and$VARexpand inside string values (working-directory = ~/projects).include = <path>pulls in another file; later includes win, and the main file is read last.
For the full grammar see Config File Format, and for every available key and its default see the Configuration Reference.
Settings for this machine only
config.toml is the file you copy between machines. Some settings should differ on one machine: a shell that is only installed there, a window size for that display, apps that only exist there. Put those in a second file next to the main one:
~/.config/otty/config.local.tomlTo create the file and open it, run otty config edit --local in a terminal (see CLI Reference), or create it yourself in any editor. otty config path --local prints where it is. Otty never creates this file on its own.
It uses the same format as config.toml, and it stays on this machine. The two files combine like this:
- A key in
config.local.tomlwins over the same key inconfig.toml. Every other key still comes fromconfig.toml. - A list is replaced, not extended. If the local file has any
open-with-app(orenv,keybind, …) lines, those lines are the whole list on this machine. None of the entries fromconfig.tomlare added to it. - A
# key = … (reset to default)line keeps that key at its default on this machine, whateverconfig.tomlsays.
sh
# ~/.config/otty/config.local.toml
command = /opt/homebrew/bin/fish
sidebar-width = 260
open-with-app = "Zed|dev.zed.Zed"The Settings panel respects the split. A change to a setting whose value comes from config.local.toml is saved there. Every other change goes to config.toml. If you reset a local setting, the panel writes the (reset to default) line so it stays local. The panel never moves a setting into the local file by itself: to make a setting machine-specific, add it to the file, or run otty config set --local <key> <value>.
Settings → Advanced → Reset All Settings empties both files.
To see which file a value comes from, run otty config get <key> --show-origin. Edits to config.local.toml take effect the same way as edits to config.toml (see Reloading).
Reloading
Saving the file applies the changes immediately to every open window — no restart, no signal. Otty watches the file and hot-reloads it.
If you ever need to force a re-read (for example after editing an included file), use Settings → Advanced → Config File → Reload Config, or run the Reload Config command from the Command Palette.
See also
- Advanced / All Settings — find and edit any key from the GUI.
- Import / Export Settings — bring in a config from Ghostty, Kitty, or Alacritty.