PHANTOM
🇮🇳 IN
Skip to content
/ lavi Public

🪻 A soft and sweet colorscheme for Neovim & more

License

Notifications You must be signed in to change notification settings

b0o/lavi

Repository files navigation

Lavi 🪻

A soft and sweet colorscheme

Screenshot

Installation

Neovim

With lazy.nvim:

{
  'b0o/lavi.nvim',
  lazy = false,
  priority = 1000,
  config = function()
    vim.cmd.colorscheme 'lavi'
  end,
},

With Nix flakes (see Nix section for more options):

programs.neovim.plugins = [
  inputs.lavi.packages.${pkgs.system}.lavi-nvim
];

Other Programs

Alacritty

Alacritty: Cross-platform, GPU-accelerated terminal emulator

  1. Copy contrib/alacritty/lavi.toml to ~/.config/alacritty/lavi.toml
  2. Import into your Alacritty config:
    general.import = [
      "~/.config/alacritty/lavi.toml",
    ]
Bottom

Bottom: Graphical process/system monitor for the terminal

  1. Copy the contents of contrib/bottom/lavi.toml into your ~/.config/bottom/bottom.toml
Btop

Btop: Resource monitor with a customizable interface

  1. Copy contrib/btop/lavi.theme to ~/.config/btop/themes/lavi.theme
  2. Set color_theme = "lavi" in your ~/.config/btop/btop.conf or select it from the options menu
Clipse

Clipse: Configurable TUI clipboard manager for Unix

  1. Copy contrib/clipse/lavi.json to ~/.config/clipse/custom_theme.json
  2. Set "themeFile": "custom_theme.json" in your ~/.config/clipse/config.json
Dank Material Shell

Dank Material Shell: Desktop shell for wayland compositors

  1. Copy contrib/dank-material-shell/lavi.json to ~/.config/DankMaterialShell/themes/lavi.json
  2. In Settings → Theme & Colors, select Custom and set the theme file path to the copied file
  3. Alternatively, set "currentThemeName": "custom" and "customThemeFile": "/path/to/lavi.json" in ~/.config/DankMaterialShell/settings.json

Nix/Home-Manager:

Requires the DMS home-manager module from the DMS flake:

# flake.nix inputs:
inputs.dms.url = "github:AvengeMedia/DankMaterialShell/stable";

# home-manager config:
imports = [
  inputs.dms.homeModules.dank-material-shell
  inputs.lavi.homeManagerModules.lavi
];

lavi.dank-material-shell.enable = true;

This writes the theme file to ~/.config/DankMaterialShell/themes/lavi.json and sets programs.dank-material-shell.settings to use it as the active custom theme.

Foot

Foot: Fast, lightweight Wayland terminal emulator

  1. Copy the contents of contrib/foot/lavi.ini into your ~/.config/foot/foot.ini
Ghostty

Ghostty: Fast, native terminal emulator with platform-native UI

  1. Copy contrib/ghostty/lavi.conf to ~/.config/ghostty/themes/lavi.conf
  2. Set theme = lavi.conf in your ~/.config/ghostty/config
Kitty

Kitty: GPU-accelerated terminal emulator

  1. Copy the contents of contrib/kitty/lavi.conf into your ~/.config/kitty/themes/lavi.conf
  2. Run kitty +kitten themes --reload-in=all lavi to set the theme
Opencode

Opencode: TUI for coding with LLMs from the terminal

  1. Copy contrib/opencode/lavi.json to ~/.config/opencode/themes/lavi.json
  2. Set { "theme": "lavi" } in your ~/.config/opencode/opencode.jsonc or select it from the UI theme picker
Wezterm

Wezterm: GPU-accelerated terminal emulator and multiplexer

  1. Copy contrib/wezterm/lavi.toml to ~/.config/wezterm/colors/lavi.toml
  2. Set config.color_scheme = "lavi" in your Wezterm config
