🍨 Soothing pastel theme for NeoVim
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Pocco81 a674217ce9 BREAKING CHANGE: evolving, moving from Catppuccino -> Katppuccino 3 years ago
autoload/lightline/colorscheme Provide colorscheme variable expected by lightline. 3 years ago
colors dev: renamed most dirst and base files to katppuccino 3 years ago
extra fix: bright yellow on light melya 3 years ago
lua dev: renamed core to katppuccino 3 years ago
plugin dev: renamed most dirst and base files to katppuccino 3 years ago
.editorconfig dev: initial structure 3 years ago
.gitignore Initial commit 3 years ago
CONTRIBUTING.md license 3 years ago
LICENSE.md feat: contributing guidelines 3 years ago
README.md BREAKING CHANGE: evolving, moving from Catppuccino -> Katppuccino 3 years ago
stylua.toml feat: added StyLua conf file 3 years ago

README.md

Read this:

Hello there and thanks for following the development of Katppuccino.nvim: remastered version. This branch is meant to hopefully end up being merged to main. As of now, all of the development discussions are carried out on #44, so feel free to leave your suggestions and ideas there :)

About

Katppuccino.nvim is a NeoVim plugin that provides multiple colorschemes based on the katppuccino color palette but varying their properties. Apart from the eye-candy colorschemes, Katppuccino.nvim also provides integrations with multiple plugins and tools you are probably already using (e.g. Treesitter, Native LSP, ...).

🌲 Table of Contents

🍨 Flavors

Dark katppuccino

Neon Latte

Soft Manilo

Light Melya

πŸ“· Extra

Tmux Ports

Neon Latte Β  Β  Β  Dark katppuccino

Soft Manilo Β  Β  Β  Light Melya

🎁 Features

πŸ“Ί Notices

Checkout the CHANGELOG.md file for more information on the notices below:

  • 03-09-21: Ported katppuccino themes to Tmux!
  • 01-09-21: Added API and functionality for remapping colors and highlight groups + added lightspeed.nvim integration.
  • 29-08-21: Refactored diffs and git related stuff, added the `CPClear` command and added option to set terminal colors
  • 22-08-21: Just released!
Old notices...

πŸ“¦ Installation

Prerequisites

Adding the plugin

You can use your favorite plugin manager for this. Here are some examples with the most popular ones:

Vim-plug

Plug 'Pocco81/Katppuccino.nvim'

Packer.nvim

use "Pocco81/Katppuccino.nvim"

Vundle

Plugin 'Pocco81/Katppuccino.nvim'

NeoBundle

NeoBundleFetch 'Pocco81/Katppuccino.nvim'

Setup

There are already some sane defaults that you may like, however you can change them to match your taste. These are the defaults:

colorscheme = "dark_katppuccino",
transparency = false,
term_colors = false,
styles = {
	comments = "italic",
	functions = "italic",
	keywords = "italic",
	strings = "NONE",
	variables = "NONE",
},
integrations = {
	treesitter = true,
	native_lsp = {
		enabled = true,
		virtual_text = {
			errors = "italic",
			hints = "italic",
			warnings = "italic",
			information = "italic",
		},
		underlines = {
			errors = "underline",
			hints = "underline",
			warnings = "underline",
			information = "underline",
		}
	},
	lsp_trouble = false,
	lsp_saga = false,
	gitgutter = false,
	gitsigns = false,
	telescope = false,
	nvimtree = {
		enabled = false,
		show_root = false,
	},
	which_key = false,
	indent_blankline = {
		enabled = false,
		colored_indent_levels = false,
	},
	dashboard = false,
	neogit = false,
	vim_sneak = false,
	fern = false,
	barbar = false,
	bufferline = false,
	markdown = false,
	lightspeed = false,
	ts_rainbow = false,
	hop = false,
}

The way you setup the settings on your configuration varies on whether you are using vimL for this or Lua.

For init.lua

local katppuccino = require("katppuccino")

