nvim-mini
mini.colors
Lua

Tweak and save any color scheme. Part of 'mini.nvim' library.

Last updated Jun 25, 2026
36
Stars
1
Forks
0
Issues
0
Stars/day
Attention Score
36
Language breakdown
Lua 100.0%
โ–ธ Files click to expand
README

mini.colors

Tweak and save any color scheme

See more details in Features and Documentation.


[!NOTE]
This was previously hosted at a personal echasnovski GitHub account. It was transferred to a dedicated organization to improve long term project stability. See more details here.

โฆฟ This is a part of mini.nvim library. Please use this link if you want to mention this module.

โฆฟ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'.

โฆฟ See whole library documentation to learn about general design principles, disable/configuration recipes, and more.

โฆฟ See MiniMax for a full config example that uses this module.


If you want to help this project grow but don't know where to start, check out contributing guides of 'mini.nvim' or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.

Demo

https://user-images.githubusercontent.com/24854248/232283566-9a51fa55-d20a-4650-8205-763b55e21366.mp4

Features

  • Create colorscheme object (see :h MiniColors-colorscheme): either manually (:h MiniColors.ascolorscheme()) or by querying present color schemes (including currently active one; see :h MiniColors.getcolorscheme()).
  • Infer data about color scheme and/or modify based on it:
- Add transparency by removing background color (requires transparency in terminal emulator). - Infer cterm attributes based on gui colors making it compatible with 'notermguicolors'. - Resolve highlight group links. - Compress by removing redundant highlight groups. - Extract palette of used colors and/or infer terminal colors based on it.
  • Modify colors to better fit your taste and/or goals:
- Apply any function to color hex string. - Update channels (like lightness, saturation, hue, temperature, red, green, blue, etc.). Use either own function or one of the implemented methods: - Add value to channel or multiply it by coefficient. Like "add 10 to saturation of every color" or "multiply saturation by 2" to make colors more saturated (less gray). - Invert. Like "invert lightness" to convert between dark/light theme. - Set to one or more values (picks closest to current one). Like "set to one or two hues" to make mono- or dichromatic color scheme. - Repel from certain source(s) with stronger effect for closer values. Like "repel from hue 30" to remove red color from color scheme. Repel hue (how much is removed) is configurable. - Simulate color vision deficiency.
  • Once color scheme is ready, either apply it to see effects right away or write it into a Lua file as a fully functioning separate color scheme.
  • Experiment interactively with a feedback.
  • Animate transition between color schemes either with MiniColors.animate() or with :Colorscheme user command.
  • Convert within supported color spaces (MiniColors.convert()):
- Hex string. - 8-bit number (terminal colors). - RGB. - Oklab, Oklch, Okhsl (https://bottosson.github.io/posts/oklab/).

Tweak quick start

  • Execute :lua require('mini.colors').interactive().
  • Experiment by writing calls to exposed color scheme methods and applying them with <M-a>. For more information, see :h MiniColors-colorscheme-methods and :h MiniColors-recipes.
  • If you are happy with result, write color scheme with <M-w>. If not, reset to initial color scheme with <M-r>.
  • If only some highlight groups can be made better, adjust them manually inside written color scheme file.

Installation

This plugin can be installed as part of 'mini.nvim' library (recommended) or as a standalone Git repository.

There are two branches to install from:

  • main (default, recommended) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).
  • stable will be updated only upon releases with code tested during public beta-testing phase in main branch.
Here are code snippets for some common installation methods (use only one):

(Recommended) With vim.pack (on Neovim 0.12 and newer)

Full library

Follow 'mini.nvim' installation.

Standalone plugin

Main branch:

vim.pack.add({ 'https://github.com/nvim-mini/mini.colors' })

Stable branch:

vim.pack.add({
  { src = 'https://github.com/nvim-mini/mini.colors', version = 'stable' },
})

With mini.deps (before Neovim 0.12)

Full library

Follow recommended 'mini.deps' installation.

Standalone plugin:

Main branch:

add('nvim-mini/mini.colors')

Stable branch:

add({ source = 'nvim-mini/mini.colors', checkout = 'stable' })

With folke/lazy.nvim

Full library

Follow 'mini.nvim' installation.

Standalone plugin

Main branch:

{ 'nvim-mini/mini.colors', version = false },

Stable branch:

{ 'nvim-mini/mini.colors', version = '*' },

Important: no need to call require('mini.colors').setup(), but it can be done to improve usability.

Note: if you are on Windows, there might be problems with too long file paths (like error: unable to create file <some file name>: Filename too long). Try doing one of the following:

  • Enable corresponding git global config value: git config --system core.longpaths true. Then try to reinstall.
  • Install plugin in other place with shorter path.

Default config

-- No need to copy this inside setup(). Will be used automatically.
{}

Similar plugins

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท nvim-mini/mini.colors ยท Updated daily from GitHub