Recently I found a good use case for AI when migrating my dotfiles to another theme. This is a short post about it.
No matter how good the theme you are using is, eventually you get kind of bored with it, right?
Right! I’ve been a fan and long-time user of many themes over the years, some that come to mind:
- Monokai
- Dracula
- Gruvbox
- Catppuccin
- Tokyo Night
I think my top #1 favorite is Gruvbox, though.
One small problem: they don’t provide themes for fish
, fzf
, and tmux
.
You can find some online, but there seem to be some diverging opinions on which
colors to use, and I don’t like it when things don’t match.
Making it match
My terminal of choice is Ghostty, which uses the themes from iTerm2-Color-Schemes.
We also need something to base onto. Catppuccin is the most complete theme I know, so let’s start from there.
First, we grab the iTerm2 color schemes for our source (Catppuccin) and target (Gruvbox):
wget https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/refs/heads/master/ghostty/catppuccin-mocha
wget https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/refs/heads/master/ghostty/GruvboxDarkHard
Then, let’s say we want to make a fzf
theme, we can grab
Catppuccin’s fzf theme,
which looks like this:
export FZF_DEFAULT_OPTS=" \
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \
--color=selected-bg:#45475a \
--multi"
And then we give it all to Claude, with a prompt like this:
I’m migrating from Catppuccin to Gruvbox, please adjust the following fzf theme:
[Contents of catppuccin's fzf theme]
Here’s the Catppuccin color scheme:
[Contents of catppuccin-mocha]
And here’s Gruvbox:
[Contents of GruvboxDarkHard]
To which it outputs the theme I can then use!
In practice, it’s even easier
Every editor has an AI plugin now (I use avante.nvim) (I use nvim
btw)
so just ask the AI to refactor the theme file you’re already in and that’s it.
You can also use something like mods if you don’t want to use it directly in
your editor, but don’t want to leave the command line either.
Rinse and repeat for all the things you want to do this for.