A port of the jellybeans colorscheme for Neovim, written in Lua. Comes with multiple palettes.
Vibrant Light (jellybeans_light
)
Muted Light (jellybeans_muted_light
)
Mono Light (jellybeans_mono_light
)
- Written in Lua
- Highly configurable
- Treesitter support
- LSP support
- Support for popular plugins
Using lazy.nvim:
{
"wtfox/jellybeans.nvim",
lazy = false,
priority = 1000,
opts = {}, -- Optional
}
-- Default (vibrant dark)
vim.cmd[[colorscheme jellybeans]]
-- Vibrant light
vim.cmd[[colorscheme jellybeans-light]]
-- Muted dark
vim.cmd[[colorscheme jellybeans-muted]]
-- Muted light
vim.cmd[[colorscheme jellybeans-muted-light]]
-- Mono dark
vim.cmd[[colorscheme jellybeans-mono]]
-- Mono light
vim.cmd[[colorscheme jellybeans-mono-light]]
Jellybeans ships with the following defaults
{
transparent = false,
italics = true,
flat_ui = true, -- toggles "flat UI" for pickers
background = {
dark = "jellybeans", -- default dark palette
light = "jellybeans_light", -- default light palette
},
plugins = {
all = false,
auto = true, -- will read lazy.nvim and apply the colors for plugins that are installed
},
on_highlights = function(highlights, colors)
end,
on_colors = function(colors)
end,
}
Deprecated:
style
andpalette
are no longer used. Instead, use thebackground
table to set the default palette for dark and light backgrounds. This allows for more flexibility for future palettes and for your personal preferences.
Jellybeans offers two palette variants, each with dark and light modes:
-
Vibrant (default): The classic jellybeans with rich, saturated colors
- Dark:
jellybeans
(default) - Light:
jellybeans_light
- Dark:
-
Muted: A lower saturation, paper-like theme
- Dark:
jellybeans_muted
- Light:
jellybeans_muted_light
- Dark:
-
Mono: A monochrome palette with a dark and light mode
- Dark:
jellybeans_mono
- Light:
jellybeans_mono_light
The mono palette uses two accent colors to provide visual distinction while maintaining a cohesive monochromatic look:
accent_color_1
: Used for types and constants (defaults to a muted brown)accent_color_2
: Used for functions (defaults to a muted blue)
- Dark:
You can easily override the color palette. For example, here's how to change the background color for OLED:
opts = {
on_colors = function(c)
local light_bg = "#ffffff"
local dark_bg = "#000000"
c.background = vim.o.background == "light" and light_bg or dark_bg
end,
}
To customize the accent colors for the mono palette:
opts = {
on_colors = function(c)
-- Custom accent colors for mono palette
c.accent_color_1 = vim.o.background == "dark" and "#876543" -- Custom color for types and constants
c.accent_color_2 = vim.o.background == "dark" and "#345678" -- Custom color for functions
end,
}
If you want more control over highlight groups, that is also possible:
opts = {
on_highlights = function(hl, c)
hl.Constant = { fg = "#00ff00", bold = true }
end,
},
The theme includes a Lualine theme. To enable it:
require('lualine').setup {
options = {
theme = 'jellybeans'
}
}
- FZF
- Ghostty
- Wezterm
- Windows Terminal
- Yazi
- and more...