Windows Terminal

Windows Terminal: Modern terminal application for Windows

  1. Open the Windows Terminal settings (ctrl+,)
  2. Select Open JSON file at the bottom left corner (ctrl+shift+,)
  3. Copy the contents of contrib/windows_terminal/lavi.json inside of the schemes array
    {
      "schemes": [
        // paste the contents of lavi.json here
      ],
    }
  4. Save and exit
  5. In the Settings panel under Profiles, select the profile you want to use the theme in, then select Appearance and choose lavi from the Color scheme dropdown
Zellij

Zellij: Terminal workspace and multiplexer

  1. Copy contrib/zellij/lavi.kdl to ~/.config/zellij/themes/lavi.kdl
  2. Set theme "lavi" in your ~/.config/zellij/config.kdl

Nix

Lavi provides a Nix flake with multiple outputs for flexible integration.

Flake Outputs

Output Description
packages.<system>.lavi-nvim Minimal Neovim plugin (runtime only, no lush dependency)
packages.<system>.lavi-nvim-dev Full Neovim plugin with lush sources for customization
packages.<system>.lavi-themes All theme files from contrib/
lib.themes.<app> Raw theme content as strings (e.g., lib.themes.ghostty)
lib.base16 Base16 color scheme for Stylix integration
homeManagerModules.lavi Home-manager module with per-app options

Home-Manager Module

Add to your flake inputs:

inputs.lavi.url = "github:b0o/lavi.nvim";

Import and configure:

{ inputs, pkgs, ... }:
{
  imports = [ inputs.lavi.homeManagerModules.lavi ];

  lavi = {
    neovim.enable = true;    # Adds lavi-nvim to programs.neovim.plugins
    ghostty.enable = true;   # Configures programs.ghostty.themes.lavi
    alacritty.enable = true; # Merges colors into programs.alacritty.settings
    kitty.enable = true;     # Appends to programs.kitty.extraConfig
    foot.enable = true;      # Merges into programs.foot.settings
    btop.enable = true;      # Writes theme file and sets color_theme
    bottom.enable = true;    # Merges styles into programs.bottom.settings
    clipse.enable = true;    # Merges theme into services.clipse.theme
    dank-material-shell.enable = true; # Configures programs.dank-material-shell custom theme
    opencode.enable = true;  # Configures programs.opencode.themes.lavi
    wezterm.enable = true;   # Writes theme to wezterm/colors/
    zellij.enable = true;    # Configures programs.zellij.themes.lavi
  };
}

Stylix Integration

Lavi provides a base16 color scheme for Stylix:

{ inputs, ... }:
{
  stylix.base16Scheme = inputs.lavi.lib.base16;
}

This applies the Lavi color palette across all Stylix-supported programs automatically.

Manual Installation

For users who manage their own config files:

# Symlink theme files
home.file.".config/ghostty/themes/lavi.conf".source =
  "${inputs.lavi.packages.${pkgs.system}.lavi-themes}/ghostty/lavi.conf";

# Or use raw content
xdg.configFile."ghostty/themes/lavi.conf".text = inputs.lavi.lib.themes.ghostty;

Development Shell

For contributing or modifying themes:

nix develop github:b0o/lavi.nvim
lavi-build  # Generate themes and format

Verifying Themes

To verify committed theme files match what would be generated:

nix flake check

This runs automatically in CI. On pushes to main, themes are auto-regenerated and committed if needed. PRs will fail if themes are out of date.

Contributing

This colorscheme is built with Lush.nvim, ensure you have it installed.

Themes are generated from the palette and highlight definitions in lua/lush_theme/lavi/. The files in contrib/, nix/themes/, colors/, and lua/lavi/ are automatically generated - don't edit them directly.

Re-generate themes and format with:

License

MIT License

About

🪻 A soft and sweet colorscheme for Neovim & more

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 2

  •  
  •  

Languages