Photo by LeonardoRamos, licensed under CC BY-SA 4.0 via Wikimedia Commons.
🇧🇷 Português · 🇺🇸 English
An open-source color theme inspired by the Arara-Canindé (blue-and-yellow macaw): blue on the back, gold on the chest, and a deep beak-black canvas for your code to breathe.
Status: v0.1, work in progress. Not yet published to the Marketplace.
The Arara-Canindé (Ara ararauna) is one of Brazil's most recognizable birds: vivid blue back and wings, a golden chest, a white face patch lined with black, a touch of green on the crown, and a large, curved black beak.
Canindé starts from those colors and turns them into a theme system for editors and terminals: dark, saturated just enough, and accessible by contrast. VS Code is the first target. The goal is for the community to carry the same identity to other apps.
Backgrounds and text come from a "beak-black" neutral with a faint blue tint, defined in tokens/essence.json.
The essence lives in one place. Every app is just a generator that reads those tokens:
tokens/essence.json seed colors and parameters (you edit)
│
▼
tokens/palette.json scales generated in OKLCH (generated)
│
tokens/semantic.json roles: bg.base, syntax.keyword, ansi.red… (you edit)
│
▼
packages/<app>/ role-to-app mapping + generator
- Tokens, not loose colors: no app mapping uses raw hex, only roles. Change a seed color and everything regenerates.
- Verified contrast:
npm run checkenforces WCAG AA (7:1 for default text) on every build. - A clear contract:
docs/SPEC.mdanddocs/ROLES.mdsay which color goes to which role, so anyone can port it to another app and keep the identity.
Requirements: Node.js 18+. There are no dependencies to install.
git clone https://github.com/caninde-theme/caninde.git
cd caninde
npm run verify # build + contrast + testsTo see the theme in VS Code, open the project folder and press F5. An Extension Development Host window opens on the samples/ folder (TypeScript, Python, HTML, Markdown and JSON) so you can judge the theme. Use Developer: Inspect Editor Tokens and Scopes to find which scope to color.
Edit tokens/essence.json, run npm run build, and see the result:
seeds: each seed color (change the hex and its whole scale is recomputed).neutral: hue and chroma of backgrounds and text.params.chromaScale: global saturation (0.8softens everything).ramp: the lightness of each scale step.
To create variants (light, high contrast, color-blind friendly), add an entry to tokens/semantic.json. See docs/SPEC.md.
| App | Status |
|---|---|
| VS Code | ✅ v0.1 (dark) |
| Terminals (Alacritty, Windows Terminal, iTerm2, Kitty, WezTerm) | 💡 contributions wanted |
| Vim / Neovim | 💡 contributions wanted |
| JetBrains, Obsidian, GitHub, Slack… | 💡 contributions wanted |
Want to bring Canindé to your favorite app? Start with docs/PORTING.md and open an issue with the New app port template (label good first port). See also CONTRIBUTING.md. Issues and PRs in Portuguese are very welcome too.
Andre Duarch (@duarch), creator and maintainer, and everyone who contributes.