a delightful and customizable mostly monochrome colorscheme thats soft on the eyes and supports treesitter, lsp, and heaps of neovim plugins.
a minimal but flexible and good looking pallet made from beautiful hexcodes
- Treesitter syntax highlights
- Uses 24bit true color
- Easy on the eyes
- Install
slugbyte/lackluster.nvim
with your favorite package manager - Set your colorscheme to
lackluster
,lackluster-hack
, orlackluster-mint
- (optional) Setup Lualine
- (optional) Tweak Color Pallet
- (optional) Tweak Syntax Colors and Background Transparency
- (optional) Tweak UI
- (optional) Tweak Highlights Manually (bold, italic, etc...)
- (optional) Tweak Disable Plugin Highlights
- (optional) Setup nvim-web-devicons
-- example lazy.nvim install setup
return {
"slugbyte/lackluster.nvim",
lazy = false,
priority = 1000,
init = function()
vim.cmd.colorscheme("lackluster")
-- vim.cmd.colorscheme("lackluster-hack") -- my favorite
-- vim.cmd.colorscheme("lackluster-mint")
end,
}
require('lualine').setup({
options = {
theme = "lackluster",
},
})
(OPTIONAL) Tweak Color Pallet
!!
setup()
MUST be called before setting your colorscheme !!
local lackluster = require("lackluster")
-- !must called setup() before setting the colorscheme!
lackluster.setup({
-- tweak_color allows you to overwrite the default colors in the lackluster theme
tweak_color = {
-- you can set a value to a custom hexcode like' #aaaa77' (hashtag required)
-- or if the value is 'default' or nil it will use lackluster's default color
-- lack = "#aaaa77",
lack = "default",
luster = "default",
orange = "default",
yellow = "default",
green = "default",
blue = "default",
red = "default",
-- WARN: Watchout! messing with grays is probs a bad idea, its very easy to shoot yourself in the foot!
-- black = "default",
-- gray1 = "default",
-- gray2 = "default",
-- gray3 = "default",
-- gray4 = "default",
-- gray5 = "default",
-- gray6 = "default",
-- gray7 = "default",
-- gray8 = "default",
-- gray9 = "default",
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
(OPTIONAL) Tweak Syntax Colors and Background Transparency
!!
setup()
MUST be called before setting your colorscheme !!
local lackluster = require("lackluster")
local color = lackluster.color -- blue, green, red, orange, black, lack, luster, gray1-9
-- !must called setup() before setting the colorscheme!
lackluster.setup({
-- You can overwrite the following syntax colors by setting them to one of...
-- 1) a hexcode like "#a1b2c3" for a custom color.
-- 2) "default" or nil will just use whatever lackluster's default is.
tweak_syntax = {
string = "default",
-- string = "#a1b2c3", -- custom hexcode
-- string = color.green, -- lackluster color
string_escape = "default",
comment = "default",
builtin = "default", -- builtin modules and functions
type = "default",
keyword = "default",
keyword_return = "default",
keyword_exception = "default",
},
-- You can overwrite the following background colors by setting them to one of...
-- 1) a hexcode like "#a1b2c3" for a custom color
-- 2) "none" for transparency
-- 3) "default" or nil will just use whatever lackluster's default is.
tweak_background = {
normal = 'default', -- main background
-- normal = 'none', -- transparent
-- normal = '#a1b2c3', -- hexcode
-- normal = color.green, -- lackluster color
telescope = 'default', -- telescope
menu = 'default', -- nvim_cmp, wildmenu ... (bad idea to transparent)
popup = 'default', -- lazy, mason, whichkey ... (bad idea to transparent)
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
Example transparent background
setup()
-- When testing transparent backgrounds I found that comments where often hard to read,
-- and menus didn't look good but using setup() tweaks you can easily address that!
local lackluster = require("lackluster")
-- !must called setup() before setting the colorscheme!
lackluster.setup({
tweak_syntax = {
comment = lackluster.color.gray4, -- or gray5
},
tweak_background = {
normal = 'none',
telescope = 'none',
menu = lackluster.color.gray3,
popup = 'default',
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
(OPTIONAL) Tweak UI
!!
setup()
MUST be called before setting your colorscheme !!
local lackluster = require("lackluster")
-- !must called setup() before setting the colorscheme!
lackluster.setup({
tweak_ui = {
disable_undercurl = false, -- set to true if you want underline instead of undercurl
enable_end_of_buffer = false, -- set to true to show the end_of_buffer ~ symbols in the gutter
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
(OPTIONAL) Tweak Highlights Manually (bold, italic, etc...)
local lackluster = require("lackluster")
-- !must called setup() before setting the colorscheme!
lackluster.setup({
-- tweak_highlight allows you to update or overwrite the value passed into
-- vim.api.nvim_set_hl which allows you to have complete control over modifying all
-- highlights on a granular level.
tweak_highlight = {
-- modify @keyword's highlights to be bold and italic
["@keyword"] = {
overwrite = false, -- overwrite falsey will extend/update lackluster's defaults (nil also does this)
bold = true,
italic = true,
-- see `:help nvim_set_hl` for all possible keys
},
-- overwrite @function to link to @keyword
["@function"] = {
overwrite = true, -- overwrite == true will force overwrite lackluster's default highlights
link = "@keyword",
},
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
(OPTIONAL) Tweak Disable Plugin Highlights
!!
setup()
MUST be called before setting your colorscheme !!
local lackluster = require("lackluster")
-- if for some reason you want to disable the highlights related to a specific plugin you
-- can set any of these to true and the highlights will not be set
-- !must called setup() before setting the colorscheme!
lackluster.setup({
disable_plugin = {
bufferline = false,
cmp = false,
dashboard = false,
flash = false,
git_gutter = false,
git_signs = false,
headline = false,
indentmini = false,
lazy = false,
lightbulb = false,
lsp_config = false,
mason = false,
mini_diff = false,
navic = false,
noice = false,
notify = false,
oil = false,
rainbow_delimiter = false, -- if you want color-rainbows you should disable this
scollbar = false,
telescope = false,
todo_comments = false,
tree = false,
trouble = false,
which_key = false,
yanky = false,
},
})
-- !must set colorscheme after calling setup()!
vim.cmd.colorscheme("lackluster")
(OPTIONAL) Setup nvim-web-devicons
-- nvim-web-devicons does not play well with colorschemes so if lackluster style icons
-- run the following setup before you load lackluster.
local lackluster = require("lackluster")
-- !must called setup() before setting the colorscheme!
require('nvim-web-devicons').setup({
color_icons = false,
override = {
["default_icon"] = {
color = lackluster.color.gray4,
name = "Default",
}
}
})
vim.cmd.colorscheme("lackluster")
lackluster-hack (return is green, exception is blue)
lackluster-mint (types are green)
lots of other plugins should work right out of the box too!
Screenshots of many of the plugins can be found here
- bufferline.nvim
- dashboard-nvim
- figet.nvim
- flash.nvim
- gitsigns.nvim
- headlines.nvim
- indentmini.nvim
- lazy.nvim
- lualine.nvim
- mason.nvim
- mini-cursorword.md
- mini-diff.md
- mini-indentscope.md
- mini-jump.md
- mini-jump2d.md
- mini-starter.md
- mini-statusline.md
- mini-surround.md
- mini-tabline.md
- mini-trailspace.md
- noice.nvim
- nvim-lightbulb
- nvim-lspconfig
- nvim-navic
- nvim-notify
- nvim-scrollbar
- nvim-tree.lua
- nvim-web-devicons
- nvim_cmp
- oil.nvim
- rainbow-delimiters.nvim
- telescope.nvim
- todo-comments.nvim
- trouble.nvim
- vim-gitgutter
- which-key.nvim
- yanky.nvim
If you like this project star the GitHub repository :)
If you find a bug please open a issue :) and please include screenshots if relevant :)
Is lackluster
missing support for a plugin/extra you love? Open a suggestion issue, or
better yet Read the CONTRIBUTING
and DEVELOPMENT Guides,
and make a contribution!
Your feedback and contributions are mega appreciated!
I referenced the following colorscheme's source code when creating lackluster :)