lefteros_by SomniusX
EL ↗Say hello

LEFTEROS / PERSONAL NOTES

Kitty now follows the theme in Chris Titus's dwm

11 October 2026 / Lefteris Iliadis / SomniusX

Kitty follows the theme in dwm-titus

dwm-titus is Chris Titus's dwm setup: the window manager plus a full desktop around it, with themes you switch from its Settings. Change the theme and everything follows. Everything except kitty, which stayed on Nord no matter what.

Menk1l had already found why, in issue #367. kitty keeps the last value it reads for each setting. The shipped kitty.conf read the theme file first, then set its own colors, then included nord.conf at the very end. So the theme was loaded and then overwritten, every time. Alacritty didn't have the problem because its config has no palette of its own.

The issue had been sitting for a week with nobody on it, so I picked it up and sent pull request #377. Chris merged it on 10 October.

kitty.conf before and after

Before: the theme was included first and then overwritten by kitty.conf's own colors and nord.conf. Now: one include of the theme, at the end.

What changed

  • New installs. The shipped kitty.conf no longer has its own palette, border and tab colors, or the nord.conf include. include active-theme.conf is now the last line.
  • Existing installs. make install doesn't overwrite your kitty.conf, so fixing the shipped file wasn't enough. Now, the first time a theme is applied (directly or from Settings), the old file gets cleaned up: the palette, border and tab lines shipped up to v0.7.2 and the nord.conf include go, and the theme include ends up last, once. Everything else in your file stays.
  • Only untouched lines go. A color line is removed only if it's exactly what dwm-titus shipped. If you changed a value yourself, it stays.
  • A backup. The original is saved as kitty.conf.dwm-titus.bak, with the same permissions as your file.

One thing I learned along the way: you can't just add a second include at the end. kitty ignores a file it has already included, so the include has to move, not be copied. I checked that on kitty 0.48.2.

The review

Abs313a tested it closely and found three real problems: the backup didn't keep the file's permissions, a Settings apply didn't put the backup in ~/.config/kitty, and the old border and tab colors survived the cleanup. All three were right, and all three got fixed, with tests for both ways of applying a theme.

How it was tested

With kitty's own config loader: the old file resolves to Nord, and a fresh kitty.conf and a cleaned-up v0.7.2 one come out with no difference in any option under the same theme. Plus the project's theme and appearance tests, with new cases for the migration, and shellcheck and shfmt, in a Fedora 44 container. I didn't run the full test gate, and I didn't try it in a live X11 session.

It's merged into main and will be in the next dwm-titus release; the latest one, v0.7.2, came out before it. Thanks to Chris for merging it, to Menk1l for the clear bug report, and to Abs313a for the review.