Kimbox is a dark colorscheme for Neovim with builtin treesitter support. It is my variation of the original Kimbie Dark
colorscheme.
The colors may look duller in the images provided, though they will not be whenever the colorscheme is actually loaded. I've noticed that many other colorschemes seem brighter than what their images show.
Installation
- vim-plug
Plug 'lmburns/kimbox'
colorscheme kimbox
- Packer
-- require("kimbox").load() == colorscheme kimbox
use({ "lmburns/kimbox", config = [[require("kimbox").load()]] })
-- or
use({
"lmburns/kimbox",
config = function()
require("kimbox").setup({
-- options
})
require("kimbox").load()
end
})
- Bufferline
-- Colors can be accessed with
local c = require("kimbox.bufferline").colors()
-- Theme itself
local t = require("kimbox.bufferline").theme()
require("bufferline").setup(
-- configuration stuff
highlights = require("kimbox.bufferline").theme()
)
- Lualine
-- Colors can be accessed with
local c = require("kimbox.lualine").colors()
-- Theme itself
local t = require("kimbox.lualine").theme()
require("lualine").setup(
-- configuration stuff
theme = 'kimbox' -- 'auto' works as well
)
Color
#39260E | #291804 | #EF1D55 | #DC3958 | #FF5813 | #FF9500 | #819C3B |
---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
#7EB2B1 | #4C96A8 | #98676A | #A06469 | #7F5D38 | #A89984 | #D9AE80 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Options (Lua)
-- These options can also be set using:
vim.g.kimbox_config = {
-- ...options from above
}
require("kimbox").setup({
-- Main options --
style = "ocean", -- choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light'
-- medium: #231A0C
-- ocean: #221A02
-- medium: #231A0C
-- deep: #0f111B
-- darker:#291804
toggle_style_key = "<Leader>ts",
toggle_style_list = { "medium", "ocean", "vscode", "deep", "darker" }, -- or require("kimbox").bgs_list
-- See below (New Lua Treesitter Highlight Groups) for an explanation
langs08 = true,
-- Used with popup menus (coc.nvim mainly) --
popup = {
background = false, -- use background color for pmenu
},
-- Plugins Related --
diagnostics = {
background = true, -- use background color for virtual text
}
-- General formatting --
allow_bold = true,
allow_italic = false,
allow_underline = false,
allow_undercurl = true,
allow_reverse = false,
transparent = false, -- don't set background
term_colors = true, -- if true enable the terminal
ending_tildes = false, -- show the end-of-buffer tildes
-- Custom Highlights --
colors = {}, -- Override default colors
highlights = {}, -- Override highlight groups
-- Plugins or languages that can be disabled
-- View them with require("kimbox.highlights").{langs,plugins}
disabled = {
langs = {},
plugins = {},
langs08 = {} -- Capture groups only present on nightly release (see below)
},
run_before = nil, -- Run a function before the colorscheme is loaded
run_after = nil -- Run a function after the colorscheme is loaded
})
require("kimbox").load()
Options (vimscript)
" an example
let g:kimbox_config = {
\ 'allow_reverse': v:false,
\ 'popup': {'background': v:false},
\ 'transparent': v:false,
\ 'allow_bold': v:true,
\ 'toggle_style_list': [
\ 'medium',
\ 'ocean',
\ 'vscode',
\ 'deep',
\ 'darker'
\ ],
\ 'toggle_style_key': '<Leader>ts',
\ 'colors': [],
\ 'allow_italic': v:false,
\ 'diagnostics': {'background': v:true},
\ 'ending_tildes': v:false,
\ 'allow_underline': v:false,
\ 'toggle_style_index': 0,
\ 'allow_undercurl': v:false,
\ 'highlights': [],
\ 'style': 'ocean',
\ 'loaded': v:true,
\ 'term_colors': v:true
\ }
colorscheme kimbox
Overriding highlight groups
require("kimbox").setup({
colors = {
bright_orange = "#ff8800", -- define a new color
green = '#00ffaa', -- redefine an existing color
myblue = '#418292'
},
highlights = {
TSKeyword = {fg = '$green'},
TSString = {fg = '$bright_orange', bg = '#00ff00', gui = 'bold'},
TSFunction = {fg = '#0000ff', sp = '$cyan', gui = 'underline,italic'},
["@function.macro.lua"] = {fg = '$myblue', sp = '$cyan', gui = 'underline,italic'}
}
})
New Lua Treesitter Highlight Groups
See :h lua-treesitter-highlight-groups
for a full explanation.
After the commit 030b422d1
, highlight groups were changed in the following pattern:
luaTSFunction
=>@function.lua
helpTSTitle
=>@text.title.help
- etc.
This feature will not yet be enabled by default. If you wish to use this colorscheme and wish to have the exact same colors as the highlight groups that were present before the aforementioned commit, set the configuration feature langs08
to true
in your configuration. This feature will eventually be this colorschemes default settings.
Filetype Support
Treesitter is preferred for most file types (not Zsh). All of the following languages have been manually configured.
Support
Awk
Bash/Dash
C/C++
Clojure
CoffeeScript
Dart
Elixir
Erlang
Go
Haskell
HTML
Javascript
JavascriptReact TypescriptReact
Kotlin
Lua
OCaml
ObjectiveC
PHP
Perl
Python
R
Ruby
Rust
Scala
Sed
Solidity
Swift
Teal
Typescript
TypescriptReact (tsx)
Vimscript
Zig
Zsh
CSS
SCSS
GraphQL
JQ
Help pages (Vim)
Comments
Luap (Lua patterns)
Regex
Latex
Markdown
Matlab
sxhkdrc
CMake
Makefile
Git Commit
Git Config
Git Ignore
DosIni (Ini)
JSON
RON (Rust Object Notation)
TOML
YAML
Plugin Support
- If any plugin is not supported and you would like for it to be, please let me know.
Support
- Aerial
- Ale
- Barbar
- BufferLine
- Cmp
- Coc-Explorer
- Coc.nvim
- Cybu
- Dap-UI
- Dashboard
- Defx
- DiffView
- EasyMotion
- Fern
- Floaterm
- Fzf-Lua
- Git Gutter
- Git Signs
- HlArgs
- Hop
- Incline
- Indent Blankline
- LSP Diagnostics
- LSP Saga
- LSP Trouble
- Lightline
- Lightspeed
- Lualine
- Marks
- Modes
- Neogit
- Neomake
- NerdIcons
- NerdTree
- Nvim-Notify
- Nvim-R
- NvimTree
- Packer
- Sneak
- Startify
- Symbols Outline
- Telescope
- Treesitter
- Treesitter Treehopper
- Treesitter Rainbow
- Treesitter Rainbow 2
- VimWiki
- Vimtex
- Vista.vim
- WhichKey
- dart-vim-plugin
- haskell-vim
- kotlin-vim
- php.vim
- python-syntax
- ron.vim
- rust.vim
- semshi
- swift.vim
- vim-clojure-static
- vim-coffee-script
- vim-elixir
- vim-erlang-runtime
- vim-illuminate
- vim-javascript
- vim-jsx-pretty
- vim-ocaml
- vim-perl
- vim-ruby
- vim-scala
- vim-solidity
- vim-typescript
- yajs
- yats
Name
The name came about because I had originally thought I was going to create a combination of the kimbie dark and gruvbox colorschemes. It's too late to change it now.
Extras
- There is a supplemental TextMate theme in the
extras
directory. This can be used withbat
or SublimeText. - There are also files which can be used with
wezterm
. One is the theme itself, and the other contains configuration options to setup the theme.
TODO
- Create some sort of documentation
- Create a compiled version similar to
nightfox