Ghost in the Shell
Beginning a new chapter in my terminal workflow by replacing Alacritty with Ghostty.
For several years, Alacritty had been my terminal emulator of choice. It was fast, GPU-accelerated, minimal, and beautifully integrated into my workflow on Linux, particularly under Sway, my Wayland window manager. I was happy with the software and never really in the market for a replacement. Until recently.
What changed wasn’t the performance or feature set of Alacritty, but it was the human side of the project. I got to experience the maintainer’s behavior toward users and started digging deeper into the project’s history. What I found wasn’t exactly what I was expecting a welcoming open source community to look like. Hence I decided that maybe it was time to finally have a look at the new kid on the block: Ghostty.
Hello Ghostty!
Ghostty is a (relatively) new terminal emulator written in Zig by Mitchell Hashimoto, the original founder of HashiCorp – the people behind Terraform. I was intrigued from the start, not just by the technical aspects, but by the tone and values that the project seemed to embody. After giving it a fair trial, Ghostty has now fully replaced Alacritty on my system, and to my surprise, the transition was pretty much seamless.
Here is a brief comparison of the features that are most important to me:
| Feature | Alacritty | Ghostty |
|---|---|---|
| GPU acceleration | Yes | Yes |
| Wayland support | Yes | Yes |
| Configuration format | TOML | TOML |
| Vi mode | Yes | No |
| Ligature support | No | Yes |
| Scrollback | Yes | Yes |
| Search | Yes | No |
| Hints | Yes | No |
| Clickable URLs | Yes | Yes |
| Multi-window | Yes | Yes |
| Custom shaders (they’re fun!) | No | Yes |
| Language | Rust | Zig |
The only feature I truly miss from Alacritty is its Vi mode, which allowed for keyboard-driven selection and navigation through terminal output. It was a niche but powerful tool, especially for those of us who avoid reaching for the mouse. That said, Ghostty is still under very active development and has shown a clear focus on implementing user-focused features thoughtfully.
However, as Ghostty is written in Zig, it embraces simplicity and safety
without the bureaucratic heaviness that often accompanies similar projects. It
compiles fast, the codebase is readable, and there’s a clear emphasis on
maintainability, integration (hey there libghostty!) and user experience.
Mitchell’s experience in building developer tools clearly shines through. The
project has solid documentation, a transparent roadmap, and a respectful,
responsive community. From its font rendering to Wayland-native support,
Ghostty feels like it was made with today’s Linux desktop in mind, yet still
integrates with native UI toolkits on other platforms.
Configuration
This is the configuration that I’m currently using with Ghostty:
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ ++++==********===+++ ║
# ║ ++==*%**++~· ·~++**%*==++ ║
# ║ xx**=%+x x+%=**xx ║
# ║ ++*=x ~ox+====+xo~ x=*++ ║
# ║ **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** ║
# ║ **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** ║
# ║ =*+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+*= ║
# ║ ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ ║
# ║ ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo ║
# ║ ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== ║
# ║ ox== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo ║
# ║ +++x @$$$$$x x%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ ║
# ║ == *$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == ║
# ║ == @$$$$$$o =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == ║
# ║ == $$$$$$$@@$x $$$$$= o$$$$$$ == ║
# ║ == ·@$$$$$$$@@@@= $$$$@ @$$$$@· == ║
# ║ == ·@$$$$$$@= %$$$$$@x ~$$$$$$@· == ║
# ║ == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == ║
# ║ == ·@$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$@@=oo*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == ║
# ║ == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == ║
# ║ == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == ║
# ║ == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@% == ║
# ║ ==+x ~$@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+*@@@@$$$$@@@@@~ x+== ║
# ║ ++== o*$@@@$*x ·=%$@@$%=· x*$@@@$*x ==++ ║
# ║ ==== =+== ║
# ║ xx====+= x+*===+= =+====+x =+====xx ║
# ║ ++====*%%%%**=====++====*%*%%*%*====++=====**%%%%*====++ ║
# ║ xx++++====++++ ++++====++++ ++++====++++x+ ║
# ║ ║
# ║ xn--gckvb8fzb.com * github.com/mrusme * marius@xn--gckvb8fzb.com ║
# ║ ║
# ╚════════════════════════════════════════════════════════════════════════════╝
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Appearance ║
# ╚════════════════════════════════════════════════════════════════════════════╝
theme = kanagawa.conf
background-opacity = 0.90
background-blur = true
#custom-shader = ~/.config/ghostty/bettercrt.glsl
#custom-shader = ~/.config/ghostty/tft.glsl
#custom-shader = ~/.config/ghostty/bloom.glsl
#custom-shader = ~/.config/ghostty/glitchy.glsl
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Font ║
# ╚════════════════════════════════════════════════════════════════════════════╝
font-size = 11
font-family = "Berkeley Mono"
font-style-bold = false
font-style-italic = false
font-style-bold-italic = false
bold-is-bright = true
adjust-cell-height = 1
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Window ║
# ╚════════════════════════════════════════════════════════════════════════════╝
window-padding-x = 6
window-padding-y = 12
window-padding-balance = true
window-padding-color = background
window-vsync = true
window-decoration = none
window-theme = ghostty
window-width = 80
window-height = 28
resize-overlay = never
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Features ║
# ╚════════════════════════════════════════════════════════════════════════════╝
scrollback-limit = 125000
link-url = true
vt-kam-allowed = false
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Cursor ║
# ╚════════════════════════════════════════════════════════════════════════════╝
cursor-opacity = 0.9
cursor-style = block
cursor-style-blink = false
cursor-click-to-move = false
shell-integration-features = no-cursor
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Clipboard ║
# ╚════════════════════════════════════════════════════════════════════════════╝
clipboard-trim-trailing-spaces = true
clipboard-paste-bracketed-safe = true
copy-on-select = false
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ GTK ║
# ╚════════════════════════════════════════════════════════════════════════════╝
gtk-single-instance = true
gtk-tabs-location = bottom
#gtk-adwaita = false
gtk-opengl-debug = false
# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Update ║
# ╚════════════════════════════════════════════════════════════════════════════╝
auto-update = off
And this is how my Ghostty terminal looks:
One of Ghostty’s more playful features is support for custom shaders, allowing users to add visual effects to the terminal. This GitHub repository offers a variety of GLSL files that can be mixed and matched to create nostalgic or stylized terminal experiences, perfect for those who miss the charm of the old-school command line.
Hasta la vista Alacritty!
I want to emphasize that I never had technical complaints about Alacritty. It did the job, and it did it well. But once I saw for myself how the project was run, I realized that no matter how good the tool was, I could no longer justify being a loyal user of a project so poorly led on a human level.
In contrast, the Ghostty community, and the Zig community at large – at least for now – have felt refreshingly lighthearted. Maintainers tend to be humble, thoughtful, and receptive without being dogmatic.
I’m looking forward to replacing more of my tooling with projects that value respectful collaboration and practical design. I also encourage you to give Ghostty a try. Even in its early stages, it’s remarkably stable, performant, and pleasant to use. More importantly, it’s backed by a community and lead developers who treat users with respect.
Open source is as much about people as it is about code. A fast terminal isn’t worth much if using it means tolerating toxicity. Ghostty offers not just a technical improvement, but a more humane one.
Enjoyed this? Please consider supporting my work.