-- configure it
katppuccino.setup(
    {
		colorscheme = "dark_katppuccino",
		transparency = false,
		term_colors = false,
		styles = {
			comments = "italic",
			functions = "italic",
			keywords = "italic",
			strings = "NONE",
			variables = "NONE",
		},
		integrations = {
			treesitter = true,
			native_lsp = {
				enabled = true,
				virtual_text = {
					errors = "italic",
					hints = "italic",
					warnings = "italic",
					information = "italic",
				},
				underlines = {
					errors = "underline",
					hints = "underline",
					warnings = "underline",
					information = "underline",
				}
			},
			lsp_trouble = false,
			lsp_saga = false,
			gitgutter = false,
			gitsigns = false,
			telescope = false,
			nvimtree = {
				enabled = false,
				show_root = false,
			},
			which_key = false,
			indent_blankline = {
				enabled = false,
				colored_indent_levels = false,
			},
			dashboard = false,
			neogit = false,
			vim_sneak = false,
			fern = false,
			barbar = false,
			bufferline = false,
			markdown = false,
			lightspeed = false,
			ts_rainbow = false,
			hop = false,
		}
	}
)

For init.vim

lua << EOF
local katppuccino = require("katppuccino")

-- configure it
katppuccino.setup(
    {
		colorscheme = "dark_katppuccino",
		transparency = false,
		term_colors = false,
		styles = {
			comments = "italic",
			functions = "italic",
			keywords = "italic",
			strings = "NONE",
			variables = "NONE",
		},
		integrations = {
			treesitter = true,
			native_lsp = {
				enabled = true,
				virtual_text = {
					errors = "italic",
					hints = "italic",
					warnings = "italic",
					information = "italic",
				},
				underlines = {
					errors = "underline",
					hints = "underline",
					warnings = "underline",
					information = "underline",
				}
			},
			lsp_trouble = false,
			lsp_saga = false,
			gitgutter = false,
			gitsigns = false,
			telescope = false,
			nvimtree = {
				enabled = false,
				show_root = false,
			},
			which_key = false,
			indent_blankline = {
				enabled = false,
				colored_indent_levels = false,
			},
			dashboard = false,
			neogit = false,
			vim_sneak = false,
			fern = false,
			barbar = false,
			bufferline = false,
			markdown = false,
			lightspeed = false,
			ts_rainbow = false,
			hop = false,
		}
	}
)
EOF

After setting things up, you can load katppuccino like so:

" Vim Script
colorscheme katppuccino
-- Lua
vim.cmd[[colorscheme katppuccino]]

Passing katppuccino to the colorscheme command will pick the colorscheme in the config. Optionally, you could pass one by its code name (e.g. colorscheme neon_latte).

For instructions on how to configure the plugin, check out the configuration section.

Updating

This depends on your plugin manager. If, for example, you are using Packer.nvim, you can update it with this command:

:PackerUpdate

πŸ€– Usage

Commands

The provides commands that follows the camel casing naming convention and have the CP prefix so that it's easy to remember that they are part of Katppuccino.nvim:

  • :CPClear clear all highlight groups.
  • :colorscheme <colorscheme_name> load a colorscheme, not necessarily a katppuccino one. (Note: this is a built-in NVim command).

API

The API allows you fetch data from katppuccino. It can be required as a Lua module:

local cp_api = require("katppuccino.api.<module>")

Modules

  • colors
cp_api.get_colors(<colorscheme>)

Gets the colors from <colorscheme>. Returns two values: the first one is a table with a status field (for the exit status) and a msg field with an error message in case status is false (error), and the second value is a table with the colors. If it fails, it will return the colors from dark_katppuccino.

🐬 Configuration

Although settings already have self-explanatory names, here is where you can find info about each one of them and their classifications!

General

This settings are unrelated to any group and are independent.

  • colorscheme: (String) code name of the color-scheme to be used. All of them can be found in the section below.
  • transparency: (Boolean) if true, disables setting the background color.
  • term_colors: (Boolean) if true, sets terminal colors (e.g. g:terminal_color_0).

Styles

Handles the style of general hi groups (see :h highlight-args):

  • comments: (String) changed the style of the comments.
  • functions: (String) changed the style of the functions.
  • keywords: (String) changed the style of the keywords.
  • strings: (String) changed the style of the strings.
  • variables: (String) changed the style of the variables.

