My new favorite terminal is Ghostty. I'm excited to see this (and other) efforts to revitalize and modernize the terminal.

https://ghostty.org

Install

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:

Adapting ShaderToy shaders

www.shadertoy.com/view/XtGGRt (Aurora)

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."

multiple shaders

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.