Ghostty
Ghostty is a terminal emulator available for Linux and macOS that aims for high performance and a wide feature-set.
Ghostty was first publicly released in December 2024, as version 1.0.0.
Installation
USE flags
USE flags for x11-terms/ghostty Fast, feature-rich, and cross-platform terminal emulator
Emerge
To save time building Zig, there is a precompiled binary package available in the Gentoo ebuild repository (using this package may be superfluous for some systems that use binary package host packages by default).
To avoid x11-terms/ghostty pulling in dev-lang/zig as a dependency, emerge dev-lang/zig-bin with the --oneshot option:
root #
emerge --ask --oneshot dev-lang/zig-bin
Install x11-terms/ghostty:
root #
emerge --ask x11-terms/ghostty
Configuration
Files
- $XDG_CONFIG_HOME/ghostty/config - main configuration file
- $HOME/.config/ghostty/config - main configuration file if the XDG_CONFIG_HOME environment variable does not exist
In this article, the Ghostty configuration directory will be listed as $XDG_CONFIG_HOME/ghostty/. If the XDG_CONFIG_HOME environment variable is not defined on a given system, replace this with $HOME/.config/ghostty/, as evidenced above. (In practice, both of these paths will often resolve to ~/.config/ghostty/.)
Choose themes
Ghostty has built-in themes that can be previewed using the +list-themes action:
user $
ghostty +list-themes
In the theme preview interface, press ? to list available keybindings. The c key may be useful to copy the selected theme name to the clipboard.
Set the chosen theme by editing the Ghostty config file:
$XDG_CONFIG_HOME/ghostty/config
theme = tokyonight
Custom themes
Ghostty also supports custom themes. Themes must adhere to Ghostty's format and be placed in the $XDG_CONFIG_HOME/ghostty/themes/ directory.
Here is an example theme converted from Manjaro konsole Breath:
$XDG_CONFIG_HOME/ghostty/themes/Breath
palette = 0=#1e2229
palette = 1=#ed1515
palette = 2=#448539
palette = 3=#f67400
palette = 4=#1d99f3
palette = 5=#9b59b6
palette = 6=#1abc9c
palette = 7=#fcfcfc
palette = 8=#7f8c8d
palette = 9=#c0392b
palette = 10=#55a649
palette = 11=#fdbc4b
palette = 12=#3daee9
palette = 13=#8e44ad
palette = 14=#16a085
palette = 15=#ffffff
background = #1e2229
foreground = #17a88b
cursor-color = #17a88b
selection-background = #17a88b
selection-foreground = #1e2229
Once a custom theme file is added, edit the Ghostty config to use it:
$XDG_CONFIG_HOME/ghostty/config
theme = Breath
There is a tool to convert konsole themes to the Ghostty format: konsole2ghosttytheme.bash
Usage
Invocation
For a listing of invocation options:
user $
ghostty --help
Usage: ghostty [+action] [options] Run the Ghostty terminal emulator or a specific helper action. If no `+action` is specified, run the Ghostty terminal emulator. All configuration keys are available as command line options. To specify a configuration key, use the `--<key>=<value>` syntax where key and value are the same format you'd put into a configuration file. For example, `--font-size=12` or `--font-family="Fira Code"`. To see a list of all available configuration options, please see the `src/config/Config.zig` file. A future update will allow seeing the list of configuration options from the command line. A special command line argument `-e <command>` can be used to run the specific command inside the terminal emulator. For example, `ghostty -e top` will run the `top` command inside the terminal. On macOS, launching the terminal emulator from the CLI is not supported and only actions are supported. Available actions: +version +help +list-fonts +list-keybinds +list-themes +list-colors +list-actions +show-config +validate-config +crash-report +show-face Specify `+<action> --help` to see the help for a specific action, where `<action>` is one of actions listed below.)
Querying current setup
Show config
Pass +show-config to Ghostty to display the current configuration:
user $
ghostty +show-config
font-family = Cascadia Code NF font-family-bold = Cascadia Code NF font-family-italic = Cascadia Code NF font-family-bold-italic = Cascadia Code NF font-size = 11 command = /bin/zsh click-repeat-interval = 500 auto-update-channel = stable
List keybinds
Pass +list-keybinds to Ghostty to display the current keybinds:
user $
ghostty +list-keybinds
super + ctrl + shift + up resize_split:up,10 super + ctrl + shift + equal equalize_splits super + ctrl + shift + left resize_split:left,10 super + ctrl + shift + down resize_split:down,10 super + ctrl + shift + right resize_split:right,10 ctrl + alt + shift + j write_scrollback_file:open super + ctrl + right_bracket goto_split:next super + ctrl + left_bracket goto_split:previous ctrl + alt + up goto_split:top ctrl + alt + left goto_split:left ctrl + alt + down goto_split:bottom ctrl + alt + right goto_split:right ctrl + shift + v paste_from_clipboard ctrl + shift + a select_all ctrl + shift + o new_split:right ctrl + shift + c copy_to_clipboard ctrl + shift + q quit ctrl + shift + n new_window ctrl + shift + page_down jump_to_prompt:1 ctrl + shift + comma reload_config ctrl + shift + left previous_tab ctrl + shift + w close_surface ctrl + shift + j write_scrollback_file:paste ctrl + shift + right next_tab ctrl + shift + page_up jump_to_prompt:-1 ctrl + shift + t new_tab ctrl + shift + tab previous_tab ctrl + shift + e new_split:down ctrl + shift + enter toggle_split_zoom ctrl + shift + i inspector:toggle alt + five goto_tab:5 alt + eight goto_tab:8 alt + three goto_tab:3 alt + nine goto_tab:9 alt + two goto_tab:2 alt + four goto_tab:4 alt + f4 close_window alt + one goto_tab:1 alt + six goto_tab:6 alt + seven goto_tab:7 ctrl + comma open_config ctrl + page_down next_tab ctrl + equal increase_font_size:1 ctrl + minus decrease_font_size:1 ctrl + zero reset_font_size ctrl + enter toggle_fullscreen ctrl + page_up previous_tab ctrl + tab next_tab ctrl + plus increase_font_size:1 shift + insert paste_from_selection shift + up adjust_selection:up shift + left adjust_selection:left shift + page_up scroll_page_up shift + end scroll_to_bottom shift + right adjust_selection:right shift + page_down scroll_page_down shift + down adjust_selection:down shift + home scroll_to_top
Troubleshooting
Title appears abrupt in system's window manager
If GTK's title appears abrupt in system's window manager, turn off the adwaita USE flag firstly:
/etc/portage/package.use
x11-terms/ghostty -adwaita
Then disable the GTK title:
$XDG_CONFIG_HOME/ghostty/config
gtk-titlebar = false
See also
- Terminal emulator — emulates a video terminal within another display architecture (e.g. in X).