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 Syntax, Color, and Transparency
- (optional) Tweak UI
- (optional) 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 Syntax, Color, and 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) 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,
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
- lazy.nvim
- lualine.nvim
- mason.nvim
- mini.trailspace
- mini.diff
- 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 :)