Skip to content

pabloagn/kanso.nvim

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

71 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌊 Kansō.nvim 🌊

Kansō is an elegant evolution of the original Kanagawa theme.
A dark theme that invites focus, not attention.

Neovim W3C


✨ Features

  • 🌈 Extensive support for TreeSitter syntax highlighting
  • πŸ”Œ Compatible with popular plugins out of the box
  • ⚑ Compilation to lua byte code for fast startup times
  • 🎨 Four beautiful theme variants to match your mood and environment
  • πŸ”† Saturated mode for enhanced syntax highlighting visibility
  • πŸ‘οΈ WCAG 2.1 AA compliant

πŸ“¦ Installation

Download with your favorite package manager.

-- Using Lazy
{
  "webhooked/kanso.nvim",
  lazy = false,
  priority = 1000,
}

-- Using Packer
use "webhooked/kanso.nvim"

πŸ“‹ Requirements

  • Terminal with truecolor support
  • Terminal with undercurl support (optional)

πŸš€ Usage

As simple as writing:

colorscheme kanso

Or in Lua:

vim.cmd("colorscheme kanso")

βš™οΈ Configuration

There is no need to call setup if you are ok with the defaults.

-- Default options:
require('kanso').setup({
    bold = true,                 -- enable bold fonts
    italics = true,             -- enable italics
    compile = false,             -- enable compiling the colorscheme
    undercurl = true,            -- enable undercurls
    commentStyle = { italic = true },
    functionStyle = {},
    keywordStyle = { italic = true},
    statementStyle = {},
    typeStyle = {},
    transparent = false,         -- do not set background color
    dimInactive = false,         -- dim inactive window `:h hl-NormalNC`
    terminalColors = true,       -- define vim.g.terminal_color_{0,17}
    colors = {                   -- add/modify theme and palette colors
        palette = {},
        theme = { zen = {}, pearl = {}, ink = {}, all = {} },
    },
    overrides = function(colors) -- add/modify highlights
        return {}
    end,
    background = {               -- map the value of 'background' option to a theme
        dark = "ink",           -- try "zen", "mist" or "pearl" !
        light = "ink"           -- try "zen", "mist" or "pearl" !
    },
    foreground = "default",      -- "default" or "saturated" (can also be a table like background)
})

-- setup must be called before loading
vim.cmd("colorscheme kanso")
πŸ’‘ Important Notes

Compilation: If you enable compilation, make sure to run :KansoCompile command every time you make changes to your config.

" 1. Modify your config
" 2. Restart nvim
" 3. Run this command:
:KansoCompile

Options: Kansō adjusts to the value of some options. Make sure that the options 'laststatus' and 'cmdheight' are set before calling setup.

🎨 Themes

Kansō comes in four beautiful variants:

  • Zen (Dark)
  • Ink (Dark)
  • Mist (Dark)
  • Pearl (Light)

✧ Zen ✧

Deep & rich dark theme for focused coding.



✧ Ink ✧

Balanced theme with elegant colors.



✧ Mist ✧

Soft & muted dark theme with gentle colors.



✧ Pearl ✧

Light theme for daytime productivity.


πŸ”„ Switching Between Themes

Themes can be changed in three ways:

  1. Setting config.theme to the desired theme.
  2. Using the background option: Any change to the value of vim.o.background will select the theme mapped by config.background.
  3. Loading the colorscheme directly with:
vim.cmd("colorscheme kanso-zen")
vim.cmd("colorscheme kanso-ink")
vim.cmd("colorscheme kanso-mist")
vim.cmd("colorscheme kanso-pearl")

or

require("kanso").load("zen")

🌟 Foreground Saturation

Kansō now supports a foreground saturation option that enhances the saturation of syntax highlighting colors while keeping the same background colors. This is useful for improving visibility in certain lighting conditions or personal preference.

πŸ”† Using Saturated Mode

The foreground option can be configured per background mode:

require('kanso').setup({
    foreground = {
        dark = "default",    -- Use default colors in dark mode
        light = "saturated"   -- Use higher saturation in light mode
    },
})

When set to "saturated", syntax highlighting colors will have increased saturation making them stand out more against the background:

  • Zen, Ink, and Mist themes: 20% more vibrant colors
  • Pearl theme: 40% more vibrant colors

This is particularly useful:

  • In bright environments where you need more color distinction
  • For users who prefer more vibrant syntax highlighting
  • When using the light themes where increased saturation can be beneficial

The saturation adjustment only affects syntax highlighting colors (strings, keywords, functions, etc.) and does not change UI elements or background colors.

🧰 Customization

In Kansō, there are two kinds of colors: PaletteColors and ThemeColors; PaletteColors are defined directly as RGB Hex strings, and have arbitrary names that recall their actual color. Conversely, ThemeColors are named and grouped semantically on the basis of their actual function.

In short, a palette defines all the available colors, while a theme maps the PaletteColors to specific ThemeColors and the same palette color may be assigned to multiple theme colors.

πŸ“ Color Customization Example

You can change both theme or palette colors using config.colors. All the palette color names can be found here, while their usage by each theme can be found here.

require('kanso').setup({
    ...,
    colors = {
        palette = {
            -- change all usages of these colors
            zen0 = "#000000",
            fujiWhite = "#FFFFFF",
        },
        theme = {
            -- change specific usages for a certain theme, or for all of them
            zen = {
                ui = {
                    float = {
                        bg = "none",
                    },
                },
            },
            ink = {
                syn = {
                    parameter = "yellow",
                },
            },
            all = {
                ui = {
                    cursor_line_nr_active_foreground = "#C4746E"
                }
            }
        }
    },
    ...
})
πŸ”§ Highlight Group Overrides

You can also conveniently add/modify any hlgroups using the config.overrides option, allowing you to customize the looks of specific built-in elements, or any other external plugins that provides hlgroups. (See :help highlight for more information on hlgroups.) Supported keywords are the same for :h nvim_set_hl {val} parameter.

require('kanso').setup({
    ...,
    overrides = function(colors)
        return {
            -- Assign a static color to strings
            String = { fg = colors.palette.carpYellow, italic = config.italics },
            -- theme colors will update dynamically when you change theme!
            SomePluginHl = { fg = colors.theme.syn.type, bold = true },
        }
    end,
    ...
})

πŸ”„ Integration

Get palette and theme colors

-- Get the colors for the current theme
local colors = require("kanso.colors").setup()
local palette_colors = colors.palette
local theme_colors = colors.theme

-- Get the colors for a specific theme
local zen_colors = require("kanso.colors").setup({ theme = 'zen' })

🧩 Extras

πŸ’Ž Credits

The theme is inspired by the Kanagawa theme.

  • rebelot for the original Kanagawa Neovim theme

πŸ™ Acknowledgements

About

Fork of Kanso.nvim themefor Rhodium system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 98.5%
  • C 1.3%
  • Vim Script 0.2%