cwal.nvim

August 15, 2026 ยท View on GitHub

cwal.nvim is a dynamic Neovim colorscheme that reads your generated cwal palette and applies it across core UI, syntax, Treesitter, diagnostics, completion popups, Bufferline, and Lualine.

For now, only dark mode is supported.

๐Ÿ–ผ Preview

โœจ Features

  • Uses your live cwal colors from colors-nvim.lua
  • Automatically reloads highlights when your cwal.ini changes
  • Extensive highlight coverage for:
    • Core editor/UI groups
    • Vim syntax groups
    • Treesitter and semantic token groups
    • LSP diagnostics (Diagnostic* + legacy LspDiagnostics* links)
    • Popup/completion UI (Pmenu*, Cmp*, BlinkCmp*)
    • Bufferline (BufferLine*)
    • Lualine theme (theme = "cwal")

๐Ÿ“ฆ Requirements

  • Neovim 0.10+
  • cwal
  • A working cwal setup that generates:
    • ~/.config/cwal/cwal.ini
    • colors-nvim.lua inside your configured out_dir

๐Ÿ”ง Installing cwal

Install from the AUR:

paru -S cwal-git

or

yay -S cwal-git

๐ŸŽจ Color Source

cwal.nvim reads out_dir from your cwal.ini, then loads:

<out_dir>/colors-nvim.lua

๐Ÿš€ Installation

lazy.nvim

{
  "nitinbhat972/cwal.nvim",
  priority = 1000,
  config = function()
    vim.cmd.colorscheme("cwal")
  end,
}

vim.pack (Neovim 0.12+)

vim.pack.add({
  { src = "https://github.com/nitinbhat972/cwal.nvim" },
})

vim.cmd.colorscheme("cwal")

โš™๏ธ Usage

Set the colorscheme:

:colorscheme cwal

or in Lua:

vim.cmd.colorscheme("cwal")

๐Ÿ”Œ Lualine Integration

require("lualine").setup({
  options = {
    theme = "cwal",
  },
})

The colorscheme defines most highlight groups, ensuring compatibility with the majority of plugins.
Note: Bufferline highlight groups are not refreshed automatically on colorscheme change and may require a Neovim restart.

๐Ÿ”„ How Reload Works

cwal.nvim watches:

<out_dir>/colors-nvim.lua

On change, it:

  1. Reloads palette values from colors-nvim.lua
  2. Reapplies all highlight groups
  3. Reloads Lualine (if its theme is set to "cwal")
  4. Triggers the CwalReload User event

๐Ÿ”” Events

You can hook into the reload process using the CwalReload User event. This is useful for refreshing other plugins or custom highlights that depend on the palette.

vim.api.nvim_create_autocmd("User", {
  pattern = "CwalReload",
  callback = function()
    -- Your custom logic here, e.g., refreshing a custom statusline or plugin
    print("Cwal colors have been reloaded!")
  end,
})

๐Ÿ›  Troubleshooting

Color file not found: .../colors-nvim.lua

  • Check out_dir in your cwal.ini
  • Confirm <out_dir>/colors-nvim.lua exists

๐Ÿ“ Notes

  • No user options are required at the moment.
  • The plugin is intentionally palette-driven โ€” regenerate your cwal colors and Neovim follows.

๐Ÿ“„ License

Licensed under GNU GPL v3.0 โ€” always free and open-source.

Star the project on GitHub if you find it useful!