Ghostty Cheatsheet
Splits and Tabs
Use this Ghostty reference while you build software engineering projects, review code, or refresh the syntax you reach for most.
Splits
Splits are native UI, not a multiplexer. Ghostty calls each terminal in the tree a surface.
| Action | Argument | Notes |
|---|---|---|
new_split | right, down, left, up, auto | auto splits along the larger dimension |
goto_split | right, down, left, up, previous, next | previous / next walk creation order |
resize_split | direction,pixels | resize_split:up,10 |
equalize_splits | — | evens out every split in the window |
toggle_split_zoom | — | the focused split fills the tab |
close_surface | — | closes the focused split or tab |
keybind = cmd+d=new_split:right
keybind = cmd+shift+d=new_split:down
keybind = cmd+opt+left=goto_split:left
keybind = ctrl+cmd+left=resize_split:left,20
keybind = cmd+shift+enter=toggle_split_zoomSplit defaults
| Trigger (macOS) | Trigger (Linux) | Action |
|---|---|---|
cmd+d | ctrl+shift+o | new_split:right |
cmd+shift+d | ctrl+shift+e | new_split:down |
cmd+[ / cmd+] | ctrl+super+[ / ctrl+super+] | goto_split:previous / :next |
cmd+opt+arrow | ctrl+alt+arrow | goto_split directional |
cmd+ctrl+arrow | super+ctrl+shift+arrow | resize_split by 10px |
cmd+ctrl+= | — | equalize_splits |
cmd+shift+enter | ctrl+shift+enter | toggle_split_zoom |
Tabs
| Action | Argument | Notes |
|---|---|---|
new_tab | — | |
goto_tab | 1–n | |
previous_tab / next_tab / last_tab | — | |
move_tab | signed integer | reorder relative to current position |
close_tab | this, other, all | |
toggle_tab_overview | — | GTK tab overview |
prompt_tab_title / set_tab_title | — / text | rename a tab |
prompt_surface_title / set_surface_title | — / text | rename a split |
keybind = cmd+t=new_tab keybind = cmd+shift+]=next_tab keybind = cmd+opt+w=close_tab:this keybind = cmd+shift+i=prompt_tab_title
cmd+1 through cmd+8 (macOS) and alt+1 through alt+8 (Linux) jump to tabs
1 to 8. cmd+9 and alt+9 jump to the last tab, not tab 9.
Windows
| Action | Argument |
|---|---|
new_window | — |
goto_window | previous, next |
close_window / close_all_windows | — |
toggle_fullscreen / toggle_maximize | — |
toggle_window_decorations | — |
toggle_window_float_on_top | — |
reset_window_size | — (macOS only) |
Working directory inheritance
Each level has its own switch, all true by default.
window-inherit-working-directory = true tab-inherit-working-directory = true split-inherit-working-directory = true window-inherit-font-size = true working-directory = /Users/me/code # fallback when nothing was focused
With shell integration active, a new terminal starts in the working directory of the previously focused terminal, which is what makes this feel seamless.
Appearance of the tree
| Key | Default | Notes |
|---|---|---|
unfocused-split-opacity | 0.7 | set 1 to stop dimming, clamped to 0.15–1 |
unfocused-split-fill | background color | color of the dimming rectangle |
split-divider-color | chosen automatically | since 1.1.0 |
split-preserve-zoom | off | navigation keeps zoom when you goto_split |
window-new-tab-position | current | or end |
window-show-tab-bar | auto | always, auto, never, Linux GTK only |
Any operation that changes focus or layout normally unzooms a zoomed split.
split-preserve-zoom = navigation changes that so navigating moves the zoom to the
newly focused split instead. Prefix any value with no- to turn it off.