Files
tty7/docs/customization/settings.mdx
l0ng-ai 5bbebc6804 Merge remote-tracking branch 'origin/main' into feat/pinned-sidebar-groups
# Conflicts:
#	CHANGELOG.md
#	crates/tty7-core/src/daemon/control.rs
#	docs/customization/settings.mdx
#	docs/reference/configuration.mdx
#	src/ui/app.rs
#	src/ui/home.rs
#	src/ui/settings.rs
2026-09-25 10:53:14 +02: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 auto 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" }
```