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.

ActionArgumentNotes
new_splitright, down, left, up, autoauto splits along the larger dimension
goto_splitright, down, left, up, previous, nextprevious / next walk creation order
resize_splitdirection,pixelsresize_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_zoom

Split defaults

Trigger (macOS)Trigger (Linux)Action
cmd+dctrl+shift+onew_split:right
cmd+shift+dctrl+shift+enew_split:down
cmd+[ / cmd+]ctrl+super+[ / ctrl+super+]goto_split:previous / :next
cmd+opt+arrowctrl+alt+arrowgoto_split directional
cmd+ctrl+arrowsuper+ctrl+shift+arrowresize_split by 10px
cmd+ctrl+=—equalize_splits
cmd+shift+enterctrl+shift+entertoggle_split_zoom

Tabs

ActionArgumentNotes
new_tab—
goto_tab1–n
previous_tab / next_tab / last_tab—
move_tabsigned integerreorder relative to current position
close_tabthis, other, all
toggle_tab_overview—GTK tab overview
prompt_tab_title / set_tab_title— / textrename a tab
prompt_surface_title / set_surface_title— / textrename 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

ActionArgument
new_window—
goto_windowprevious, 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

KeyDefaultNotes
unfocused-split-opacity0.7set 1 to stop dimming, clamped to 0.15–1
unfocused-split-fillbackground colorcolor of the dimming rectangle
split-divider-colorchosen automaticallysince 1.1.0
split-preserve-zoomoffnavigation keeps zoom when you goto_split
window-new-tab-positioncurrentor end
window-show-tab-barautoalways, 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.