![Logo](https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png)
Catppuccin for JetBrains IDEs
- Using IDE built-in plugin system:
Settings/Preferences > Plugins > Marketplace > Search for "Catppuccin Theme" > Install Plugin
-
Manually:
Download the latest release and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
First, thank you for wanting to contribute! Make sure to read the organisation-wide CONTRIBUTING.md!
Listed below are details on the file structure, optimal development workflow and general notes that are useful for developing on this port.
Note
Please ensure that you have read the relevant JetBrains documentation listed here which will answer any questions surrounding creating, running and deploying a JetBrains theme.
.github/workflows/
- CI/CD workflows for building and distributing.jar
files.run/
- Collection of useful Intellij run configuration tasks that ease the development processgenerateFlavours/
- JS/TS code that generates all 4 Catppuccin flavours into the specified XML format that JetBrains requiremain.ts
- Generates.theme.json
and.xml
files. The.theme.json
file relates to the UI elements whereas the.xml
file (derived solely from the.template.xml
) is for the Editor elements entirely (e.g the code syntax highlighting)template.xml
- As mentioned above, these are all the highlights for everything to do regarding the editor. It is important to note that we have included some handlebars syntax to allow for easier generation of the Latte flavour compared to Frappé, Macchiato and Mocha
src/main/resources/META-INF
- Contains metadata that is shipped with the.jar
including the Catppuccin logo, id, name, and descriptionbuild.gradle.kts
- Standard gradle build file defining custom build tasks on top of defaultsgradle.properties
- Properties that define the theme. For example, this includes the name, supported version(s) and type of IDE to build locally for testing, etcsettings.gradle.kts
- Contains the root project name
- Deno v1.27+ with Deno plugin
JetBrains (thankfully) provide internal debugging tools to aid with theme creation in their IDE's. Please refer to the documentation below:
Note
The configuration in the given screenshots below contain hardcoded paths based on my personal system. Please ensure that you tweak your configurations to make sense within the context of your own system setup~ Hammy
You should also ensure that the Generate All Flavours.run.xml
configuration has been correctly identified by your
JetBrains IDE of choosing.
For reference, your Generate All Flavours
build configuration should look like the following:
The build configurations for Build Plugin
and Run Plugin
should also include Generate All Flavours
as pre-launch
tasks. (This is to ensure that the latest changes are included with each local build of the theme.) For reference, they
should look like the following:
Some high level steps are shown below in an example development workflow for editing Link (UI) & Selection (Editor) highlights
- Edit Link highlight colour within
main.ts
- Edit Selection highlight colour within
template.xml
- Run
Build Plugin
build configuration (there should be updated files insrc/main/resources/themes
and the resulting.jar
file should be underbuild/libs
) - Run
Run Plugin
build configuration (the result should be an entire IDE with the new changes applied) - Observe new highlights within the test IDE instance
- If you aren't happy with your changes, repeat from step 2
- Once happy, update
CHANGELOG.md
with new updates to the theme under relevant headings - Push changes to new remote branch
- Create pull request
- ???
- Profit
To ease the development and deployment process, we have defined a full CI/CD pipeline that is capable of producing test
.jar
binaries on each relevant push, releasing draft binaries to GitHub and deploying straight to the JetBrains
Marketplace.
build.yml
- Runs on every relevant push/pull-request, it builds the.jar
and uploads it for anyone to download itpublish.yml
- Runs on every git tag starting withv*
- Patches the
CHANGELOG.md
into the.jar
for updated release notes - Builds the
.jar
- Publishes to the JetBrains Marketplace
- Creates a draft release on GitHub for maintainers with the new
.jar
to manually review and release
- Patches the
Copyright © 2022-present Catppuccin Org