6 releases
0.2.0 | Jul 26, 2024 |
---|---|
0.1.4 | Jul 12, 2024 |
0.1.2 | Jun 12, 2024 |
0.1.0 | May 22, 2024 |
#411 in Development tools
80KB
1K
SLoC
Create (Neo)vim color schemes by defining colors and their transformations. This uses the Oklab color space to make the perceptual effects of transformations predictable.
A hosted version is available here.
Feature summary
- Color schemes are compiled to (Neo)vim configurations with no startup overhead
- Specify colors using lightness, chromacity and hue in the Oklch color space
- If you're creating a dark theme, you get the inverse light theme for free, and vice versa
- A curated set of opinionated default Neovim highlight groups is provided, requiring only a few theme definitions to get a consistent color scheme
- Theme colors definitions refer to colors with optional transformations (such as lightness and chromacity)
- Override or add any highlight group
- Vim is supported as a secondary target
Examples
Light | Dark |
---|---|
highlow: a color scheme with high contrast between background and foreground, low color saturation, and low contrast between foreground elements.
Light | Dark |
---|---|
verf: a colorful color scheme.
Light | Dark |
---|---|
twocolor: a color scheme using (mostly) just two hues.
Light | Dark |
---|---|
grayscale: a color scheme, sans color.
These screenshots were generated using Termsnap.
Getting started
To run the CLI version, run
$ cargo install hi-nvim-rs
$ hi-nvim-rs --help
$ hi-nvim-rs ./path/to/colorscheme.toml > ~/.config/nvim/colors/a-colorscheme-name.vim
Color scheme configurations
In hi.nvim.rs color scheme configurations, you define the hues you want to use
in your color scheme, as well as the default lightness and chromacity of
various color groups (background and foreground colors, for example). You then
derive the desired theme elements of your color scheme by referring to these
hues with optional color transformations: lightening/darkening,
saturating/desaturating and color mixing. Neovim highlight group colors refer
to these theme elements. One theme element can be common to various highlight
groups, such as various types of seperators in Neovim referring to a single
ui.bg_border
theme element.
See highlow for a color scheme configuration with an inline explanation of the various configuration settings.
Default highlight groups
hi.nvim.rs provides opinionated default highlight groups for Neovim and some
plugins. These are defined in
default_highlights.toml. When creating your color
schemes you can choose to base your configuration on these defaults, optionally
overriding some of them, or you can completely ignore them. If you use them,
make sure you define all the theme elements referenced by the default
highlights. A good starting point is to take a look at the [themes]
section
in highlow.
Dependencies
~4MB
~75K SLoC