CLI tool
warpdotdev/themes avatar
warpdotdev/themes

Warp themes are YAML files, and the directory they live in tells you who may edit them

Custom themes repository for Warp, a blazingly fast modern terminal built in Rust.

1,032 stars254 forksPythonApache-2.0

At a glance

What is it?
The community theme repository for the Warp terminal, organised into standard, base16, special edition, stradicat and warp bundled directories, with a Python script that generates preview images for each theme. The directory structure is a permissions model, not just an organisation.
Who is it for?
Adopt this repository if you want a Warp colour scheme that is not one of the bundled ones, and you are willing to write YAML rather than pick from a list. Do not edit the warp_bundled directory expecting your change to reach a Warp install, because those themes ship with the terminal itself.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 56 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Five directories, and one of them belongs to Warp itself

The repository is a collection of themes for Warp, and the top level directories are the whole design.

There is `standard/`, which holds themes popular among other tools, including Solarized, Dracula and others. These were sourced and auto-generated based on the Alacritty themes collected by a contributor, with the upstream repository credited in the README.

There is `base16/`, for themes following the base16 architecture. The README quotes the definition: an architecture for building themes based on carefully chosen syntax highlighting using a base of sixteen colors, providing a set of guidelines detailing how to style syntax and how to code a builder for compiling base16 schemes and templates. The base16 themes here were likewise sourced and auto-generated from the Alacritty collection, credited to a different contributor.

There is `special_edition/`, which is not explained in the README beyond its existence, and `stradicat/`, which is not explained at all. Their presence tells you the taxonomy is still growing.

And there is `warp_bundled/`, which the README explains in one line: these are the themes that ship directly with Warp. That distinction is the important one, and it is a permissions statement as much as an organisational one. A theme in `standard/` is community content in this repository, and a theme in `warp_bundled/` is part of the terminal's own distribution, which is a different change process in a different repository.

There is also a `holiday` theme collection, which the README says they made to celebrate various holidays during the calendar year.

The repository also has the infrastructure a theme collection needs, with a `scripts/` directory, a `.warp/` directory, a `.trunk/` directory for the linter, a `README-intro.md` alongside the main README, and a `.gitmodules` file.

The licence is Apache-2.0, the default branch is `main`, the last push was on 2026-08-28, and the repository is not archived. The homepage for the feature is the Warp themes documentation page.

A theme is a YAML file, and a background image is a path in it

The format is YAML, and the README's only complete example is the background image, which is the part of the format that is not obvious.

Warp supports setting background images, and you set the path to your background image in the theme's `.yaml` file. The path can be a relative path to `~/.warp/themes/background.jpg`, or the absolute path to the image such as `/Users/my_user/Documents/background.jpg`.

The relative path case has a subtlety that the README spells out. If your background image was under `~/.warp/themes/level_one/level_two/background_image.jpg`, then the file path in the YAML should be written relative to the themes directory.

yaml
background_image:
  # background image credit: https://unsplash.com/photos/0eKCOZ11gfk
  path: "level_one/level_two/background_image.jpg"

So the theme file does not name itself in its own path, and the path is resolved from the themes root. That is the sort of detail that produces a broken background image for someone who assumed the path was relative to the theme file.

The comment in the example is also a convention worth copying. Every background image carries its credit, with a link, in a comment above the path. For a repository of contributed colour schemes, where the images are photographs from other people, an attribution convention enforced by example rather than by a linter is the practical mechanism.

The topic list includes yaml, which confirms the format, and the repository's primary language in the metadata is Python, which is unexpected for a repository of colour schemes and turns out to be because of the tooling rather than the themes.

The preview generator is the contribution gate, and it needs PyYAML

The contributing section is short and the workflow is a script, which is a good design for a repository where the contributions are near-identical files.

The instruction is, in short, to run the Python script for generating theme previews after adding your theme, and the invocation is by directory name.

code
python3 ./scripts/gen_theme_previews.py standard

