My new favorite terminal is Ghostty. I'm excited to see this (and other) efforts to revitalize and modernize the terminal.
Install
- Mac: I don't use Macs but should be easy: Go download latest release.
- Linux: Go check out what downloads are available.
I found I didn't enjoy the lag of the Debian package builds so I'm now building from source for my Ubuntu/Debian boxes (see below) - Windows: Wait a while .. not there yet.
Build (from source)
https://ghostty.org/docs/install/build
sudo apt install libgtk-4-dev libadwaita-1-dev git libncurses-dev blueprint-compiler
On Debian/Ubuntu unstable: sudo apt install gcc-multilib
The below assumes you've installed all the development libraries and tool dependencies:
mkdir repos # or you location
cd repos
git clone https://github.com/ghostty-org/ghostty
cd ghostty
zig build -p $HOME/.local -Doptimize=ReleaseFast
Shaders
https://ghostty.org/docs/config/reference#custom-shader
Ghostty supports Shaders. Hevi 's ' Wild Terminal Configurations with Ghostty Shader Support video brought to light GitHub @m-ahdal's ghostty-shaders collection
cd .config/ghostty
git clone https://github.com/m-ahdal/ghostty-shaders.git
cd ghostty-shaders/
ls *.gls # list out shaders available
ghostty --custom-shader=ghostty-shaders/fireworks-rocket.glsl
theme = CyberpunkScarletProtocol
custom-shader = ghostty-shaders/in-game-crt.glsl
The Shaders list as of 2025.02:
animated-gradient-shader.glsl galaxy.glsl retro-terminal.glsl
bettercrt.glsl gears-and-belts.glsl sin-interference.glsl
bloom.glsl glitchy.glsl smoke-and-ghost.glsl
cineShader-Lava.glsl glow-rgbsplit-twitchy.glsl sparks-from-fire.glsl
crt.glsl gradient-background.glsl spotlight.glsl
cubes.glsl in-game-crt.glsl starfield-colors.glsl
dither.glsl inside-the-matrix.glsl starfield.glsl
drunkard.glsl just-snow.glsl tft.glsl
fireworks.glsl matrix-hallway.glsl underwater.glsl
fireworks-rockets.glsl negative.glsl water.glsl
The ones that jumped out for me were:
matrix-hallway.glsl
gears-and-belts.glsl
now my primary
Adapting ShaderToy shaders
www.shadertoy.com/view/XtGGRt (Aurora)
- scale down iTime value to slow things down
For those wanting to deepdive into the code, it uses a couple of functions to get the terminal text to display:
mix
takes two vec's (colors) as arguments and smoothly mixes between them based on the third argument.step
outputs 0.0 or 1.0 depending on whether the second argument or below the first argument (threshold).length
calculates the length of a vector, in this case it effectively calculates the distance from black. In other words, the code says "mix discretely between the fragColor and the terminalColor based on whether terminalColor is really close to black or not."
This can be repeated multiple times to load multiple shaders. The shaders will be run in the order they are specified.
Blueprint-compiler build error
After a zig build
I was getting these errors:
Build Summary: 96/105 steps succeeded; 3 failed (disable with --summary none)
install transitive failure
└─ install ghostty transitive failure
└─ zig build-exe ghostty Debug native transitive failure
├─ run glib-compile-resources (ghostty_resources.c) transitive failure
│ └─ run generate_gresource_xml transitive failure
│ ├─ run gtk_blueprint_compiler (prompt-title-dialog.ui) failure
│ ├─ run gtk_blueprint_compiler (menu-surface-context_menu.ui) failure
│ └─ run gtk_blueprint_compiler (menu-window-titlebar_menu.ui) failure
└─ run glib-compile-resources (ghostty_resources.h) transitive failure
└─ run generate_gresource_xml (+4 more reused dependencies)
error: the following build command failed with exit code 1:
The fix I found was to sudo apt install blueprint-compiler
and I was able to build from source Ghostty again using zig build
.