slugbyte/lackluster.nvim

github github
colorschemetreesitter-colorschemes
stars 70
issues 1
subscribers 1
forks 3
CREATED

2024-05-20

UPDATED

3 days ago


lackluster

a delightful and customizable mostly monochrome colorscheme thats soft on the eyes and supports treesitter, lsp, and heaps of neovim plugins.

a screenshot of neovim with the lackluster colorscheme

a minimal but flexible and good looking pallet made from beautiful hexcodes

a bunch more screenshots...

ABOUT

  • Treesitter syntax highlights
  • Uses 24bit true color
  • Easy on the eyes

SETUP

  1. Install slugbyte/lackluster.nvim with your favorite package manager
  2. Set your colorscheme to lackluster, lackluster-hack, or lackluster-mint
  3. (optional) Setup Lualine
  4. (optional) Tweak Syntax, Color, and Transparency
  5. (optional) Disable Plugin Highlights
  6. (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,
}

LUALINE SETUP

require('lualine').setup({
  options = {
    theme = "lackluster",
  },
})

!! setup() MUST be called before setting your colorscheme !!

!! setup() will overwrite the colors of whatever lackluster-variant colorscheme you apply !!

local lackluster = require("lackluster")

local color = lackluster.color -- blue, green, red, orange, black, lack, luster, gray1-9

-- setup before set 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)
    },
})

-- colorscheme must be set after after 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")

lackluster.setup({
    tweak_syntax = {
        comment = lackluster.color.gray4, -- or gray5
    },
    tweak_background = {
        normal = 'none',
        telescope = 'none',
        menu = lackluster.color.gray3,
        popup = 'default',
    },
})

vim.cmd.colorscheme("lackluster")
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")

-- 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")
require('nvim-web-devicons').setup({
    color_icons = false,
    override = {
        ["default_icon"] = {
            color = lackluster.color.gray4,
            name = "Default",
        }
    }
})
vim.cmd.colorscheme("lackluster")

VARIATIONS

lackluster-hack (return is green, exception is blue)

a screenshot of neovim with the lackluster-hack colorscheme

lackluster-mint (types are green)

a screenshot of neovim with the lackluster-mint colorscheme

more variations..

EXPLICITLY SUPPORTED PLUGINS

lots of other plugins should work right out of the box too!

Screenshots of many of the plugins can be found here

SELF-PROMO

If you like this project star the GitHub repository :)

HELP WANTED

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!

ACKNOWLEDGEMENT

I referenced the following colorscheme's source code when creating lackluster :)