Daily sync — themes, integrations, type definitions, and colorscheme files are automatically synced from NvChad/base46 and NvChad/ui every day at midnight UTC via GitHub Actions. A
sync.logis maintained with each run. Always up to date with upstream.
94 themes · 48 plugin highlight integrations · 15 auto-applied plugin configs · Complete coc.nvim support (160+ highlights, completion icons, diagnostic config) · Lualine, Heirline, Bufferline, Airline & Lightline adapters · Native NvChad statusline (4 styles) · base_30 / base_16 color system · base46/nvconfig compatibility layer
Works with any plugin manager. Auto-config patching for lazy.nvim included; non-lazy users can call apply_configs().
| bearded-arc ⬅️ | tokyonight | catppuccin |
|---|---|---|
![]() |
![]() |
![]() |
| nord | onedark | gruvbox |
![]() |
![]() |
![]() |
All 94 themes are visually identical to their NvChad/base46 counterparts.
See the NvChad theme gallery for all themes.
- Neovim >= 0.9.0
- Daily auto-sync from NvChad/base46 — themes + integrations pulled every 24h
- Auto-detected integrations — install a plugin, its highlights + config apply automatically
- 94 themes
- 48 plugin integrations (highlights) — including native
St_*statusline groups - 15 auto-applied plugin configs (icons, layout, appearance) — lazy.nvim auto, others via
apply_configs() - base_30 / base_16 dual color system
- NvChad native statusline — 4 themes (default, minimal, vscode, vscode_colored), auto-synced from NvChad/ui
- Lualine, Heirline, Bufferline, Airline & Lightline adapters with NvChad styling
- base46/nvconfig compatibility layer
Integrations are auto-detected — highlights for installed plugins load automatically:
{
"ChuYanLon/chad46",
opts = {
-- cmp = { style = "atom_colored" },
},
config = function(_, opts)
require("chad46").setup(opts)
vim.cmd.colorscheme("chad46_bearded-arc")
end,
}To explicitly disable or enable a specific integration:
opts = {
integrations = {
telescope = false, -- disable even if installed
blink = true, -- force enable even if not auto-detected
},
},require("chad46").setup()
vim.cmd.colorscheme("chad46_bearded-arc")Optional: apply NvChad-style plugin configs for non-lazy managers:
-- Apply all enabled
vim.schedule(function()
require("chad46").apply_configs()
end)
-- Or apply per-plugin when it loads
require("chad46").apply_configs("telescope")
require("chad46").apply_configs({ "lualine", "bufferline" })Plugin highlights and configs are auto-detected via lazy.nvim. No manual setup needed — install a plugin and its highlight loads automatically.
Seven integrations are local additions not present in upstream NvChad/base46: Snacks, Noice, Gitsigns, Coc (160+ highlights, auto-config), CocLoader (TUI highlights), and NERDTree.
Alpha, Avante, Blankline, Blink, Blink-pair, Bufferline, Cmp, Coc (160+ groups), CodeActionMenu, Dap, Devicons, Diffview, Edgy, Flash, Git, Git-conflict, Gitsigns*, Grug-far, Hop, Leap, Lsp, Lspsaga, Markview, Mason, Mini-tabline, Navic, NERDTree*, Neogit, Noice*, Notify, Nvimtree, Nvshades, Orgmode, Rainbow-delimiters, Render-markdown, Semantic-tokens, Snacks*, Syntax, Telescope, Tiny-inline-diagnostic, Todo, Treesitter, Trouble, Vim-illuminate, Whichkey
Also auto-detected — when the plugin is installed, chad46 injects its defaults:
| Plugin | What it does |
|---|---|
| Telescope | search prompt icon, layout, dropdown theme |
| Nvim-tree | Nerd Font file/folder icons, git status glyphs |
| Gitsigns | add/change/delete signs in signcolumn — local config |
| Mason | package pending/installed/uninstalled icons |
| Indent-blankline | indent guide character |
| Which-key | modern preset, group labels |
| Nvim-cmp | 30+ kind icons, menu formatting |
| Blink-cmp | rounded borders, kind icon column |
| Devicons | filetype icon color overrides |
| Lualine | NvChad statusline color theme |
| Bufferline | NvChad buffer tab color theme |
| Dap | breakpoint signs |
| Trouble | right-side layout |
| Snacks | notifier icons, picker icons/keymaps/layout/explorer, indent style |
| Coc | diagnostics, completion kind icons (Nerd Font), format items order, signature/hover/floating borders, inlayHint, codeLens — respects cmp.style |
Full reference of available setup() options:
| Option | Type | Default | Description |
|---|---|---|---|
transparency |
boolean |
false |
Disable background color for transparent terminals |
cmp.style |
string |
"default" |
Completion UI style — affects nvim-cmp, blink.cmp, and coc.nvim PUM: "default", "atom", "atom_colored", "flat_light", "flat_dark" |
statusline.nvchad_stl |
boolean |
false |
Enable NvChad native statusline |
statusline.theme |
string |
"default" |
Themes: "default", "minimal", "vscode", "vscode_colored" |
statusline.separator_style |
string |
"default" |
nvchad_stl separator: "default", "round", "block", "arrow" |
statusline.ignore_focus |
table |
{} |
Filetypes to hide statusline |
statusline.order |
table |
nil |
Custom nvchad_stl component order |
statusline.modules |
table |
nil |
Custom nvchad_stl component modules |
statusline.refresh_interval |
number |
1000 |
nvchad_stl periodic refresh in ms; 0 = disable |
statusline.styles |
table |
{} |
Lualine/heirline theme style overrides |
integrations |
table |
{} |
Explicit enable/disable overrides for auto-detection |
changed_themes |
table |
{} |
Per-theme color overrides (see below) |
hl_override |
table |
{} |
Override highlight groups per integration (nested: { telescope = { TelescopeBorder = { ... } } }) |
hl_add |
table |
{} |
Add custom highlight groups |
Default config for reference:
{
transparency = false,
changed_themes = {},
hl_override = {},
hl_add = {},
statusline = { nvchad_stl = false, theme = "default", styles = {} },
cmp = { style = "default" }, -- also controls coc.nvim PUM
integrations = {},
}require("chad46").setup({
transparency = true,
changed_themes = {
all = { base_30 = { blue = "#ff0000" } },
onedark = { base_30 = { red = "#00ff00" } },
},
hl_override = {
defaults = {
NormalFloat = { bg = "NONE" },
FloatBorder = { fg = "blue" },
},
treesitter = {
["@variable"] = { fg = "blue", italic = true },
},
},
hl_add = {
MyCustomGroup = { fg = "green", bg = "black", bold = true },
},
statusline = {
nvchad_stl = true,
theme = "flat_dark",
separator_style = "round",
styles = {
my_style = function()
local c = require("chad46").get_theme_tb("base_30")
return {
normal = { a = { bg = c.blue, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.white }, c = { bg = "NONE", fg = c.white } },
insert = { a = { bg = c.green, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.green }, c = { bg = "NONE", fg = c.white } },
visual = { a = { bg = c.purple, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.purple }, c = { bg = "NONE", fg = c.white } },
replace = { a = { bg = c.orange, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.orange }, c = { bg = "NONE", fg = c.white } },
command = { a = { bg = c.yellow, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.yellow }, c = { bg = "NONE", fg = c.white } },
terminal = { a = { bg = c.green, fg = c.black, gui = "bold" }, b = { bg = c.one_bg2, fg = c.green }, c = { bg = "NONE", fg = c.white } },
}
end,
-- override a built-in style:
-- default = function() ... end,
},
},
})-- Load/setup
require("chad46").setup(opts) -- configure and enable auto-config patching
vim.cmd.colorscheme("chad46_tokyonight") -- switch theme at runtime
require("chad46").load("tokyonight") -- switch theme at runtime (same as above)
-- Query colors
local c = require("chad46").get_theme_tb("base_30") -- { blue = "#...", red = "#...", ... }
local c16 = require("chad46").get_theme_tb("base_16") -- { base00 = "#...", base01 = "#...", ... }
-- Apply plugin configs (non-lazy managers)
require("chad46").apply_configs() -- all enabled
require("chad46").apply_configs("telescope") -- single plugin
require("chad46").apply_configs({"lualine","bufferline"}) -- multipleBuilt-in NvChad-style statusline with 4 themes. No external dependency required. Lualine-style refresh architecture: 16ms event coalescing + 1000ms periodic fallback.
Simple — enable via setup():
require("chad46").setup({
statusline = {
nvchad_stl = true,
theme = "minimal",
separator_style = "round",
ignore_focus = { "list" },
order = { "mode", "file", "git", "%=", "lsp_msg", "diagnostics", "lsp", "cwd", "cursor" },
modules = {
clock = function() return os.date(" %H:%M:%S ") end,
},
refresh_interval = 1000,
},
})All fields except nvchad_stl and styles are passed to nvchad_stl.enable().
Or call it directly for full control:
require("chad46.adapters.nvchad_stl").enable({
theme = "minimal",
separator_style = "round",
ignore_focus = { "list" },
order = { "mode", "file", "git", "%=", "lsp_msg", "diagnostics", "lsp", "cwd", "cursor" },
modules = {
clock = function() return os.date(" %H:%M:%S ") end,
},
refresh_interval = 1000,
})Custom components:
require("chad46.adapters.nvchad_stl").enable({
modules = {
clock = function() return os.date(" %H:%M:%S ") end,
battery = function() return " 85% " end,
},
order = { "mode", "file", "git", "%=", "clock", "battery", "lsp", "cwd", "cursor" },
})Sync from upstream via bash sync.sh --stl.
-- Shared statusline API (all styles, respects statusline.theme)
local st = require("chad46.adapters.statusline")
local theme = st.get_theme() -- mode-based theme (normal/insert/etc)
local colors = st.get_colors() -- raw color palette from current theme
local mode_colors = st.get_mode_colors() -- mode indicator colors
-- lualine
require("lualine").setup({
options = { theme = require("chad46.adapters.lualine").get_theme() },
})
-- bufferline
require("bufferline").setup({
highlights = require("chad46.adapters.bufferline").get_theme(),
})
-- heirline
local h = require("chad46.adapters.heirline")
local c = h.get_colors() -- includes .section, .mode_a, .mode_b, .mode_c
local m = h.get_mode_colors() -- .normal, .insert, .visual, ...
local colors = {
bright_bg = c.section.bg,
bright_fg = c.section.fg,
red = c.red, blue = c.blue, green = c.green,
purple = c.purple, orange = c.orange, yellow = c.yellow,
gray = c.gray, gray_fg = c.gray_fg, light_grey = c.light_grey,
white = c.white, black = c.black, bg = c.bg, bg_alt = c.one_bg2,
-- mode colors
normal = m.normal.bg,
insert = m.insert.bg,
visual = m.visual.bg,
replace = m.replace.bg,
command = m.command.bg,
}
-- Then use `colors` in your heirline components
local ViMode = {
provider = function()
return { " NORMAL ", " INSERT ", " VISUAL ", " REPLACE ", " COMMAND ", " TERMINAL " }
end,
hl = function()
local mode_colors = { normal = colors.normal, insert = colors.insert,
visual = colors.visual, replace = colors.replace,
command = colors.command, terminal = colors.insert }
return { bg = mode_colors[vim.fn.mode()], fg = colors.black, bold = true }
end,
}
local FileName = {
provider = function() return " " .. vim.fn.expand "%:t" end,
hl = { bg = colors.bg_alt, fg = colors.white },
}
require("heirline").setup({
statusline = {
ViMode,
FileName,
},
}):colorscheme chad46_tokyonight " switch theme — standard :colorscheme command
:colorscheme chad46_catppuccin
:colorscheme chad46_nordOr via Lua (Neovim only):
require("chad46").load("tokyonight")
require("chad46").load("catppuccin")
require("chad46").load("nord")94 airline themes match the colorschemes. Airline theme names use underscores instead of hyphens:
:let g:airline_theme = 'chad46_bearded_arc' " note: bearded_arc (underscore)
:AirlineRefreshView all 94 themes
aquarium, ashes, aylin, ayu_dark, ayu_light, bearded-arc, blossom_light, carbonfox, catppuccin-latte, catppuccin, chadracula-evondev, chadracula, chadtain, chocolate, darcula-dark, dark_horizon, decay, default-dark, default-light, doomchad, eldritch, embark, everblush, everforest_light, everforest, falcon, flex-light, flexoki-light, flexoki, flouromachine, gatekeeper, github_dark, github_light, gruvbox_light, gruvbox, gruvchad, hiberbee, horizon, jabuti, jellybeans, kanagawa-dragon, kanagawa, material-darker, material-deep-ocean, material-lighter, melange, midnight_breeze, mito-laser, monekai, monochrome, mountain, nano-light, neofusion, nightfox, nightlamp, nightowl, nord, obsidian-ember, oceanic-light, oceanic-next, one_light, onedark, onenord_light, onenord, oxocarbon, palenight, pastelbeans, pastelDark, penumbra_dark, penumbra_light, poimandres, radium, rosepine-dawn, rosepine, rxyhn, scaryforest, seoul256_dark, seoul256_light, solarized_dark, solarized_light, solarized_osaka, starlight, sunrise_breeze, sweetpastel, tokyodark, tokyonight, tomorrow_night, tundra, vesper, vscode_dark, vscode_light, wombat, yoru, zenburn
local c = require("chad46").get_theme_tb("base_30")
-- c.blue, c.red, c.green, c.black, c.white, c.one_bg, c.nord_blue, ...base_30 — semantic color names (used by integrations).
base_16 — base16 canonical palette (used by treesitter/syntax).
Vim usage (pre-generated colorscheme files)
Pre-generated .vim files with full hi commands — no Neovim needed.
" vim-plug
Plug 'ChuYanLon/chad46'
" ~/.vimrc
syntax on
colorscheme chad46_bearded-arc " or chad46_nord, chad46_catppuccin, etc.vim-airline (94 themes, underscores instead of hyphens):
Plug 'ChuYanLon/chad46'
Plug 'vim-airline/vim-airline'
let g:airline_theme = 'chad46_bearded_arc'lightline (94 themes):
Plug 'ChuYanLon/chad46'
Plug 'itchyny/lightline.vim'
let g:lightline = { 'colorscheme': 'chad46_bearded_arc' }coc.nvim — full support (160+ highlights + auto-config):
Plug 'ChuYanLon/chad46'
Plug 'neoclide/coc.nvim', {'branch': 'release'}All diagnostic highlights, completion menu icons (kind column), signature/hover/floating styling, and tree view are themed automatically.
Completion item kind icons reuse the same Nerd Font set as nvim-cmp and blink.cmp, and respect the cmp.style option.
NERDTree highlights are included — no extra config:
Plug 'ChuYanLon/chad46'
Plug 'preservim/nerdtree'# Sync themes and integrations from NvChad/base46
bash sync.sh
# Sync types from NvChad/ui
bash sync.sh --types
# Sync native statusline modules from NvChad/ui (with chad46 compatibility fixup)
bash sync.sh --stl- NvChad/base46 — upstream source for themes and integrations
- NvChad/ui — upstream source for type definitions and statusline
- tokyonight.nvim — inspired the auto-detect integration system
MIT © ChuYanLon
Acknowledgments: This project contains code derived from NvChad/base46 and NvChad/ui. Themes, integrations, type definitions, and statusline modules are synced from those upstream projects. All upstream code remains copyright © NvChad contributors and is used under the terms of the MIT License.





