• Stars
    star
    5,432
  • Rank 7,565 (Top 0.2 %)
  • Language
    Lua
  • License
    MIT License
  • Created over 3 years ago
  • Updated 3 months 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
14,655
star
2

tmux

đŸ’Ŋ Soothing pastel theme for Tmux!
Shell
1,635
star
3

vscode

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

wallpapers

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

gtk

đŸĒŸ Soothing pastel theme for GTK3/4
Python
908
star
6

discord

🎮 Soothing pastel theme for Discord
SCSS
763
star
7

vscode-icons

đŸĻŠ Soothing pastel icons for VSCode/VSCodium
TypeScript
561
star
8

iterm

🍭 Soothing pastel theme for iTerm2
TypeScript
473
star
9

userstyles

🖌 Soothing pastel userstyles
Less
459
star
10

spicetify

🎧 Soothing pastel theme for Spotify
CSS
427
star
11

alacritty

🌴 Soothing pastel theme for Alacritty
406
star
12

qbittorrent

🧲 Soothing pastel theme for qBittorrent
Just
402
star
13

firefox

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

obsidian

💎 Soothing pastel theme for Obsidian
CSS
371
star
15

jetbrains

🧠 Soothing pastel theme for JetBrains IDEs
TypeScript
367
star
16

nix

❄ī¸ Soothing pastel theme for Nix
Nix
364
star
17

kitty

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

stable-diffusion-webui

🧑‍🎨 Soothing pastel theme for Stable Diffusion WebUI
CSS
291
star
19

bat

đŸĻ‡ī¸ Soothing pastel theme for Bat
TypeScript
285
star
20

emacs

🍄 Soothing pastel theme for Emacs
Emacs Lisp
278
star
21

palette

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

rofi

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

minecraft

⛏ī¸ Soothing pastel theme for Minecraft
Python
255
star
24

github

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

zed

đŸĻ€ Soothing pastel theme for Zed
220
star
26

egui

📁 Soothing pastel theme for egui
Rust
218
star
27

cursors

🐁 Soothing pastel mouse cursors
Shell
213
star
28

gitea

đŸĩ Soothing pastel theme for Gitea
SCSS
213
star
29

kde

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

starship

🚀 Soothing pastel theme for Starship
Just
199
star
31

tailwindcss

💨 Soothing pastel theme for Tailwind CSS
TypeScript
189
star
32

dark-reader

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

i3

đŸŒģ Soothing pastel themes for i3 & sway
Just
173
star
34

fish

🐟 Soothing pastel theme for the Fish Shell
172
star
35

windows-terminal

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

waybar

📏 Soothing pastel theme for Waybar
CSS
169
star
37

grub

🌕 Soothing pastel theme for Grub2
167
star
38

lazygit

🍴 Soothing pastel theme for Lazygit
Nix
161
star
39

youtube

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

home-assistant

🏠 Soothing pastel theme for Home Assistant
149
star
41

hyprland

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

logseq

đŸĻĢ Soothing pastel theme for Logseq
SCSS
141
star
43

vim

🧋 Soothing pastel theme for Vim
Vim Script
133
star
44

zellij

🐙 Soothing pastel theme for Zellij
Just
121
star
45

nilesoft-shell

📃 Soothing pastel theme for Nilesoft Shell
NWScript
121
star
46

telegram

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

konsole

đŸĻš Soothing pastel theme for Konsole
Just
116
star
48

zsh-syntax-highlighting

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

btop

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

fzf

🧨 Soothing pastel theme for fzf
115
star
51

slack

đŸ’ŧ Soothing pastel theme for Slack
111
star
52

youtubemusic

🎧 Soothing pastel theme for YouTube Music
CSS
110
star
53

sublime-text

🍋 Soothing pastel color schemes for Sublime Text
109
star
54

wezterm

🐚 Soothing pastel theme for WezTerm
Lua
109
star
55

jupyterlab

📊 Soothing pastel theme for JupyterLab
CSS
109
star
56

cosmic-desktop

✨ Soothing pastel theme for COSMIC Desktop Environment
Python
104
star
57

fleet

🌊 Soothing pastel theme for JetBrains Fleet
Kotlin
103
star
58

tty

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

dunst

🐤 Soothing pastel theme for Dunst
100
star
60

steam

🕹ī¸ Soothing pastel theme for Steam (WIP)
CSS
99
star
61

warp

⚡ Soothing pastel theme for Warp
TypeScript
98
star
62

rust

đŸĻ€ Soothing pastel theme for Rust
Rust
97
star
63

python

🐍 Soothing pastel theme for Python
Python
96
star
64

gnome-terminal

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

jetbrains-icons

đŸĻŠ Soothing pastel icons for JetBrains IDEs
Kotlin
94
star
66

godot

👾 Soothing pastel theme for Godot
Just
89
star
67

xcode

🐌 Soothing pastel theme for Xcode
Just
88
star
68

mdBook

🎊 Soothing pastel theme for mdBook
CSS
87
star
69

chrome

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

papirus-folders

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

hyprlock

🔒 Soothing pastel theme for Hyprlock
80
star
72

go

đŸĻĢ Soothing pastel library for Go
Go
77
star
73

duckduckgo

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

github-file-explorer-icons

🐙 Soothing pastel icons for GitHub File Explorer
TypeScript
74
star
75

cli

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

joplin

📔ī¸ Soothing pastel theme for Joplin
CSS
72
star
77

vimium

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

matplotlib

📊 Soothing pastel theme for Matplotlib
Python
71
star
79

notepad-plus-plus

🐈 Soothing pastel theme for Notepad++
70
star
80

zathura

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

termux

⛄ Soothing pastel theme for Termux!
69
star
82

helix

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

website

🌐 Soothing pastel theme for the World Wide Web
Astro
69
star
84

toolbox

🧰 Catppuccin's development tools
JavaScript
69
star
85

sddm

🔒 Soothing pastel theme for SDDM
QML
67
star
86

obs

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

fcitx5

🧃 Soothing pastel theme for Fcitx5
66
star
88

k9s

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

polybar

📏 Soothing pastel theme for Polybar
64
star
90

refind

🔄 Soothing pastel theme for rEFInd
63
star
91

yazi

đŸĨ Soothing pastel theme for Yazi
TypeScript
63
star
92

floris-board

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

gitui

🍴 Soothing pastel theme for GitUI
Just
59
star
94

swaync

🔔 Soothing pastel theme for SwayNC
SCSS
57
star
95

infinity

🛸 Soothing pastel theme for Infinity for Reddit
57
star
96

qt5ct

🎨 Soothing pastel theme for qt5ct
57
star
97

mc

🌜 Soothing pastel theme for Midnight Commander
57
star
98

visual-studio

🌊 Soothing pastel themes for Visual Studio
PowerShell
54
star
99

Terminal.app

đŸ’ģ Soothing pastel theme for Terminal.app
54
star
100

freshrss

đŸ“Ĩ Soothing pastel theme for FreshRSS
CSS
53
star