Settings
What lives in each section, and how the settings file works.
⌘ , 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.
The eight sections
Appearance
Theme, sync with system, typography, cursor, transparency, language.
Terminal
Shell and start directory, scrollback and scrolling, mouse, bell, per-pane history.
Input
Prompt features, selection & clipboard, keyboard (Option as Meta), links.
SSH
Hosts, defaults, security, and every per-profile field.
Agents
Hook installation per agent and per machine, and the CLI on PATH.
Window & Tabs
Startup window, tab bar position and grouping, notifications, tray icon.
Keybindings
Every shortcut, the tmux preset, the prefix.
About
Version, update channel, and the updater.
The settings file
Everything the Settings window writes goes to one file:
| macOS / Linux | ~/.config/Nermal/config.json |
| Windows | %APPDATA%\Nermal\config.json |
Set Nermal_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 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. Nermalstarts on defaults, keeps a
copy at
config.json.corrupt, and says so in the log.
A UTF-8 BOM at the start of the file is tolerated, which matters if you edited it in a Windows editor.
Language
Settings → Appearance → 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.
{ "gui_language": "zh-CN" }