• Stars
    star
    4,581
  • Rank 8,826 (Top 0.2 %)
  • Language
    Lua
  • License
    MIT License
  • Created over 2 years ago
  • Updated 24 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🍨 Soothing pastel theme for (Neo)vim

Logo
Catppuccin for (Neo)vim

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

Flavours

Latte
Frappe
Macchiato
Mocha

Bake your own flavour! Here are some config from our community: (background source)

nvimwalk-custom

Features

Installation

lazy.nvim

{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }

packer.nvim

use { "catppuccin/nvim", as = "catppuccin" }

vim-plug

Plug 'catppuccin/nvim', { 'as': 'catppuccin' }

Usage

colorscheme catppuccin " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
vim.cmd.colorscheme "catppuccin"

Configuration

There is no need to call setup if you don't want to change the default options and settings.

require("catppuccin").setup({
    flavour = "mocha", -- latte, frappe, macchiato, mocha
    background = { -- :h background
        light = "latte",
        dark = "mocha",
    },
    transparent_background = false, -- disables setting the background color.
    show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
    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 = {},
    },
    color_overrides = {},
    custom_highlights = {},
    integration_default = nil, -- set to true/false to enable/disable integrations by default
    integrations = {
        cmp = true,
        gitsigns = true,
        nvimtree = true,
        treesitter = true,
        notify = false,
        mini = false,
        -- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
    },
})

-- setup must be called before loading
vim.cmd.colorscheme "catppuccin"

Customize highlights

Get catppuccin colors

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"

Will returns a table where the key is the name of the color and the value is its hex value corresponding to each flavour.

Overwriting colors

Colors can be overwritten using color_overrides in the setting, checkout #323 for inspirations:

require("catppuccin").setup {
    color_overrides = {
        all = {
            text = "#ffffff",
        },
        latte = {
            base = "#ff0000",
            mantle = "#242424",
            crust = "#474747",
        },
        frappe = {},
        macchiato = {},
        mocha = {},
    }
}

Note: For more information check out our style-guide

Overwriting highlight groups

Global highlight groups can be overwritten in the setting, 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
}

Per flavour highlight groups can also be overwritten in the setting, 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,
    },
}

Integrations

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,
        treesitter = true,
        notify = false,
        mini = false,
    }
})

Below is a list of supported plugins and their corresponding integration module. Note: If you'd like to know which highlight groups are being affected by catppuccin, check out this directory: lua/catppuccin/groups/integrations/.

Plugin Default
aerial.nvim
aerial = false
alpha-nvim
alpha = true
barbar.nvim
barbar = false
barbecue.nvim
barbecue = {
    dim_dirname = true, -- directory name is dimmed by default
    bold_basename = true,
    dim_context = false,
    alt_background = false,
},
Special

Use this to set it up:

require("barbecue").setup {
  theme = "catppuccin", -- catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
}
beacon.nvim
beacon = false
bufferline.nvim
Special

Update your bufferline config to use the Catppuccin components:

Note: bufferline needs to be loaded after setting up catppuccin or it will highlight incorrectly

use "akinsho/bufferline.nvim" {
  after = "catppuccin",
  config = function()
    require("bufferline").setup {
      highlights = require("catppuccin.groups.integrations.bufferline").get()
    }
  end
}

Configurations are self-explanatory, see :h bufferline-highlights for detailed explanations:

local mocha = require("catppuccin.palettes").get_palette "mocha"
bufferline.setup {
    highlights = require("catppuccin.groups.integrations.bufferline").get {
        styles = { "italic", "bold" },
        custom = {
            all = {
                fill = { bg = "#000000" },
            },
            mocha = {
                background = { fg = mocha.text },
            },
            latte = {
                background = { fg = "#000000" },
            },
        },
    },
}
coc.nvim
coc_nvim = false
Special

Setting enabled to true enables this integration.

coc_nvim = true,

Note: coc.nvim by default link to native lsp highlight groups so config from native_lsp will also apply to coc

In the inners tables you can set the style for the diagnostics, both virtual_text (what you see on the side) and underlines (what points directly at the thing (e.g. an error)).

native_lsp = {
    enabled = true,
    virtual_text = {
        errors = { "italic" },
        hints = { "italic" },
        warnings = { "italic" },
        information = { "italic" },
    },
    underlines = {
        errors = { "underline" },
        hints = { "underline" },
        warnings = { "underline" },
        information = { "underline" },
    },
    inlay_hints = {
        background = true,
    },
},
dashboard-nvim
dashboard = true
dropbar.nvim
dropbar = {
    enabled = false,
    color_mode = false, -- enable color for kind's texts, not just kind's icons
},
feline.nvim
Special

