Solarized is a sixteen color palette (eight monotones, eight accent colors) designed for use with terminal and gui applications. click here to learn more
- Features
- Requirements
- Install from package manager
- Solarized's Annotations
- Manual Installation
- Docs
- Commands
- Default Config
- Config Variant
- Config Transparency
- Config Styles
- Config Highlights
- Config Colors
- Config Plugins
- Config Error Lens
- Lualine
- Barbecue
- Api
- Contributing
- Designed by
- Credits and Reference
- Support for Treesitter
- Support for Semantic highlight
- Customizability: styles, colors and highlights can all be modified
- Plugin compatibility
- Provides users with the option to enable or disable highlight groups
- Selenized color palette
Before using the Solarized Colorscheme, please make sure you have the following requirements installed:
Neovim v0.9.1+- nvim-treesitter
Download using your preferred package manager.
return { 'maxmx03/solarized.nvim', lazy = false, priority = 1000, ---@type solarized.config opts = {}, config = function(_, opts) vim.o.termguicolors = true vim.o.background = 'light' require('solarized').setup(opts) vim.cmd.colorscheme 'solarized' end, }
use { 'maxmx03/solarized.nvim', config = function() vim.o.background = 'dark' ---@type solarized local solarized = require('solarized') vim.o.termguicolors = true vim.o.background = 'dark' solarized.setup({}) vim.cmd.colorscheme 'solarized' end }
local lsp_config = require 'lspconfig' lsp_config.lua_ls.setup { settings = { Lua = { hint = { enable = true, }, runtime = { version = 'LuaJIT', }, workspace = { checkThirdParty = true, library = { vim.env.VIMRUNTIME, '~/.local/share/nvim/lazy/solarized.nvim', }, }, }, }, }
{
"workspace.library": ["/path/to/nvim/runtime", "/path/to/solarized.nvim"]
}To manually install Solarized, follow these steps:
- Download the stable release of Solarized.
- Extract the contents of the release.
- Locate the following folders in the extracted files:
after,colors,lua,plugin. - Copy these folders to the
~/.config/nvimdirectory.
Use :h solarized.nvim.txt to see docs
:Solarized colors- Display the Solarized palette in a new buffer
vim.o.background = 'dark' -- default config require('solarized').setup({ transparent = { enabled = false, pmenu = true, normal = true, normalfloat = true, neotree = true, nvimtree = true, whichkey = true, telescope = true, lazy = true, }, on_highlights = nil, on_colors = nil, palette = 'solarized', -- solarized (default) | selenized variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default) error_lens = { text = false, symbol = false, }, styles = { enabled = true, types = {}, functions = {}, parameters = {}, comments = {}, strings = {}, keywords = {}, variables = {}, constants = {}, }, plugins = { treesitter = true, lspconfig = true, navic = true, cmp = true, indentblankline = true, indentmini = true, neotree = true, nvimtree = true, whichkey = true, dashboard = true, gitsigns = true, telescope = true, noice = true, hop = true, ministatusline = true, minitabline = true, ministarter = true, minicursorword = true, notify = true, rainbowdelimiters = true, bufferline = true, lazy = true, rendermarkdown = true, ale = true, coc = true, leap = true, alpha = true, yanky = true, gitgutter = true, mason = true, flash = true, }, }) vim.cmd.colorscheme = 'solarized'
Solarized includes four variants: spring, summer, autumn, and winter.
require('solarized').setup { variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default) }
By default, transparency is turned off, but you can easily enable it and customize which specific UI components should be transparent.
require('solarized').setup { transparent = { enabled = true, -- Master switch to enable transparency pmenu = true, -- Popup menu (e.g., autocomplete suggestions) normal = true, -- Main editor window background normalfloat = true, -- Floating windows neotree = true, -- Neo-tree file explorer nvimtree = true, -- Nvim-tree file explorer whichkey = true, -- Which-key popup telescope = true, -- Telescope fuzzy finder lazy = true, -- Lazy plugin manager UI mason = true, -- Mason manage external tooling }, }
The styles config allows you to customize the style of a highlight
group.
---@type solarized.styles local styles = { comments = { italic = true, bold = false }, functions = { italic = true }, variables = { italic = false }, } require('solarized').setup({ styles = styles, })
You can also disable all highlight group styles.
require('solarized').setup({ styles = { enabled = false }, })
The highlights config allows you to customize the highlights groups.
example:
require('solarized').setup { on_highlights = function (colors, color) local darken = color.darken local lighten = color.lighten local blend = color.blend local shade = color.shade local tint = color.tint ---@type solarized.highlights local groups = { Visual = { bg = colors.base02, standout = true }, Function = { fg = colors.yellow }, IncSearch = { fg = colors.orange, bg = colors.mix_orange }, Search = { fg = colors.violet, bg = shade(colors.violet, 5) }, NormalFloat = { bg = darken(colors.base03, 25) } } return groups end }
The colors config allows you to extend or modify the color palette used by
solarized.
Tip
Use :Solarized colors to see available colors.
example:
require('solarized').setup { on_colors = function(colors, color) local lighten = color.tint local darken = color.darken return { fg = lighten(colors.base00, 2), bg = darken(colors.base03, 30) } end, highlights = function(colors) return { Normal = { fg = colors.fg, bg = colors.bg } } end }
The plugins config allows you to enable or disable solarized support for spefic plugins or neovim's default highlights
example:
return { 'maxmx03/solarized.nvim', lazy = false, priority = 1000, ---@type solarized.config opts = { plugins = { navic = false, nvimtree = false, dashboard = false, noice = false, ministatusline = false, minitabline = false, ministarter = false, rainbowdelimiters = false, } }, config = function(_, opts) require('solarized').setup(opts) vim.cmd.colorscheme 'solarized' end, }
Enables additional highlights for diagnostic virtual text and symbols.
return { 'maxmx03/solarized.nvim', lazy = false, priority = 1000, ---@type solarized.config opts = { error_lens = { text = true, symbol = true, } }, config = function(_, opts) require('solarized').setup(opts) vim.cmd.colorscheme 'solarized' end, }
require('lualine').setup { options = { theme = 'solarized', -- theme = 'selenized', disabled_filetypes = { 'NvimTree', }, }, }
Alternatively, to utilize Lualine's Solarized theme:
require('lualine').setup { options = { theme = require('lualine.themes.solarized') } }
To use the Solarized theme showcased in the screenshot for Lualine click here
require('barbecue').setup { theme = 'solarized', }
---@type solarized.palette local colors = require('solarized.utils').get_colors() ---@type solarized.color local color = require('solarized.color') local darken = color.darken local lighten = color.lighten local blend = color.blend local shade = color.shade local tint = color.tint -- example 1: get shades for i = 1, 10, 1 do print(shade(colors.yellow, i)) end for i = 1, 100, 10 do print(darken(colors.yellow, i)) end -- example 2: get tints for i = 1, 10, 1 do print(tint(colors.yellow, i)) end for i = 1, 100, 10 do print(lighten(colors.yellow, i)) end -- example 3: blend color local new_color = blend(colors.yellow, colors.base03, 0.2)
Pull requests are welcome and appreciated.
Ethan Schoonover