# kitty-themes: the centralised theme catalogue for the kitty terminal

> This repository is the upstream home of kitty terminal colour themes, with a template that new themes are based on, a generated metadata file, and a per theme licensing rule that lets an individual theme carry its own terms inside a GPLv3 repository.

**kovidgoyal/kitty-themes** — Themes for the kitty terminal emulator

- Repository: https://github.com/kovidgoyal/kitty-themes
- Stars: 569 · Forks: 128
- Language: Python
- License: GPL-3.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/kovidgoyal-kitty-themes

## A catalogue rather than a tool

The repository description is one line: themes for the kitty terminal emulator. The README expands it as a collection of themes for the kitty terminal emulator, and that is the whole thing. There is no code to run here, no configuration format to learn beyond the theme file itself, and no build step for a user. What the repository is, is a centralised place to host all the themes for kitty, and the README is explicit about the division of responsibility that follows from that. It says the themes were initially imported from a separate collection, the dexpota/kitty-themes repository, which tells you the history of the project: a set of individually authored themes gathered from elsewhere and brought under one roof. The audience is twofold. The first is a kitty user who wants a different colour scheme, and the second is a theme author who wants their work to be installable by anyone with kitty. The repository is GPLv3 licensed, the last push was on 2026-10-08, and it publishes no GitHub releases.

## Installing a theme through the kitten system

The mechanism for using these themes is kitty's own kitten system rather than anything this repository provides. The README says the easiest way to use these themes is to run the themes kitten, which is the external link in the text pointing at kitty's kittens documentation for themes. The command you run is short, and it pulls the themes into kitty's own theme collection so they can be selected from the kitty interface the way any other theme is.

```bash
    kitten themes
```

The key detail is that the repository is a source of truth, not a package manager. There is nothing to install from it directly, no index to configure and no path to point kitty at. The themes kitten fetches what it needs, and from there a theme is applied inside kitty the same way as a bundled one. For anyone who has used kitty, that is the least surprising arrangement possible, since the theme you install from here is indistinguishable from one that shipped with the terminal emulator.

## Contributing a theme means starting from template.conf

The contribution path is prescriptive, which is what keeps a catalogue of loosely specified files coherent. The README says that to contribute a new theme, you should use template.conf as a base and modify it for your theme, and then submit a pull request with your new theme. There is no separate schema to satisfy and no test to pass, because the template file is the contract. That is the entire process: copy the template, fill in your colours, open a pull request. The top level entries show the supporting machinery around that. There is a template.conf at the root as the base file, a themes.json which is the machine readable index of what the repository holds, a gen-metadata.py script that is presumably responsible for producing that index, a tab-styles.py script whose name suggests it deals with the tab bar styles some themes define, an .all-contributorsrc for the contributor listing, and a themes/ directory holding the theme files themselves. A screenshot.png at the root is the preview image shown in the README.

## Broken themes are reported to their author, not here

There is a section on problems with themes, and the instruction is short and unambiguous. If there are any issues with a theme, the README says to report them upstream to the theme creator, because this repository is simply a centralised place to host all themes. That is a deliberate division of labour and it has a practical consequence for you as a user. If a theme renders badly on your terminal, or has a contrast problem, or a colour that is unreadable in a light background, the fix belongs with the person who wrote the theme file, and this repository will not act as a support channel for it. The same logic applies to contributions. A pull request here is a proposal to add a file to a shared catalogue, and the maintainers of the catalogue are the ones who decide whether it belongs, not the author of a neighbouring theme. The repository also carries a .github/ directory, a CODEOWNERS file is not present but the .github directory is the usual place for contribution metadata.

## A GPLv3 repository holding themes with their own licences

The licensing section is the most consequential thing in a short README. The overall license of the repository is the GPLv3, however individual theme files can have their own licenses, as specified in the theme file itself. So the repository is not a single-licence work in the legal sense; it is a container whose contents each declare their own terms, and that container's own terms are copyleft. For a theme author this matters, because you can ship a theme under a different licence from the repository's, and for a user it matters because the terms you get depend on the file you are using. The README does not spell out what those per-file licences may be, so the correct procedure is to read the licence line in the theme file you are about to use rather than assume the repository's terms cover it. The repository also has a LICENSE file at the root, and the top level entries confirm the .all-contributorsrc file for recognising contributors.

## Where kitty-themes is the wrong place

Two things are worth saying plainly. The first is that this is not where you report a problem, and if you arrive here expecting a support channel for a theme that renders badly in your terminal, you will be sent to the author. The second is that adding a theme to a shared catalogue is a different exercise from maintaining one. Once a theme is merged it is distributed to every kitty user who installs the themes kitten, which means the file has to behave under every terminal profile, every colour scheme and every background opacity setting a user might have, and a theme that was tuned for one particular background can be unreadable under another. That is why the README's insistence on reporting issues upstream matters: the author is the one who can decide whether a problem is a bug in the theme or a mismatch with a particular configuration. The alternative worth naming is a personal theme kept in your own kitty configuration, which is the right choice for a scheme that only makes sense for you and does not need to survive contact with the wider catalogue. For anything you want other people to use, this repository is where it belongs, and the template is the shortest path to getting it in.

## Conclusion

Contribute to kitty-themes if you have made a kitty colour scheme worth sharing, since this is where kitty picks up new themes, and base your file on template.conf so it stays consistent with the rest of the catalogue. Do not use this repository as the place to report a broken theme, because the README says issues go upstream to the theme creator. Verify first that your theme carries its own licence line, since individual theme files can have their own terms even though the repository is GPLv3, and check how the metadata is generated before you edit themes.json by hand.

## FAQ

### How do I install a theme from the kitty-themes repository?

The README says the easiest way to use these themes is to run the themes kitten, which pulls them into kitty's own theme collection so they can be selected inside kitty like any bundled theme. The repository itself is a hosting location, not something you install from directly.

### How do I contribute a new theme to kitty-themes?

Use template.conf as a base and modify it for your theme, then submit a pull request with the new theme. The repository holds a template.conf file at the root along with a themes.json index, a gen-metadata.py script and a themes/ directory holding the theme files.

### Where do I report a problem with a kitty theme?

Upstream, to the theme creator. The README says that if there are any issues with a theme you should report them upstream because this repository is simply a centralised place to host all themes.

### What licence applies to the themes in kitty-themes?

The overall repository licence is the GPLv3, but individual theme files can have their own licences as specified in the theme file itself, so the terms for a particular theme depend on that file rather than on the repository alone.

## Sources

- [Issues](https://github.com/kovidgoyal/kitty-themes/issues)
- [kovidgoyal/kitty-themes on GitHub](https://github.com/kovidgoyal/kitty-themes)
- [License: GPL-3.0](https://github.com/kovidgoyal/kitty-themes/blob/master/LICENSE)
- [README](https://github.com/kovidgoyal/kitty-themes/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/kovidgoyal-kitty-themes