Update your Feline config to use the Catppuccin components:

local ctp_feline = require('catppuccin.groups.integrations.feline')

ctp_feline.setup()

require("feline").setup({
    components = ctp_feline.get(),
})

Notice that calling setup() is optional. You may pass a lua table in order to change assets, settings and the colors per vim mode.

Here are the defaults:

local clrs = require("catppuccin.palettes").get_palette()
local ctp_feline = require('catppuccin.groups.integrations.feline')
local U = require "catppuccin.utils.colors"

ctp_feline.setup({
    assets = {
        left_separator = "î‚ļ",
        right_separator = "",
        mode_icon = "ī†Ž",
        dir = "ķ°‰–",
        file = "ķ°ˆ™",
        lsp = {
            server = "ķ°…Ą",
            error = "ī„‘",
            warning = "ī„‘",
            info = "ī„‘",
            hint = "ī„‘",
        },
        git = {
            branch = "îœĨ",
            added = "ī•",
            changed = "ī…„",
            removed = "ī–",
        },
    },
    sett = {
        text = U.vary_color({ latte = latte.base }, clrs.surface0),
        bkg = U.vary_color({ latte = latte.crust }, clrs.surface0),
        diffs = clrs.mauve,
        extras = clrs.overlay1,
        curr_file = clrs.maroon,
        curr_dir = clrs.flamingo,
        show_modified = true -- show if the file has been modified
    },
    mode_colors = {
        ["n"] = { "NORMAL", clrs.lavender },
        ["no"] = { "N-PENDING", clrs.lavender },
        ["i"] = { "INSERT", clrs.green },
        ["ic"] = { "INSERT", clrs.green },
        ["t"] = { "TERMINAL", clrs.green },
        ["v"] = { "VISUAL", clrs.flamingo },
        ["V"] = { "V-LINE", clrs.flamingo },
        ["īŋŊ"] = { "V-BLOCK", clrs.flamingo },
        ["R"] = { "REPLACE", clrs.maroon },
        ["Rv"] = { "V-REPLACE", clrs.maroon },
        ["s"] = { "SELECT", clrs.maroon },
        ["S"] = { "S-LINE", clrs.maroon },
        ["īŋŊ"] = { "S-BLOCK", clrs.maroon },
        ["c"] = { "COMMAND", clrs.peach },
        ["cv"] = { "COMMAND", clrs.peach },
        ["ce"] = { "COMMAND", clrs.peach },
        ["r"] = { "PROMPT", clrs.teal },
        ["rm"] = { "MORE", clrs.teal },
        ["r?"] = { "CONFIRM", clrs.mauve },
        ["!"] = { "SHELL", clrs.green },
    }
})

Note: Currently feline doesn't officially support custom themes. In order for :colorscheme catppuccin-<flavour> to work you could add this autocmd as a workaround:

vim.api.nvim_create_autocmd("ColorScheme", {
    pattern = "*",
    callback = function()
        package.loaded["feline"] = nil
        package.loaded["catppuccin.groups.integrations.feline"] = nil
        require("feline").setup {
            components = require("catppuccin.groups.integrations.feline").get(),
        }
    end,
})
fern.vim
fern = false
fidget.nvim
fidget = false
Special Set `window.blend` to `0`:
require("fidget").setup {
    window = {
        blend = 0,
    },
    -- ... the rest of your fidget config
}
flash.nvim
flash = true
gitsigns.nvim
gitsigns = true
harpoon
harpoon = false
headlines.nvim
headlines = false
hop.nvim
hop = false
indent-blankline.nvim
indent_blankline = {
    enabled = true,
    colored_indent_levels = false,
},
Special

colored_indent_levels enables char highlights per indent level. Follow the instructions here to set the latter up.

leap.nvim
leap = false
lightline.vim
Special

Use this to set it up (Note: catppuccin is the only valid colorscheme name. It will pick the one set in your config):

let g:lightline = {'colorscheme': 'catppuccin'}
lightspeed.nvim
lightspeed = false
lspsaga.nvim
lsp_saga = false
Special

For custom Lsp Kind Icon and Color