Integrations

These integrations allow katppuccino to set the theme of various plugins/stuff. To enable an integration you just need to set it to true, however, there are some special integrations...

If you'd like to know which highlight groups are being affected by katppuccino, checkout this directory: lua/katppuccino/core/integrations/.

Special Integrations

  • Native Nvim LSP: setting enabled to true enables this integration. 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)).
  • Lualine: use this to set it up (Note: katppuccino is the only valid theme name. It will pick the one set in your config):
require('lualine').setup {
  options = {
    theme = "katppuccino"
	-- ... the rest of your lualine config
  }
}
  • Lightline: use this to set it up (Note: katppuccino is the only valid colorscheme name. It will pick the one set in your config):
let g:lightline = {'colorscheme': 'katppuccino'}
  • Kitty: Copy and paste the file corresponding to theme you want to use from this directory on your Kitty config.
  • Alacritty: Copy and paste the file corresponding to theme you want to use from this directory on your Alacritty config.
  • Tmux: Follow the instructions here
  • Indent-blankline.nvim: setting enabled to true enables this integration. colored_indent_levels enables char highlights per indent level. Follow the instructions here to set the latter up.
  • NvimTree: setting enabled to true enables this integration:
integration = {
  nvimtree = {
    enabled = true,
    show_root = true, -- makes the root folder not transparent
  }
}

List of colorschemes

Colorschemes Code Names
Dark katppuccino dark_katppuccino
Neon Latte neon_latte
Soft Manilo soft_manilo
Light Melya light_melya

Overwriting colors & hi groups

Both colors and highlight groups can be overwritten like so:

katppuccino.remap({<colors>},{<hi_groups>})

Since you want to overwrite hi groups, then it's likely that you'll want to use the API to get the colors from x colorscheme as well:

local err, colors = cp_api.get_colors("neon_latte")

Here is an example using the API to overwrite the color green and change the style of the comments:

local cp_api = require("katppuccino.api.colors")
local err, colors = cp_api.get_colors("neon_latte")

if err.status then -- good
	katppuccino.remap({
		green = "#ffffff"
	},
	{
		Comment = { fg = colors.comment, style = "bold" }, -- any comment
	})
end
  • For colorschemes: all editable fields are the same as the ones mentioned in any of the colorschemes found at: lua/katppuccino/color_schemes. You could also use one as a template, if you will.
  • For highlight groups: all the highlight groups have three editable fields: fg for the foreground, bg for the background and style for the style.

Hooks

Use them to execute code at certain events [described by their names]. These are the ones available:

Function Description
before_loading() Before loading a colorscheme
after_loading() After loading a colorscheme

They can be used like so:

local katppuccino = require("katppuccino")

katppuccino.before_loading = function ()
	print("I ran before setting a colorscheme!")
end

πŸ™‹ FAQ

  • Q: "How can I view the doc from NeoVim?" A: Use :help Katppuccino.nvim

  • Q: "Why are the colorschemes named like that? Do they follow any convention(s)?" A: A colorscheme's name is constructed by two words: the first one is a word that represents the tonalities in the colors used and the second one is the name of a coffee drink from this list.

πŸ‘ Contribute

See CONTRIBUTING.md.

πŸ’­ Inspirations

The following projects inspired the creation of Katppuccino.nvim. If possible, go check them out to see why they are so amazing :]

  • folke/tokyonight.nvim: A clean, dark Neovim theme written in Lua, with support for lsp, treesitter and lots of plugins. Includes additional themes for Kitty, Alacritty, iTerm and Fish.
  • norcalli/nvim-base16.lua: Programmatic lua library for setting base16 themes in Neovim.

πŸ“œ License

Katppuccino.nvim is released under the GPL v3.0 license. It grants open-source permissions for users including:

  • The right to download and run the software freely
  • The right to make changes to the software as desired
  • The right to redistribute copies of the software
  • The right to modify and distribute copies of new versions of the software

For more convoluted language, see the LICENSE file.

πŸ“‹ TO-DO

High Priority

  • Add Aquamarine FrappΓ©

Low Priority

  • Finish DOC
  • Add more integrations

Enjoy!