With this tool you can create Neovim color schemes by defining colors and their transformations in a perceptual color space: Oklab.

Change the configuration below and hit the "Compile" button. Because the color scheme is compiled beforehand, Neovim only needs to load the highlights at startup.

A CLI tool for local compilation is available: see the repository. Vim is supported as a secondary target.

Light

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//! Calculate A+B.
//!
//! From: https://rosettacode.org/wiki/A+B
use std::io;

fn main() {
    let mut line = String::new();
    io::stdin().read_line(&mut line).expect("stdin");

    let mut i: i64 = 0;
    for word in line.split_whitespace() {
        i += word
            .parse::<i64>()
            .expect("interpret input as numbers");
    }
    println!("{}", i);
}
example/src/main.rs[rust]
:colorscheme example

Dark

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//! Calculate A+B.
//!
//! From: https://rosettacode.org/wiki/A+B
use std::io;

fn main() {
    let mut line = String::new();
    io::stdin().read_line(&mut line).expect("stdin");

    let mut i: i64 = 0;
    for word in line.split_whitespace() {
        i += word
            .parse::<i64>()
            .expect("interpret input as numbers");
    }
    println!("{}", i);
}
example/src/main.rs[rust]
:colorscheme example

Configure

Install

Create a file called highlow.vim in ~/.config/nvim/colors with the following content. This is where Neovim looks for color schemes.