
This port of Catppuccin is special because it was the first one and the one that originated the project itself. Given this, it's important to acknowledge that it all didn't come to be what it is now out of nowhere. So, if you are interested in knowing more about the initial stages of the theme, you can find it under the v0.1 tag.
with Neovim 0.12's vim.pack
vim.pack.add { { src = "https://github.com/catppuccin/nvim", name = "catppuccin" } }
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }
use { "catppuccin/nvim", as = "catppuccin" }
:Rocks install catppuccin.nvim
Support for Vim is provided through the vim branch.
Plug 'catppuccin/nvim', { 'branch': 'vim', 'as': 'catppuccin' }
[!NOTE] Keep in mind that Vim support has been dropped (#949) and this branch won't receive further updates unless necessary. For full Vim support, see catppuccin/vim. Starting from Vim v9.2.0219 and Neovim 0.12,
catppuccinis shipped with the editors. Note that it is not maintained by the Catppuccin organization and follows Vim colorscheme rules instead of the official Catppuccin style guide.
colorscheme catppuccin-nvim " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
vim.cmd.colorscheme "catppuccin-nvim"
There is no need to call setup if you don't want to change the default options and settings.
require("catppuccin").setup({
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = false, -- disables setting the background color.
float = {
transparent = false, -- enable transparent floating windows
solid = false, -- use solid styling for floating windows, see |winborder|
},
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
dim_inactive = {
enabled = false, -- dims the background color of inactive window
shade = "dark",
percentage = 0.15, -- percentage of the shade to apply to the inactive window
},
no_italic = false, -- Force no italic
no_bold = false, -- Force no bold
no_underline = false, -- Force no underline
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
comments = { "italic" }, -- Change the style of comments
conditionals = { "italic" },
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
-- miscs = {}, -- Uncomment to turn off hard-coded styles
},
lsp_styles = { -- Handles the style of specific lsp hl groups (see `:h lsp-highlight`).
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
ok = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
ok = { "underline" },
},
inlay_hints = {
background = true,
},
},
color_overrides = {},
custom_highlights = {},
auto_integrations = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
},
})
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin-nvim"
local latte = require("catppuccin.palettes").get_palette "latte"
local frappe = require("catppuccin.palettes").get_palette "frappe"
local macchiato = require("catppuccin.palettes").get_palette "macchiato"
local mocha = require("catppuccin.palettes").get_palette "mocha"
Returns a table where the key is the name of the color and the value is the hex code.
Colors can be overwritten using color_overrides, see https://github.com/catppuccin/nvim/discussions/323 for inspiration:
require("catppuccin").setup {
color_overrides = {
all = {
text = "#ffffff",
},
latte = {
base = "#ff0000",
mantle = "#242424",
crust = "#474747",
},
frappe = {},
macchiato = {},
mocha = {},
}
}
Global highlight groups can be overwritten, for example:
require("catppuccin").setup {
custom_highlights = function(colors)
return {
Comment = { fg = colors.flamingo },
TabLineSel = { bg = colors.pink },
CmpBorder = { fg = colors.surface2 },
Pmenu = { bg = colors.none },
}
end
}
Highlight groups per flavour can also be overwritten, for example:
require("catppuccin").setup {
highlight_overrides = {
all = function(colors)
return {
NvimTreeNormal = { fg = colors.none },
CmpBorder = { fg = "#3e4145" },
}
end,
latte = function(latte)
return {
Normal = { fg = latte.base },
}
end,
frappe = function(frappe)
return {
["@comment"] = { fg = frappe.surface2, style = { "italic" } },
}
end,
macchiato = function(macchiato)
return {
LineNr = { fg = macchiato.overlay1 },
}
end,
mocha = function(mocha)
return {
Comment = { fg = mocha.flamingo },
}
end,
},
}
Catppuccin provides theme support for other plugins in the Neovim ecosystem and extended Neovim functionality through integrations.
To enable/disable an integration you just need to set it to true/false, for example:
require("catppuccin").setup({
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
}
})
If you use vim.pack, lazy.nvim or
pckr.nvim to manage your plugins, you
can use the auto_integrations option to let catppuccin automatically detect
installed plugins and enable their respective integrations (this option is
enabled by default).
require("catppuccin").setup({
auto_integrations = true,
})
Below is a list of supported plugins and their corresponding integration module.
[!Important] If you'd like to see the full list of highlight groups modified by Catppuccin, see the
lua/catppuccin/groups/integrations/directory.
| Plugin | Default |
| |
| |
| artio.nvim |
|
| |
SpecialUse this to set it up:
| |
| |
| |
| |
SpecialUse this to set it up:
| |
SpecialUpdate your bufferline config to use the Catppuccin components:
Configurations are self-explanatory, see
| |
| |
SpecialSetting
In the nested tables you can set the style for the diagnostics, both
| |
| |
| |
| |
| |
SpecialUpdate your Feline config to use the Catppuccin components:
Notice that calling Here are the defaults:
| |
| |
SpecialSet `notification.window.winblend` to `0`:
| |
| |
| |
| |
Special
| |
| |
| |
| |
| |
Special
| |
| |
Special
| |
| |
| |
SpecialFor custom Lsp Kind Icon and Color
| |
SpecialTo implement color overrides in the
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Special
| |
| |
Special
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
SpecialThere're 2 available presets ( Here is how you can use them.
To use another flavour just replace | |
| |
| |
| |
| |
| |
| |
Special
| |
SpecialUse this to set it up:
| |
| |
| |
| |
| |
| |
| |
| |
|
Catppuccin is a highly customizable and configurable colorscheme. This does however come at the cost of complexity and execution time. Catppuccin can pre compute the results of your configuration and store the results in a compiled Lua file. We use these pre-cached values to set it's highlights.
By default, Catppuccin writes the compiled results into the system's cache directory. See below if you'd like to change the cache directory:
require("catppuccin").setup({ -- Note: On windows we replace `/` with `\` by default
compile_path = vim.fn.stdpath "cache" .. "/catppuccin"
})
Please disable additional_vim_regex_highlighting:
require("nvim-treesitter.configs").setup {
highlight = {
enable = true,
additional_vim_regex_highlighting = false
},
}
Catppuccin requires that your terminal supports true color, meaning that your terminal can display the full range of 16 million colors.
If you use tmux, make sure to enable true color support and italic font support. This will prevent issues raised in #415 and #428.
Current Maintainer(s)
Previous Maintainer(s)
Copyright © 2021-present Catppuccin Org
Lua
99.7%

This port of Catppuccin is special because it was the first one and the one that originated the project itself. Given this, it's important to acknowledge that it all didn't come to be what it is now out of nowhere. So, if you are interested in knowing more about the initial stages of the theme, you can find it under the v0.1 tag.
with Neovim 0.12's vim.pack
vim.pack.add { { src = "https://github.com/catppuccin/nvim", name = "catppuccin" } }
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }
use { "catppuccin/nvim", as = "catppuccin" }
:Rocks install catppuccin.nvim
Support for Vim is provided through the vim branch.
Plug 'catppuccin/nvim', { 'branch': 'vim', 'as': 'catppuccin' }
[!NOTE] Keep in mind that Vim support has been dropped (#949) and this branch won't receive further updates unless necessary. For full Vim support, see catppuccin/vim. Starting from Vim v9.2.0219 and Neovim 0.12,
catppuccinis shipped with the editors. Note that it is not maintained by the Catppuccin organization and follows Vim colorscheme rules instead of the official Catppuccin style guide.
colorscheme catppuccin-nvim " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
vim.cmd.colorscheme "catppuccin-nvim"
There is no need to call setup if you don't want to change the default options and settings.
require("catppuccin").setup({
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = false, -- disables setting the background color.
float = {
transparent = false, -- enable transparent floating windows
solid = false, -- use solid styling for floating windows, see |winborder|
},
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
dim_inactive = {
enabled = false, -- dims the background color of inactive window
shade = "dark",
percentage = 0.15, -- percentage of the shade to apply to the inactive window
},
no_italic = false, -- Force no italic
no_bold = false, -- Force no bold
no_underline = false, -- Force no underline
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
comments = { "italic" }, -- Change the style of comments
conditionals = { "italic" },
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
-- miscs = {}, -- Uncomment to turn off hard-coded styles
},
lsp_styles = { -- Handles the style of specific lsp hl groups (see `:h lsp-highlight`).
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
ok = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
ok = { "underline" },
},
inlay_hints = {
background = true,
},
},
color_overrides = {},
custom_highlights = {},
auto_integrations = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
},
})
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin-nvim"
local latte = require("catppuccin.palettes").get_palette "latte"
local frappe = require("catppuccin.palettes").get_palette "frappe"
local macchiato = require("catppuccin.palettes").get_palette "macchiato"
local mocha = require("catppuccin.palettes").get_palette "mocha"
Returns a table where the key is the name of the color and the value is the hex code.
Colors can be overwritten using color_overrides, see https://github.com/catppuccin/nvim/discussions/323 for inspiration:
require("catppuccin").setup {
color_overrides = {
all = {
text = "#ffffff",
},
latte = {
base = "#ff0000",
mantle = "#242424",
crust = "#474747",
},
frappe = {},
macchiato = {},
mocha = {},
}
}
Global highlight groups can be overwritten, for example:
require("catppuccin").setup {
custom_highlights = function(colors)
return {
Comment = { fg = colors.flamingo },
TabLineSel = { bg = colors.pink },
CmpBorder = { fg = colors.surface2 },
Pmenu = { bg = colors.none },
}
end
}
Highlight groups per flavour can also be overwritten, for example:
require("catppuccin").setup {
highlight_overrides = {
all = function(colors)
return {
NvimTreeNormal = { fg = colors.none },
CmpBorder = { fg = "#3e4145" },
}
end,
latte = function(latte)
return {
Normal = { fg = latte.base },
}
end,
frappe = function(frappe)
return {
["@comment"] = { fg = frappe.surface2, style = { "italic" } },
}
end,
macchiato = function(macchiato)
return {
LineNr = { fg = macchiato.overlay1 },
}
end,
mocha = function(mocha)
return {
Comment = { fg = mocha.flamingo },
}
end,
},
}
Catppuccin provides theme support for other plugins in the Neovim ecosystem and extended Neovim functionality through integrations.
To enable/disable an integration you just need to set it to true/false, for example:
require("catppuccin").setup({
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
}
})
If you use vim.pack, lazy.nvim or
pckr.nvim to manage your plugins, you
can use the auto_integrations option to let catppuccin automatically detect
installed plugins and enable their respective integrations (this option is
enabled by default).
require("catppuccin").setup({
auto_integrations = true,
})
Below is a list of supported plugins and their corresponding integration module.
[!Important] If you'd like to see the full list of highlight groups modified by Catppuccin, see the
lua/catppuccin/groups/integrations/directory.
| Plugin | Default |
| |
| |
| artio.nvim |
|
| |
SpecialUse this to set it up:
| |
| |
| |
| |
SpecialUse this to set it up:
| |
SpecialUpdate your bufferline config to use the Catppuccin components:
Configurations are self-explanatory, see
| |
| |
SpecialSetting
In the nested tables you can set the style for the diagnostics, both
| |
| |
| |
| |
| |
SpecialUpdate your Feline config to use the Catppuccin components:
Notice that calling Here are the defaults:
| |
| |
SpecialSet `notification.window.winblend` to `0`:
| |
| |
| |
| |
Special
| |
| |
| |
| |
| |
Special
| |
| |
Special
| |
| |
| |
SpecialFor custom Lsp Kind Icon and Color
| |
SpecialTo implement color overrides in the
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Special
| |
| |
Special
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
SpecialThere're 2 available presets ( Here is how you can use them.
To use another flavour just replace | |
| |
| |
| |
| |
| |
| |
Special
| |
SpecialUse this to set it up:
| |
| |
| |
| |
| |
| |
| |
| |
|
Catppuccin is a highly customizable and configurable colorscheme. This does however come at the cost of complexity and execution time. Catppuccin can pre compute the results of your configuration and store the results in a compiled Lua file. We use these pre-cached values to set it's highlights.
By default, Catppuccin writes the compiled results into the system's cache directory. See below if you'd like to change the cache directory:
require("catppuccin").setup({ -- Note: On windows we replace `/` with `\` by default
compile_path = vim.fn.stdpath "cache" .. "/catppuccin"
})
Please disable additional_vim_regex_highlighting:
require("nvim-treesitter.configs").setup {
highlight = {
enable = true,
additional_vim_regex_highlighting = false
},
}
Catppuccin requires that your terminal supports true color, meaning that your terminal can display the full range of 16 million colors.
If you use tmux, make sure to enable true color support and italic font support. This will prevent issues raised in #415 and #428.
Current Maintainer(s)
Previous Maintainer(s)
Copyright © 2021-present Catppuccin Org
Lua
99.7%