Files
tty7/docs/customization/settings.mdx
T
l0ng-ai de15f9b0ab feat(ssh): keep saved hosts in servers.json and add an SSH tab title setting (#952)
Saved SSH hosts and their usage counts move out of config.json into
servers.json beside it, so config.json can be synced between machines
without carrying a server list (#911). An older config.json is split on
first load: servers.json is written first (0600), then only the two keys
are removed from config.json, leaving every other key as it was. When
both files hold hosts, servers.json wins and the stale copy falls out of
config.json at its next save. A servers.json that does not parse is kept
aside and blocks saves, as config.json does; hand edits hot-reload.

Settings -> Window & Tabs -> SSH tab title (`ssh_tab_title`) pins an SSH
tab to the profile name (saved host name, ~/.ssh/config alias, or the
address typed for a quick connect) or the hostname, on the OSC title's
rung of the existing label ladder: a renamed tab still wins, OSC titles
are still tracked, local panes are untouched (#726).
2026-09-25 16:34:38 +08:00

110 lines
4.2 KiB
Plaintext

---
title: "Settings"
description: "What lives in each section, and how the settings file works."
---
<kbd>⌘ ,</kbd> opens Settings. There is a search box at the top that matches
setting names *and* keywords, which is usually faster than remembering which
section something is in.
<Frame caption="Settings opens in its own window, sections down the left">
<img src="/images/settings.webp" alt="tty7 Settings" />
</Frame>
## The eight sections
<CardGroup cols={2}>
<Card title="General" icon="sliders">
Interface language, startup and layout restore, tray icon, default terminal,
command completion notifications, update preferences and proxy, and the
tty7 server.
</Card>
<Card title="Appearance" icon="palette" href="/customization/themes">
Theme and colors, interface and terminal fonts, cursor, background image,
transparency, and inactive panes.
</Card>
<Card title="Terminal" icon="terminal">
Shell and starting directory, prompt editor, completion and command history,
scrollback, scrolling, bell, and opening links and files.
</Card>
<Card title="Keyboard & Mouse" icon="keyboard" href="/customization/keybindings">
Keyboard shortcuts, Option as Meta, mouse behavior, selection, and clipboard.
</Card>
<Card title="Window & Tabs" icon="window-maximize">
Tab position and placement, sidebar grouping, diff previews, and what SSH
tabs are called.
</Card>
<Card title="SSH" icon="server" href="/remote/ssh">
Hosts, connection defaults, security, authentication, proxies, and forwarding.
</Card>
<Card title="Integrations" icon="robot" href="/agents/status">
AI agent hooks per machine and the tty7 command on PATH.
</Card>
<Card title="About" icon="circle-info" href="/reference/updates">
App information, version, manual update checks, and available updates.
</Card>
</CardGroup>
## Search and edit
Search matches setting names, descriptions, English aliases, and configuration
keys such as `mouse_zoom_modifier`. Ordinary results are editable directly;
use the path above a result to open its category. SSH, theme editors, and
keyboard shortcuts have dedicated views.
Use **Modified only** to find settings that differ from their defaults. A
modified setting offers **Reset setting**; installation and maintenance actions
do not have a generic reset.
Ordinary controls save automatically. Text fields commit valid values on Enter
or when focus leaves the field. Custom theme edits are previewed until you save;
cancel restores the original theme. SSH profiles also use explicit saving.
Leaving an edited form offers save, discard, or continue editing.
## The settings file
Everything the Settings window writes goes to one file:
| | |
|---|---|
| macOS / Linux | `~/.config/tty7/config.json` |
| Windows | `%APPDATA%\tty7\config.json` |
The one exception is your saved SSH hosts, which live beside it in
`servers.json` — so `config.json` can be synced between machines without
carrying your servers. [servers.json →](/reference/configuration#ssh)
Set `TTY7_CONFIG_DIR` to point the whole directory — config, themes, state —
somewhere else.
You can edit the file by hand; a handful of options exist only there. See the
[configuration reference](/reference/configuration) for every key, its type, and
its default.
### How it handles mistakes
The file is written atomically, and read forgivingly:
- **A missing key** means the default — you only have to write what you change.
- **An out-of-range number** is clamped into its band, not rejected.
- **An unrecognised enum value** falls back to the default with a log line,
rather than failing the whole file.
- **An unparseable file** is not overwritten. tty7 starts on defaults, keeps a
copy at `config.json.corrupt`, and says so in the log.
<Note>
A UTF-8 BOM at the start of the file is tolerated, which matters if you edited
it in a Windows editor.
</Note>
## Language
**Settings → General → Language** switches the interface between English,
简体中文, and 日本語. The choice is explicit — the system language is never
inferred — and CLI output stays English regardless, so agent and script
integrations keep a stable surface.
```json
{ "gui_language": "zh-CN" }
```