A minimal color theme for Neovim and WezTerm, adapted from flatwhite-syntax by biletskyy.
"If everything is highlighted, nothing is highlighted."
Noconfetti follows the principles outlined in tonsky's "Syntax Highlighting" article:
- Minimal colors - Only 4-5 colors for actual visual lookup
- Highlight what matters - Strings, constants, comments, top-level definitions
- Leave most code neutral - Keywords, variables, function calls remain unhighlighted
- Make comments visible - They contain important information
- ✅ Strings and constants
- ✅ Function and method definitions
- ✅ Comments (with background)
- ✅ Variable declarations (in some languages)
- ❌ Keywords (
if,for,while,def,function,class) - ❌ Variable and function usage
- ❌ Operators
- ❌ Most punctuation
Using lazy.nvim:
{
'tkgalk/noconfetti',
lazy = false,
priority = 1000,
config = function()
vim.cmd('colorscheme noconfetti-light')
-- or vim.cmd('colorscheme noconfetti-dark')
end,
}Using mini.deps:
local add = MiniDeps.add
add('tkgalk/noconfetti')
vim.cmd('colorscheme noconfetti-light')
-- or vim.cmd('colorscheme noconfetti-dark')Using vim.pack.add() (Neovim 0.12+):
-- Add to your init.lua
vim.pack.add('noconfetti')
vim.cmd('colorscheme noconfetti-light')
-- or vim.cmd('colorscheme noconfetti-dark')Add to your ~/.wezterm.lua:
local wezterm = require 'wezterm'
return {
color_scheme_dirs = { '/path/to/noconfetti/extras/wezterm' },
color_scheme = 'noconfetti-light',
-- or
-- color_scheme = 'noconfetti-dark',
}Or manually copy the TOML files from extras/wezterm/ to your WezTerm color schemes directory (colors/ next to your wezterm.lua).
I mainly added support (and tested) the languages I personally use, or which I know to be popular and that have easily installable LSPs to test with.
Legend: ✅ Fully supported |
- ✅ C
- ✅ CSS
- ✅ HTML
- ✅ JavaScript
- ✅ Lua
- ✅ Markdown
- ✅ Python
- ✅ Ruby
- ✅ Shell/Bash
- ✅ TOML
- ✅ Terraform/HCL
- ✅ TypeScript
- ✅ YAML
⚠️ C#⚠️ C++ (no LSP semantic tokens support; inconsistent)⚠️ Go (no LSP semantic tokens support; odd behaviour)⚠️ Java⚠️ Kotlin⚠️ Rust (no LSP semantic tokens support; inconsistent)
I added support for some plugins I use.
oil.nvimmini.diffmini.pick
| Color | Hex | Usage |
|---|---|---|
| Orange | #f7e0c3 |
Comments (background) |
| Green | #e2e9c1 |
Strings (background) |
| Teal | #d2ebe3 |
Constants (background) |
| Blue | #dde4f2 |
Identifiers (background) |
| Purple | #f1ddf1 |
Functions (background) |
Uses foreground-only colors (no backgrounds) for a more subtle appearance.
- Neovim >= 0.9.0
- Terminal with true color support
- Treesitter (recommended for best syntax highlighting)
- LSP (optional, for semantic highlighting)
- Inspired by flatwhite-syntax by biletskyy
- Philosophy from tonsky's article
- Also influenced by: Alabaster, No Clown Fiesta
MIT

