Skip to content

b0o/lavi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

70 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Lavi πŸͺ»

A soft and sweet colorscheme

Screenshot

Installation

Neovim

With lazy.nvim:

{
  'b0o/lavi',
  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
];

Configuration

Lavi can be configured by setting vim.g.lavi_config before loading the colorscheme:

vim.g.lavi_config = {
  transparent = false, -- set to true for a transparent background
}
vim.cmd.colorscheme 'lavi'

With lazy.nvim:

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

Options

Option Type Default Description
transparent boolean false Transparent background

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",
    ]
bat

bat: A cat clone with syntax highlighting and Git integration

  1. Copy contrib/textmate/lavi.tmTheme to ~/.config/bat/themes/lavi.tmTheme
  2. Rebuild bat's theme cache:
    bat cache --build
  3. Use the theme:
    bat --theme=lavi file.rs
    Or set it permanently via BAT_THEME=lavi in your environment, or add --theme="lavi" to ~/.config/bat/config.
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
TextMate Theme (bat, Sublime Text, TextMate, VS Code)

Lavi provides a .tmTheme file at contrib/textmate/lavi.tmTheme that works with any application supporting the TextMate theme format. This includes:

  • bat β€” see the bat section above for specific instructions
  • Sublime Text β€” copy lavi.tmTheme to your Packages/User/ directory, then select it from Preferences β†’ Color Scheme
  • TextMate β€” double-click lavi.tmTheme to install, or copy it to ~/Library/Application Support/TextMate/Themes/
  • VS Code β€” tmTheme files can be used via the TmTheme Editor extension or as a base for a color theme extension
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";

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
    bat.enable = true;       # Installs tmTheme and sets bat theme to Lavi
    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
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

Contributors

Languages