Building a Custom Ghostty Theme

Published See discussion on Bluesky

Update Oct. 25th, 2024:

There's a bug (see issue here (if you have access)), where custom themes are blown away when upgrading the application, hopefully this is resolved in the future! Edit: You can store custom themes within ~/.config/ghostty/themes!

Update Oct. 24th, 2024:

I've since created a small repo with the pre-converted Vitesse themes for Ghostty here!

I recently got access to Ghostty (a new terminal emulator that is still in private beta) after waiting several months in the Discord server, and as I was setting it up I noticed that my go-to theme for my terminal and code editor (Vitesse Light by Anthony Fu) wasn't available as one of the built-in themes.

After scouring the web and the discord server, I couldn't really find a good guide for how to build a custom theme for the terminal, so I set out to attempt to manually make the theme.

Fortunately I stumbled upon the template / converter within the iterm2-color-schemes repo, however I didn't really want to clone a repo to run a python script in order to transform the theme to the proper format.

Instead, what I opted to do was reach for v0 to build a minimal UI to paste in iTerm2 xml formatted color themes and have it spit out the proper Ghostty theme.

I downloaded the Vitesse Light iterm2 theme file from this iTerm2-theme-vitesse repo, and then pasted it into the UI that v0 generated for me and got the theme in the right format.

From there, I created a new file within the custom themes directory for the Ghostty app (on mac for me this was in ~/.config/ghostty/themes), and pasted in the theme.

It immediately started showing up when I viewed the built in themes, and works correctly when I set my theme within my config to the new file I created!

Here's that little UI component that v0 created for me so you can convert themes inline right on this blog post! (if you run into any bugs, please do reach out and let me know!)

iTerm Color Scheme Parser

Paste your iTerm color scheme XML below to extract colors