The argument is the folder the new theme is in, so a theme added under `standard/` is passed as `standard`. The README then names the one failure mode you are likely to hit. If you get the error that yaml is missing, make sure you `pip install PyYAML`.

That dependency is the reason the repository's primary language is Python. A themes repository needs no application code, but it does need something to read the YAML and render a preview image of the colours, and that something is a Python script with one dependency.

The workflow is worth thinking about as a design decision rather than a convenience. The preview images are what a person browsing the repository uses to decide whether to install a theme, so a theme without one is effectively invisible. Making the preview generator the last step of the contribution is the project making that automatic by documentation rather than by a CI check, and it explains why the script is named and documented in the README rather than hidden in the scripts directory.

Contributions are welcomed in the README's own words, and there is a Discord channel dedicated to discussing custom themes. The README also points at the Warp documentation for directions on how to use the repository, so a user who wants to install a theme is sent to the product documentation rather than to the theme list.

The upstream theme ecosystems are credited, and base16 is explained

The open source dependencies section exists because the themes in this repository are not all original, and saying so is the point of the section.

The list names iTerm colors pencil, Alacritty-theme, base16-Alacritty, the base16 project itself, Solarized, Dracula and Gruvbox. The README says it would like to call out a few of the open source themes and repositories that helped bootstrap the set of themes for Warp.

Then there is a section explaining what base16 themes are, with the quoted definition and a pointer to the base16 repository for the details and structure. And it repeats the provenance for the base16 directory specifically, saying those themes were sourced and auto-generated based on the Alacritty themes collected by one contributor.

The same provenance statement appears for the standard directory, credited to a different contributor and a different Alacritty collection repository. So the two large directories in the repository are auto-generated from an upstream collection rather than hand written, which is an important thing to know if you are considering adding a theme to them, because a generated directory is a different place to add a theme than a hand curated one.

The holiday themes are the exception. Those were made to celebrate the various holidays during the calendar year, and they are presumably the hand made ones.

The reason this repository exists as a separate project rather than as a folder in the Warp repository is the one the README implies but does not state directly. The `warp_bundled` directory holds the themes that ship with the terminal, and everything else is community content that lives here, with the contribution path, the preview tooling and the attribution conventions that a community collection needs and a product release does not.

Editorial conclusion

Adopt this repository if you want a Warp colour scheme that is not one of the bundled ones, and you are willing to write YAML rather than pick from a list. Do not edit the warp_bundled directory expecting your change to reach a Warp install, because those themes ship with the terminal itself. Verify first that the theme you want is in the directory you expect, that your background image path is relative to the themes directory if it is a relative path, and that you regenerate the preview after adding a theme, since the preview script is part of the contribution flow.

Frequently asked questions

What is the Warp themes repository for?

It is an open source repository with themes for Warp, the modern terminal, and it welcomes contributions. The themes are YAML files, and the repository includes directions on using it in the Warp documentation and a Discord channel for discussing custom themes.

What are the directories in the Warp themes repository?

standard holds themes popular among other tools such as Solarized and Dracula, base16 holds themes following the base16 architecture, special_edition and stradicat are further collections, and warp_bundled holds the themes that ship directly with Warp. There is also a set of holiday themes made to celebrate holidays during the year.

How do I set a background image in a Warp theme?

Add a background_image key to the theme YAML with a path. A relative path is resolved from the themes directory, so an image at ~/.warp/themes/level_one/level_two/background_image.jpg is written as path: "level_one/level_two/background_image.jpg". An absolute path also works.

What do I need to run after adding a theme to the Warp themes repository?

Run the preview generator for the folder you added the theme to, for example python3 ./scripts/gen_theme_previews.py standard. If you get the error that yaml is missing, install PyYAML.

Where did the themes in the Warp repository come from?

The base16 and standard directories were sourced and auto-generated from Alacritty theme collections credited in the README, along with projects such as Solarized, Dracula and Gruvbox. The holiday themes were made for the project itself.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. warpdotdev/themes on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/warpdotdev-themes.svg)](https://hysenlabs.com/projects/warpdotdev-themes)

Was this useful?