๐จ JB for Neovim
August 30, 2026 ยท View on GitHub
Color scheme for Neovim, inspired by JetBrains IDEs.
| Dark | Light |
|---|---|
|
|
|
Features
- Supports both light and dark themes, with a colorblind-friendly palette for light mode
- Terminal colors
- Lualine theme included
- Lualine component for a Navigation Bar similar to JetBrains IDEs but only for dir path part
- Generates
ProjectColorhighlight group based on the path - Generates highlights for icons
JBIcon<Kind> - Provides a table with icons visually similar to JB's ones
Supported Languages
| Language | Syntax | Treesitter | Semantic |
|---|---|---|---|
| .ignore Files | n/a | โ (gitignore) | n/a |
| ApacheConfig | โ | n/a | n/a |
| BibTeX | โ ๏ธ | โ (bibtex) | n/a |
| Blade | n/a | โ (EmranMR/tree-sitter-blade) | n/a |
| C/C++ | โ ๏ธ | โ (c,cpp) | n/a |
| CSS | โ ๏ธ | โ (css) | n/a |
| EditorConfig | n/a | โ (editorconfig) | n/a |
| gitcommit | โ ๏ธ | โ (gitcommit) | n/a |
| Go | โ ๏ธ | โ (go) | โ (gopls) |
| Go Template | โ ๏ธ | โ (gotmpl) | n/a |
| GraphQL | โ ๏ธ | โ (graphql) | n/a |
| HTML | โ ๏ธ | โ (html) | n/a |
| Ini | โ ๏ธ | โ (ini) | n/a |
| Java | โ ๏ธ | โ (java, javadoc) | โ (jdtls) |
| JavaScript | โ ๏ธ | โ (javascript) | โ (ts_ls) |
| jjdescription | โ ๏ธ | โ (jjdescription) | n/a |
| JSON | โ | โ (json) | n/a |
| LaTeX | โ ๏ธ | โ (latex) | n/a |
| Lua | โ ๏ธ | โ (lua,luadoc) | โ (emmylua_ls) |
| Markdown | โ ๏ธ | โ (markdown,markdown_inline) | n/a |
| Nix | โ ๏ธ | โ (nix) | โ (nil_lsp) |
| PHP | โ ๏ธ | โ (php,phpdoc) | n/a |
| Python | โ ๏ธ | โ (python) | n/a |
| RegExp | โ ๏ธ | โ (regex) | n/a |
| Ruby | โ ๏ธ | โ (ruby) | โ (ruby_lsp) |
| Rust | โ ๏ธ | โ (rust) | n/a |
| Sass/SCSS | โ ๏ธ | โ (scss) | n/a |
| Scala | โ ๏ธ | โ (scala) | n/a |
| Shell Script | โ ๏ธ | โ (bash) | n/a |
| TOML | โ ๏ธ | โ (toml) | n/a |
| Twig | n/a | โ (twig) | n/a |
| TypeScript | โ ๏ธ | โ (typescript) | โ (ts_ls) |
| TSX/JSX | โ ๏ธ | โ (tsx) | โ (ts_ls) |
| XML | โ ๏ธ | โ (xml) | n/a |
| Quickfix | โ | n/a | n/a |
| YAML | โ ๏ธ | โ (yaml) | n/a |
| Zig | โ ๏ธ | โ (zig) | โ (zls) |
Supported Plugins
| Plugin | Source |
|---|---|
| avante.nvim | n/a |
| blink.cmp | n/a |
| copilot.vim | n/a |
| diffvie.nvim | n/a |
| fzf-lua | n/a |
| gitsigns.nvim | n/a |
| indent-blankline.nvim | n/a |
| neogit | n/a |
| netrw.vim | n/a |
| nvim-cmp | n/a |
| nvim-notify | n/a |
| nvim-scrollbar | n/a |
| snacks.nvim | n/a |
| supermaven-nvim | n/a |
| telescope.nvim | n/a |
| trouble.nvim | n/a |
Installation
Install the theme with your preferred package manager, such as folke/lazy.nvim:
return {
"nickkadutskyi/jb.nvim",
lazy = false,
priority = 1000,
opts = {},
config = function()
-- require("jb").setup({transparent = true})
vim.cmd("colorscheme jb")
end,
}
Plugin Notes
hrsh7th/nvim-cmp
If you use custom view for entries (opts>view>entries>name) cmp creates
a custom window instead of native built-in popup. To improve the view you
can link highlight groups like this:
window = {
completion = cmp.config.window.bordered({
winhighlight = "Normal:Pmenu,FloatBorder:DialogFloatBorder,CursorLine:PmenuSel,Search:None",
}),
documentation = cmp.config.window.bordered({
winhighlight = "Normal:Pmenu,FloatBorder:DialogFloatBorder,CursorLine:PmenuSel,Search:None",
}),
},
You can have any config just make sure Normal:Pmenu and
CursorLine:PmenuSel is present in winhighlight.
Usage
vim.cmd("colorscheme jb")
colorscheme jb
Change light/dark theme:
vim.o.background = "light"
set background=light
Configuration
Important
Set the configuration BEFORE loading the color scheme colorscheme jb.
Default Options
---@class jb.Config
M.defaults = {
-- Disable bold or italic for all highlights
disable_hl_args = {
bold = false,
italic = false,
},
-- Control snacks.nvim related styles
snacks = {
explorer = {
-- Enable folke/snacks.nvim styling for explorer
enabled = true,
},
},
telescope = {
-- Enable telescope.nvim styling
enabled = true,
},
-- Type: jb.DisabledPlugin[]
-- Disable plugin highlight sets by plugin id, e.g. "nvim-telescope/telescope.nvim"
disabled_plugins = {},
-- Enable this to remove background from Normal and NormalNC
transparent = false,
-- Enable colorblind-friendly palette (light mode only)
-- Replaces green/purple/teal tokens with blue and near-black alternatives
colorblind = false,
integrations = {
-- Match Ghostty's background to the statusbar while Neovim is open
ghostty = false,
},
}
Overriding Colors & Highlight Groups
n/a
Extras
Extra color configs for Kitty, Alacritty, Ghostty can be found in extras. To use them, refer to their respective documentation.
Set integrations.ghostty = true before loading the colorscheme to temporarily
match Ghostty's background to the JB statusbar. Ghostty's configured background
is restored when Neovim exits.
Note
This integration sets a fixed Ghostty background using OSC 11. While the
override is active, Ghostty cannot notify Neovim of background changes when
the system switches between light and dark appearances. To keep
vim.o.background synchronized with the system theme, use
f-person/auto-dark-mode.nvim
together with this integration.
Development
IntelliJ color snapshots come from the private plugin in
tools/intellij-palette-exporter. That generated
file is stored in lua/jb/intellij-palette.json; Neovim highlight mappings are
stored separately in lua/jb/highlights.json.
When changing either palette file, regenerate the compiled palette used at runtime:
nvim --headless -u NONE --noplugin \
+'set runtimepath^=/absolute/path/to/jb.nvim' \
+'lua dofile("/absolute/path/to/jb.nvim/scripts/generate_palette_compiled.lua")' \
+qa
Contributing
n/a