Skip to content

fallwith/koda.nvim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

173 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Koda

Code's quiet companion

A minimalist theme for Neovim, written in Lua

koda

Previews

Dark
Light
Moss
Glade

Installation

Using lazy.nvim:

{
  "oskarnurm/koda.nvim",
  lazy = false, -- make sure we load this during startup if it is your main colorscheme
  priority = 1000, -- make sure to load this before all the other start plugins
  config = function()
    -- require("koda").setup({ transparent = true })
    vim.cmd("colorscheme koda")
  end,
}

Using vim.pack:

vim.pack.add({
  "https://github.com/oskarnurm/koda.nvim",
})
-- require("koda").setup({ transparent = true })
vim.cmd("colorscheme koda")

Usage

By default, koda will automatically switch between dark and light variants based on your vim.o.background setting.

vimd.cmd("colorscheme koda") -- auto-switches based on background
" Explicitly set a variant: 
colorscheme koda-dark
colorscheme koda-light
colorscheme koda-moss
colorscheme koda-glade

Default Configuration

Important

Configure setup BEFORE calling vim.cmd("colorscheme koda").

require("koda").setup({
    transparent = false, -- enable for transparent backgrounds

    -- Automatically enable highlights only for plugins installed by your plugin manager
    -- Currently only supports `lazy.nvim`, `mini.deps` and `vim.pack`
    auto = true,  -- disable to load ALL available plugin highlights

    cache = true, -- caches the theme for better performance

    -- Style to be applied to different syntax groups
    -- Common use case would be to set either `italic = true` or `bold = true` for a desired group
    -- See `:help nvim_set_hl` for more valid values
    styles = {
       functions = { bold = true },
       keywords  = {},
       comments  = {},
       strings   = {},
       constants = {}, -- includes numbers, booleans
    },

    -- Override colors for the active variant
    -- Available keys (e.g., 'func') can be found in lua/koda/palette/
    colors = {
      -- func = "#4078F2",
      -- keyword = "#A627A4",
    },

    -- You can modify or extend highlight groups using the `on_highlights` configuration option
    -- Any changes made take effect when highlights are applied
    on_highlights = function(hl, c)
      -- hl.LineNr = { fg = c.info } -- change a specific highlight to use a different palette color
      -- hl.Comment = { fg = c.emphasis, italic = true } -- modify a syntax group (add bold, italic, etc)
      -- hl.RainbowDelimiterRed = { fg = "#fb2b2b" } -- add a custom highlight group for another plugin
    end,
})

API

Koda exposes a few utility functions to allow users to integrate the theme with other parts of their configuration.

local koda = require("koda")
local colors = koda.get_palette("dark") -- returns the colors for the given theme with user-overrides applied

some_plugin.error = koda.blend(colors.danger, colors.bg, 0.3) -- blends two colors together. Useful for creating custom shades that match the theme

You can also manually clear Koda's cache and reload the highlights by running:

:KodaFetch

Supported Plugins

Language support

Most languages have sensible defaults thanks to Neovim's built-in queries, so I've opted not to add anything language-specific to keep the footprint smaller. Feel free to open an issue.

Extras

Extra color configs for WezTerm, Ghostty, Lazygit, fzf and others can be found in extras. To use them, refer to their respective documentation.

About

Code's quiet companion. A minimalist theme for Neovim, written in Lua.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Lua 97.1%
  • Shell 2.9%