<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>KHTDR – Doom-Emacs</title><description/><link>https://khtdr.com/tags/doom-emacs.html</link><lastBuildDate>Thu, 22 Oct 2026 00:00:00 -0600</lastBuildDate><language>en-us</language><managingEditor>mazzarelli@gmail.com (Joey Mazzarelli)</managingEditor><webMaster>mazzarelli@gmail.com (Joey Mazzarelli)</webMaster><atom:link href="https://khtdr.com/tags/doom-emacs/index.xml" rel="self" type="application/rss+xml"/><item><title>Doom Themes for Claude Code</title><description> Claude Code in Doom One. Claude Code lets you define your own color themes, and Doom Emacs has a lot of nice ones. doom-themes has 77 of them, so rather than port a few by hand, I generated all of them: doom-one, dracula, gruvbox, nord, solarized, tokyo-night, and the other 71.
Code and every screenshot: github.com/khtdr/claude-code-themes Install All 77, without cloning anything:</description><link>https://khtdr.com/claude-code-themes/</link><guid>https://khtdr.com/claude-code-themes/</guid><pubDate>Thu, 22 Oct 2026 00:00:00 -0600</pubDate><author>mazzarelli@gmail.com (Joey Mazzarelli)</author><category>Software</category><content:encoded>
&lt;![CDATA[
&lt;figure style="margin:1.5rem 0;text-align:center"&gt;
&lt;a href="https://github.com/khtdr/claude-code-themes"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-one.png" alt="Claude Code running with the Doom One theme: a diff, a shell command, and a reply"
width="1400" height="1000" style="width:100%;height:auto;border-radius:8px" /&gt;
&lt;/a&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75;margin-top:0.5rem"&gt;
Claude Code in Doom One.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
Claude Code lets you define your own color themes, and Doom Emacs has a lot of nice ones.
&lt;a href="https://github.com/doomemacs/themes"&gt;doom-themes&lt;/a&gt; has 77 of them, so rather than port a few by hand, I generated all of them:
doom-one, dracula, gruvbox, nord, solarized, tokyo-night, and the other 71.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code and every screenshot: &lt;a href="https://github.com/khtdr/claude-code-themes"&gt;github.com/khtdr/claude-code-themes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Install
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
All 77, without cloning anything:&lt;/p&gt;
&lt;div class="src src-sh"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.claude/themes &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl -fsSL https://github.com/khtdr/claude-code-themes/archive/refs/heads/main.tar.gz &lt;span class="p"&gt;|&lt;/span&gt; tar -xz -C ~/.claude/themes --strip-components&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; claude-code-themes-main/themes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Or just one:&lt;/p&gt;
&lt;div class="src src-sh"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.claude/themes &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl -fsSL https://raw.githubusercontent.com/khtdr/claude-code-themes/main/themes/doom-one.json -o ~/.claude/themes/doom-one.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Then run &lt;code class="verbatim"&gt;/theme&lt;/code&gt; in Claude Code and pick one. If &lt;code class="verbatim"&gt;~/.claude/themes&lt;/code&gt; didn&amp;#39;t exist before,
restart Claude Code once.&lt;/p&gt;
&lt;p&gt;
One tip: Claude Code doesn&amp;#39;t set your terminal&amp;#39;s background, and things like diff lines are
blended against the theme&amp;#39;s background color. Set your terminal to the same background (for
Doom One that&amp;#39;s &lt;code class="verbatim"&gt;#282c34&lt;/code&gt;) and it&amp;#39;ll look like the screenshots.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
A few of them
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:1.5rem 0"&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-dracula.png" alt="Doom Dracula" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-dracula&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-gruvbox.png" alt="Doom Gruvbox" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-gruvbox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-nord.png" alt="Doom Nord" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-nord&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-tokyo-night.png" alt="Doom Tokyo Night" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-tokyo-night&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-one-light.png" alt="Doom One Light" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-one-light&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure style="margin:0;text-align:center"&gt;
&lt;img src="https://khtdr.com/claude-code-themes/doom-solarized-light.png" alt="Doom Solarized Light" width="1400" height="1000" style="width:100%;height:auto;border-radius:6px" /&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75"&gt;doom-solarized-light&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;
The rest are in the &lt;a href="https://github.com/khtdr/claude-code-themes#gallery"&gt;gallery on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
How it works
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;p&gt;
A Claude Code theme is a small JSON file: a name, a light or dark base, and a map of color
tokens like &lt;code class="verbatim"&gt;claude&lt;/code&gt; (the accent), &lt;code class="verbatim"&gt;error&lt;/code&gt;, &lt;code class="verbatim"&gt;diffAdded&lt;/code&gt;, and &lt;code class="verbatim"&gt;planMode&lt;/code&gt;. A doom theme is an
Elisp file with a palette: &lt;code class="verbatim"&gt;bg&lt;/code&gt;, &lt;code class="verbatim"&gt;fg&lt;/code&gt;, &lt;code class="verbatim"&gt;red&lt;/code&gt;, &lt;code class="verbatim"&gt;blue&lt;/code&gt;, &lt;code class="verbatim"&gt;violet&lt;/code&gt; and so on, where a lot of the
colors are computed with &lt;code class="verbatim"&gt;doom-darken&lt;/code&gt;, &lt;code class="verbatim"&gt;doom-lighten&lt;/code&gt; and &lt;code class="verbatim"&gt;doom-blend&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
So the generator is a tiny Elisp reader in Python. It parses each &lt;code class="verbatim"&gt;def-doom-theme&lt;/code&gt; form,
evaluates the palette, doing the same color math doom does, and maps the result onto Claude
Code&amp;#39;s 63 tokens. The accent comes from the theme&amp;#39;s &lt;code class="verbatim"&gt;highlight&lt;/code&gt;, errors are &lt;code class="verbatim"&gt;red&lt;/code&gt;, plan mode
is &lt;code class="verbatim"&gt;teal&lt;/code&gt;, and the diff and message backgrounds are the theme&amp;#39;s colors blended into its &lt;code class="verbatim"&gt;bg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
Two things in the doom source needed working around. A couple of themes declare the wrong
&lt;code class="verbatim"&gt;:background-mode&lt;/code&gt; (Feather Light says it&amp;#39;s dark), so the generator decides light or dark from
the actual background. And a few themes use a grey &lt;code class="verbatim"&gt;highlight&lt;/code&gt;, which made the spinner look
like plain text, so those fall back to the theme&amp;#39;s blue.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
The screenshots
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;p&gt;
I didn&amp;#39;t want to take 77 screenshots by hand, so they&amp;#39;re automated with &lt;a href="https://github.com/charmbracelet/vhs"&gt;VHS&lt;/a&gt;, which runs a
terminal headlessly and saves images. For each theme, the script builds a throwaway Claude
Code config with just that theme, plus a fake saved conversation with a diff, a shell command,
and a reply. Then it opens that conversation with &lt;code class="verbatim"&gt;claude --resume&lt;/code&gt; and takes the screenshot.&lt;/p&gt;
&lt;p&gt;
Resuming a conversation only redraws it, so nothing ever goes to the API, and my own
&lt;code class="verbatim"&gt;~/.claude&lt;/code&gt; is never touched. Eight run at a time, so all 77 take about four minutes, and
&lt;code class="verbatim"&gt;pngquant&lt;/code&gt; gets each one down to about 85 KB.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
]]&gt;</content:encoded></item></channel></rss>