require("lspsaga").setup {
    ui = {
        kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(),
    },
}
lualine.nvim
Special

Use this to set it up (Note: catppuccin is the only valid theme name. It will pick the one set in your config):

require('lualine').setup {
    options = {
        theme = "catppuccin"
        -- ... the rest of your lualine config
    }
}
markdown
markdown = true
mason.nvim
mason = false
mini.nvim
mini = false
neo-tree.nvim
neotree = false
neogit
neogit = false
neotest
neotest = false
noice.nvim
noice = false
nvim-cmp
cmp = true
nvim-dap & nvim-dap-ui
dap = {
    enabled = true,
    enable_ui = true, -- enable nvim-dap-ui
}
Special
-- You NEED to override nvim-dap's default highlight groups, AFTER requiring nvim-dap
require("dap")

local sign = vim.fn.sign_define

sign("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = ""})
sign("DapBreakpointCondition", { text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = ""})
sign("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = ""})
nvim-lspconfig
native_lsp = {
    enabled = true,
    virtual_text = {
        errors = { "italic" },
        hints = { "italic" },
        warnings = { "italic" },
        information = { "italic" },
    },
    underlines = {
        errors = { "underline" },
        hints = { "underline" },
        warnings = { "underline" },
        information = { "underline" },
    },
    inlay_hints = {
        background = true,
    },
},
Special

In the inners tables you can set the style for the diagnostics, both virtual_text (what you see on the side) and underlines (what points directly at the thing (e.g. an error)).

navic
navic = {
    enabled = false,
    custom_bg = "NONE", -- "lualine" will set background to mantle
},
Special
-- You NEED to enable highlight in nvim-navic setting or it won't work
require("nvim-navic").setup {
    highlight = true
}
nvim-notify
notify = false
nvim-semantic-tokens
semantic_tokens = true
nvim-tree.lua
nvimtree = true
nvim-treesitter-context
treesitter_context = false
nvim-treesitter
treesitter = true
nvim-ts-rainbow2
ts_rainbow2 = true
nvim-ts-rainbow
ts_rainbow = true
octo.nvim
octo = false
overseer.nvim
overseer = false
pounce.nvim
pounce = false
rainbow-delimiters.nvim
rainbow_delimiters = true
symbols-outline.nvim
symbols_outline = false
telekasten.nvim
telekasten = false
telescope.nvim
telescope = {
    enabled = true,
    -- style = "nvchad"
}
trouble.nvim
lsp_trouble = false
vim-airline
Special

Use this to set it up (Note: catppuccin is the only valid colorscheme name. It will pick the one set in your config):

let g:airline_theme = 'catppuccin'
vim-clap
Special

Use this to set it up:

let g:clap_theme = 'catppuccin'
vim-gitgutter
gitgutter = false
vim-illuminate
illuminate = false
vim-sandwich
sandwich = false
vim-sneak
vim_sneak = false
vimwiki
vimwiki = false
which-key.nvim
which_key = false

Compile

Note: As of 7/10/2022, catppuccin should be able to automatically recompile when the setup table changed.

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 precached values to set it's highlights.

By default catppuccin writes the compiled results into the system's cache directory. You can change the cache dir using:

require("catppuccin").setup({ -- Note: On windows we replace `/` with `\` by default
    compile_path = vim.fn.stdpath "cache" .. "/catppuccin"
})

FAQ

Wrong treesitter highlights

Please disable additional_vim_regex_highlighting

require("nvim-treesitter.configs").setup {
    highlight = {
        enable = true,
        additional_vim_regex_highlighting = false
    },
}

Colors doesn't match preview screenshots

Catppuccin requires true color support AKA terminals support the full range of 16 million colors

  • Supported: iterm2 (macOS), kitty, wezterm, alacritty, tmux, ...

Full list of support terminals can be found here: https://github.com/termstandard/colors#truecolor-support-in-output-devices

  • Unsupported terminal: Terminal.app (macOS), Terminus, Terminology, ...

Full list of Unsupported terminals can be found here: https://github.com/termstandard/colors#not-supporting-truecolor

Thanks to

 

Copyright Š 2021-present Catppuccin Org

More Repositories

1

catppuccin

😸 Soothing pastel theme for the high-spirited!
TypeScript
12,630
star
2

vscode

đŸĻŒ Soothing pastel theme for VSCode & Azure Data Studio
TypeScript
1,013
star
3

wallpapers

đŸ–ŧī¸ Wallpapers to match your Catppuccin setups!
TypeScript
944
star
4

gtk

đŸĒŸ Soothing pastel theme for GTK
Python
807
star
5

tmux

đŸ’Ŋ Soothing pastel theme for Tmux!
Shell
771
star
6

discord

🎮 Soothing pastel theme for Discord
SCSS
577
star
7

iterm

🍭 Soothing pastel theme for iTerm2
TypeScript
473
star
8

alacritty

🌴 Soothing pastel theme for Alacritty
406
star
9

firefox

đŸĻŠ Soothing pastel theme for Firefox
JavaScript
377
star
10

spicetify

🎧 Soothing pastel theme for Spotify
CSS
355
star
11

vscode-icons

đŸĻŠ Soothing pastel icons for VSCode/VSCodium
TypeScript
353
star
12

jetbrains

🧠 Soothing pastel theme for JetBrains IDEs
TypeScript
317
star
13

kitty

đŸ˜Ŋ Soothing pastel theme for Kitty
314
star
14

obsidian

💎 Soothing pastel theme for Obsidian
CSS
309
star
15

stable-diffusion-webui

🧑‍🎨 Soothing pastel theme for Stable Diffusion WebUI
CSS
281
star
16

userstyles

🖌 Soothing pastel theme for Userstyles
Less
266
star
17

palette

🎨 Soothing pastel theme to use within your projects!
JavaScript
265
star
18

rofi

đŸĻ‚ Soothing pastel theme for Rofi
Shell
265
star
19

qbittorrent

🧲 Soothing pastel theme for qBittorrent
PowerShell
261
star
20

github

🐈‍âŦ› Soothing pastel theme for GitHub
CSS
243
star
21

emacs

🍄 Soothing pastel theme for Emacs
Emacs Lisp
231
star
22

minecraft

⛏ī¸ Soothing pastel theme for Minecraft
Python
226
star
23

cursors

🐁 Soothing pastel mouse cursors
Shell
213
star
24

kde

đŸŒģ Soothing pastel theme for KDE
Shell
199
star
25

tailwindcss

💨 Soothing pastel theme for Tailwind CSS
TypeScript
189
star
26

dark-reader

✴ī¸ Soothing pastel theme for Dark Reader
185
star
27

bat

đŸĻ‡ī¸ Soothing pastel theme for Bat
TypeScript
183
star
28

fish

🐟 Soothing pastel theme for the Fish Shell
172
star
29

windows-terminal

đŸĒŸ Soothing pastel theme for Windows Terminal
171
star
30

waybar

📏 Soothing pastel theme for Waybar
CSS
169
star
31

grub

🌕 Soothing pastel theme for Grub2
167
star
32

gitea

đŸĩ Soothing pastel theme for Gitea
SCSS
167
star
33

egui

📁 Soothing pastel theme for egui
Rust
166
star
34

youtube

đŸ“ē Soothing pastel theme for YouTube
CSS
161
star
35

hyprland

đŸŒģ Soothing pastel theme for Hyprland
Just
144
star
36

vim

🧋 Soothing pastel theme for Vim
Vim Script
133
star
37

telegram

đŸ’Ŧ Soothing pastel theme for Telegram
Smarty
120
star
38

zsh-syntax-highlighting

đŸĒ— Soothing pastel theme for zsh-syntax-highlighting
Shell
116
star
39

i3

đŸŒģ Soothing pastel themes for i3 & sway
Just
115
star
40

btop

🧙‍♂ī¸ Soothing pastel theme for btop
115
star
41

fzf

🧨 Soothing pastel theme for fzf
115
star
42

starship

🚀 Soothing pastel theme for Starship
115
star
43

logseq

đŸĻĢ Soothing pastel theme for Logseq
SCSS
111
star
44

wezterm

🐚 Soothing pastel theme for WezTerm
Lua
109
star
45

home-assistant

🏠 Soothing pastel theme for Home Assistant
107
star
46

lazygit

🍴 Soothing pastel theme for Lazygit
Just
101
star
47

steam

🕹ī¸ Soothing pastel theme for Steam (WIP)
CSS
101
star
48

dunst

🐤 Soothing pastel theme for Dunst
100
star
49

warp

⚡ Soothing pastel theme for Warp
TypeScript
98
star
50

gnome-terminal

🧝‍♂ī¸ Soothing pastel theme for Gnome Terminal
Python
95
star
51

konsole

đŸĻš Soothing pastel theme for Konsole
87
star
52

sublime-text

🍋 Soothing pastel color schemes for Sublime Text
87
star
53

zellij

🐙 Soothing pastel theme for Zellij
87
star
54

mdBook

🎊 Soothing pastel theme for mdBook
CSS
87
star
55

chrome

đŸ‘ģ Soothing pastel theme for Chrome
86
star
56

papirus-folders

📜 Soothing pastel theme for Papirus Icon Theme folders
Shell
84
star
57

slack

đŸ’ŧ Soothing pastel theme for Slack
84
star
58

rust

đŸĻ€ Soothing pastel theme for Rust
Rust
80
star
59

tty

đŸ–Ĩī¸ Soothing pastel theme for the Linux TTY
Shell
78
star
60

duckduckgo

đŸĻ† Soothing pastel theme for DuckDuckGo
JavaScript
75
star
61

youtubemusic

🎧 Soothing pastel theme for YouTube Music
CSS
74
star
62

nilesoft-shell

📃 Soothing pastel theme for Nilesoft Shell
NWScript
73
star
63

cli

đŸĒ„ Soothing pastel theme manager (WIP)
Go
72
star
64

zed

đŸĻ€ Soothing pastel theme for Zed
72
star
65

vimium

đŸŒŧ Soothing pastel theme for Vimium
CSS
71
star
66

zathura

🧚‍♂ī¸ Soothing pastel theme for Zathura
70
star
67

fleet

🌊 Soothing pastel theme for JetBrains Fleet
Python
70
star
68

termux

⛄ Soothing pastel theme for Termux!
69
star
69

helix

âžŋ Soothing pastel theme for Helix!
Python
69
star
70

toolbox

🧰 Catppuccin's development tools
JavaScript
69
star
71

go

đŸĻĢ Soothing pastel library for Go
Go
67
star
72

sddm

🔒 Soothing pastel theme for SDDM
QML
67
star
73

obs

âēī¸ Soothing pastel theme for OBS Studio
Shell
67
star
74

fcitx5

🧃 Soothing pastel theme for Fcitx5
66
star
75

k9s

đŸļ Soothing pastel theme for k9s
TypeScript
64
star
76

polybar

📏 Soothing pastel theme for Polybar
64
star
77

python

🐍 Soothing pastel theme for Python
Python
64
star
78

joplin

📔ī¸ Soothing pastel theme for Joplin
CSS
63
star
79

xcode

🐌 Soothing pastel theme for Xcode
Python
63
star
80

matplotlib

📊 Soothing pastel theme for Matplotlib
Python
62
star
81

floris-board

đŸĨ€ Soothing pastel theme for Floris Board
61
star
82

jupyterlab

📊 Soothing pastel theme for JupyterLab
CSS
61
star
83

godot

👾 Soothing pastel theme for Godot
Python
58
star
84

infinity

🛸 Soothing pastel theme for Infinity for Reddit
57
star
85

visual-studio

🌊 Soothing pastel themes for Visual Studio
PowerShell
54
star
86

qt5ct

🎨 Soothing pastel theme for qt5ct
54
star
87

notepad-plus-plus

🐈 Soothing pastel theme for Notepad++
52
star
88

website

🌐 Soothing pastel theme for the World Wide Web
Astro
52
star
89

github-readme-stats

🐙 Soothing pastel theme for Github Readme Stats
JavaScript
51
star
90

jetbrains-icons

đŸĻŠ Soothing pastel icons for JetBrains IDEs
Kotlin
50
star
91

template

💡 Template for Catppuccin ports. Please follow the instructions below
49
star
92

thunderbird

🕊ī¸ Soothing pastel theme for Thunderbird
Shell
48
star
93

xresources

đŸĻ Soothing pastel theme for Xresources
47
star
94

refind

🔄 Soothing pastel theme for rEFInd
47
star
95

cava

đŸ“ĸ Soothing pastel theme for Cava
45
star
96

gitui

🍴 Soothing pastel theme for GitUI
45
star
97

mc

🌜 Soothing pastel theme for Midnight Commander
43
star
98

vivaldi

đŸŽģ Soothing pastel theme for Vivaldi
TypeScript
41
star
99

highlightjs

🚨 Soothing pastel theme for Highlight.js
SCSS
41
star
100

st

🐸 Soothing pastel theme for st
C
40
star