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/nvim
directory.
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,
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