Terminal Power-User Toolkit [2026 Config Cheat Sheet]
Bottom Line
Use Ghostty for fast native terminal rendering, Zellij for persistent panes, tabs, and session control, and Starship for a portable prompt layer. The highest-leverage setup in 2026 is not choosing one of them, but composing all three cleanly.
Key Takeaways
- ›Ghostty is the terminal emulator; Zellij is the multiplexer; Starship is the prompt.
- ›zellij watch, zellij action, and layouts make repeatable terminal workflows scriptable.
- ›Ghostty can reload config live and treats every config key as a launch-time CLI flag.
- ›Starship prompt speed usually comes down to a smaller format plus tuned timeouts.
A serious 2026 terminal stack is layered, not monolithic. Ghostty gives you a modern native terminal with configurable keybindings and splits, Zellij adds persistent panes, layouts, and session automation, and Starship standardizes the prompt across shells. This reference is optimized for breadth: quick role separation, searchable shortcuts, grouped commands, compact config baselines, and the handful of advanced patterns that save the most time in daily engineering work.
- Ghostty is the renderer; Zellij is the workspace engine; Starship is the prompt layer.
- Zellij is strongest when you need detachable sessions, scripted pane creation, and saved layouts.
- Ghostty is strongest when you want native tabs and splits with runtime-reloadable config.
- Starship is strongest when you want one prompt config across bash, zsh, fish, and more.
| Dimension | Ghostty | Zellij | Starship | Edge |
|---|---|---|---|---|
| Primary role | Terminal emulator | Terminal multiplexer | Prompt engine | Depends on layer |
| Tabs and splits | Native UI tabs and splits | Persistent panes, tabs, and layouts | Not applicable | Zellij for persistence |
| Detach and reattach | No | Yes | No | Zellij |
| Config reload at runtime | Yes | Limited by feature and restart needs | Shell reload dependent | Ghostty |
| Cross-shell portability | Not a shell tool | Shell-agnostic workspace | Designed for many shells | Starship |
| CLI automation surface | Config and inspection helpers | Deep action and layout control | Init and config driven | Zellij |
How the Stack Fits Together
Bottom Line
Ghostty and Zellij are not substitutes in the strict sense. Use Ghostty as the terminal you look at, Zellij as the long-lived workspace you control, and Starship as the prompt you carry between shells.
The clean mental model is simple: one layer draws pixels, one layer manages terminal state over time, and one layer summarizes context at the prompt. Once you stop asking one tool to do every job, configuration gets easier and muscle memory stabilizes.
- Ghostty owns native windowing, rendering, tabs, splits, and terminal-specific UX.
- Zellij owns pane orchestration, detaching, reattaching, layouts, and session resurrection.
- Starship owns prompt formatting, module display, and shell-agnostic prompt portability.
When to choose Ghostty
- Choose Ghostty when you want native tabs and splits without committing every workflow to a multiplexer.
- Choose Ghostty when runtime config reload and launch-time overrides via CLI flags matter.
- Choose Ghostty when platform-native behavior is more important than remote session persistence.
When to choose Zellij
- Choose Zellij when you need sessions to survive terminal closes, disconnects, or laptop sleep.
- Choose Zellij when pane creation, tab movement, and layout loading should be scriptable.
- Choose Zellij when you want one repeatable workspace model across terminal emulators.
Starship is the least controversial part of the stack because it complements both. If you already share snippets through a team wiki, pairing prompt samples with a formatting pass in the Code Formatter keeps copied shell blocks readable.
Live-Filtered Quick Ref
Search by tool, mode, or verb. The filter works best for terms like pane, split, reload, tab, or prompt.
| Tool | Shortcut or Pattern | Purpose |
|---|---|---|
| Zellij | Ctrl+g | Toggle between locked and normal mode. |
| Zellij | Ctrl+p, n | Enter pane mode, then open a new pane. |
| Zellij | Ctrl+p, r | Enter pane mode, then split to the right. |
| Zellij | Ctrl+p, d | Enter pane mode, then split downward. |
| Zellij | Ctrl+t, n / Ctrl+t, x | Create or close a tab from tab mode. |
| Zellij | Ctrl+o, d | Detach from the current session. |
| Ghostty | Ctrl+Shift+, on Linux / Cmd+Shift+, on macOS | Reload configuration at runtime. |
| Ghostty | keybind = ctrl+d=new_split:right | Create a right split with a custom binding. |
| Ghostty | keybind = performable:ctrl+c=copy_to_clipboard | Copy only when a selection exists. |
| Starship | starship init <shell> | Initialize the prompt in your shell startup file. |
No matching shortcuts found. Clear the filter and try another term.
Starship does not ship a keyboard map comparable to Zellij or Ghostty; its leverage is in prompt modules and shell initialization.
Commands by Purpose
Session control and pane automation
- zellij list-sessions shows running and resurrectable sessions.
- zellij attach reconnects to a named session.
- zellij watch gives you a read-only view of a session.
- zellij action is the automation entry point for panes, tabs, focus, layouts, and dumps.
zellij list-sessions
zellij attach my-session
zellij watch my-session
zellij action new-pane --name "follow this log!" -- tail -f /tmp/my-log-file
zellij action dump-layout
zellij setup --generate-completion zsh
zr tail -f /var/log/system.log
ze ./main.rs
Ghostty introspection and one-off overrides
- ghostty +show-config --default --docs prints the documented default config.
- ghostty +list-keybinds --default shows the default keymap.
- ghostty +list-actions exposes the action names available to custom keybindings.
- Every config key is also a CLI flag, which makes temporary launch-time tests cheap.
ghostty +show-config --default --docs
ghostty +list-keybinds --default
ghostty +list-actions
ghostty --font-family="JetBrains Mono"
ghostty --background=282c34
Prompt bootstrapping
- Starship is binary plus shell init. The shell init line is the part people forget.
- STARSHIP_CONFIG lets you move prompt config out of the default path when you want per-machine or checked-in variants.
# bash
eval "$(starship init bash)"
# fish
starship init fish | source
# zsh
eval "$(starship init zsh)"
# optional custom config path
export STARSHIP_CONFIG=~/dotfiles/starship.toml
Configuration Patterns
These baselines stay intentionally small. The goal is to keep the stack legible enough that you can remember it without reopening docs every week.
Zellij baseline
// ~/.config/zellij/config.kdl
default_mode "locked"
pane_frames true
mouse_mode true
scroll_buffer_size 10000
copy_on_select false
session_name "main"
attach_to_session true
support_kitty_keyboard_protocol true
- default_mode set to locked reduces shortcut collisions with apps running inside the terminal.
- attachtosession paired with a fixed session_name turns one command into a stable daily workspace entry point.
- supportkittykeyboard_protocol is worth leaving on when the host terminal supports it.
Ghostty baseline
Use ~/.config/ghostty/config.ghostty. Installs from before 1.2.3 may still use config.
# ~/.config/ghostty/config.ghostty
font-family = JetBrains Mono
background = 282c34
foreground = ffffff
keybind = ctrl+d=new_split:right
keybind = ctrl+z=close_surface
keybind = performable:ctrl+c=copy_to_clipboard
- font-family, background, and foreground are straightforward first edits.
- keybind lines are composable enough that you can grow this file slowly instead of replacing the whole map.
- performable: is useful when you want a shortcut to fall through unless the action can actually run.
Starship baseline
# ~/.config/starship.toml
"$schema" = 'https://starship.rs/config-schema.json'
add_newline = false
scan_timeout = 10
command_timeout = 500
format = "$directory$git_branch$git_status$nodejs$python$rust$character"
[directory]
truncation_length = 3
truncate_to_repo = true
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"
[package]
disabled = true
- scan_timeout defaults to 30 ms and command_timeout defaults to 500 ms, so trimming modules often matters more than raising timeouts.
- truncation_length plus truncatetorepo keeps path noise under control in large monorepos.
- Disabling modules explicitly is cleaner than relying on incidental non-detection.
Advanced Usage
Let Zellij own persistence
- Zellij includes built-in session resurrection by default, which is the main reason it earns a permanent slot in a power-user stack.
- zellij --layout /path/to/layout_file.kdl can be used at startup or inside a running session to materialize a workspace shape on demand.
- Remote layouts are supported, but commands from remote layouts are suspended behind a confirmation banner for safety.
// layout_file.kdl
layout {
pane
pane split_direction="vertical" {
pane
pane command="htop"
}
}
Use Ghostty as a dynamic front end
- Because every config key is also a CLI flag, you can test visual changes before committing them to disk.
- ghostty +show-config --default --docs is the fastest way to inspect what the application thinks the effective defaults are.
- global: keybindings are available only on macOS and require Accessibility permissions.
Push context to the right in Starship
- right_format is currently supported in elvish, fish, zsh, xonsh, cmd, nushell, and bash.
- For bash, a right prompt requires Ble.sh 0.4+.
- A minimal left prompt plus a busy right prompt is one of the cleanest ways to keep command entry readable.
# ~/.config/starship.toml
format = """$character"""
right_format = """$all"""
Primary references for this cheat sheet: Zellij docs, Ghostty docs, and Starship docs.
Frequently Asked Questions
Is Ghostty a Zellij replacement? +
What is the best way to split responsibility between Ghostty and Zellij? +
How do I make Starship feel faster? +
format so fewer modules run on every prompt. Then tune scan_timeout and review modules that call external tools or scan large repos. In most setups, a smaller prompt surface helps more than adding visual complexity.Can Zellij restore sessions after I quit or crash my terminal? +
zellij list-sessions and reopened with zellij attach. That persistence is one of its biggest advantages over terminal-only split management.Get Engineering Deep-Dives in Your Inbox
Weekly breakdowns of architecture, security, and developer tooling — no fluff.