TUI settings
Customize input layout, mouse interaction, and status placement.
Open /settings and choose tui settings to control the main input chrome, mouse interaction, and where status information appears. Changes apply immediately and are saved in $ZOT_HOME/config.json.
Config keys
{
"tui_click_to_position": true,
"tui_input_style": "block",
"tui_status_position": "below_input",
"tui_working_position": "above_input"
}Mouse cursor and text selection
Enable **click to position cursor** under /settings > **tui settings**. A stationary left click in the main input moves the cursor, including wrapped lines and Unicode text. Click-drag selects visible chat or input text without moving the editor cursor. The selection stays highlighted after release and is not copied automatically.
Display updates pause until the selection is dismissed so streaming cannot move selected text. The agent continues working, and the view catches up when the selection clears. Mouse interaction is ignored while a dialog owns input. Without a selection, ctrl+c and esc retain their usual behavior.
ctrl+shift+c and cmd+c can also copy if your terminal forwards the chord to zot. Terminal-native copy shortcuts that the emulator consumes cannot copy zot's highlighted selection. Use ctrl+c for explicit copying in zot.
Clipboard copy uses pbcopy on macOS, PowerShell on Windows, or wl-copy, xclip, or xsel on Linux. Over SSH, or when local copying fails, zot sends an OSC 52 clipboard request instead. Your terminal or multiplexer must allow it, and zot cannot verify that the request succeeded.
Custom shortcuts
Bind key chords to slash commands with keymap in $ZOT_HOME/config.json. There is no /settings row for this yet; edit the file and restart zot. Each key is a case-insensitive chord made of at least one modifier (ctrl, alt or option, shift, cmd or super) plus a single character or a named key (enter, tab, space, esc, backspace, delete, up, down, left, right, home, end, pageup, pagedown). Each value is a slash command: built-in commands, extension commands, and /skill:<name> all work.
{
"keymap": {
"ctrl+n": "/new",
"ctrl+s": "/settings",
"ctrl+g": "/git-tools:status",
"alt+r": "/skill:code-review"
}
}Shortcuts run in the main interactive input and use the same dispatch path as typing the command. They do not apply while a dialog, extension panel, or tool confirmation has focus. The example ctrl+n binding starts a fresh persisted session, but it is unavailable when zot runs with --no-session. Entries that cannot be bound are skipped and reported above the transcript at startup (the notice clears with /clear): unmodified keys such as enter or g, values that do not start with /, and the reserved ctrl+c, ctrl+d, and esc chords. /help lists the active bindings under custom keys.