Here is what the improved color palette looks like:
A Figma Design is available here
- Supports the latest Neovim 0.9.0 features.
- Enhances terminal colors.
- Introduces a darker background option for sidebar-like windows.
- Supports all major plugins.
- Provides Dullahan
Install the theme with your preferred package manager, such as folke/lazy.nvim:
{
"PunGrumpy/dullahan.nvim",
lazy = false,
priority = 1000,
opts = {},
}
colorscheme dullahan
" There are also colorschemes for the different styles.
colorscheme dullahan-black
colorscheme dullahan-white
vim.cmd[[colorscheme dullahan]]
-- Lua
require('barbecue').setup {
-- ... your barbecue config
theme = 'dullahan',
-- ... your barbecue config
}
-- Lua
require('lualine').setup {
options = {
-- ... your lualine config
theme = 'dullahan'
-- ... your lualine config
}
}
" Vim Script
let g:lightline = {'colorscheme': 'dullahan'}
βοΈ Set the configuration BEFORE loading the color scheme with
colorscheme dullahan
.
The theme offers four styles: black and white
dullahan uses the default options,
unless setup
is explicitly called.
require("dullahan").setup({
-- your configuration comes here
-- or leave it empty to use the default settings
style = "storm", -- The theme comes in three styles, `black` (default), `gold` and `white`
light_style = "white", -- The theme is used when the background is set to light
transparent = false, -- Enable this to disable setting the background color
terminal_colors = true, -- Configure the colors used when opening a `:terminal` in [Neovim](https://github.com/neovim/neovim)
styles = {
-- Style to be applied to different syntax groups
-- Value is any valid attr-list value for `:help nvim_set_hl`
comments = { italic = true },
keywords = { italic = true },
functions = {},
variables = {},
-- Background styles. Can be "dark", "transparent" or "normal"
sidebars = "dark", -- style for sidebars, see below
floats = "dark", -- style for floating windows
},
sidebars = { "qf", "help" }, -- Set a darker background on sidebar-like windows. For example: `["qf", "vista_kind", "terminal", "packer"]`
day_brightness = 0.3, -- Adjusts the brightness of the colors of the **Day** style. Number between 0 and 1, from dull to vibrant colors
hide_inactive_statusline = false, -- Enabling this option, will hide inactive statuslines and replace them with a thin border instead. Should work with the standard **StatusLine** and **LuaLine**.
dim_inactive = false, -- dims inactive windows
lualine_bold = false, -- When `true`, section headers in the lualine theme will be bold
--- You can override specific color groups to use other groups or a hex color
--- function will be called with a ColorScheme table
---@param colors ColorScheme
on_colors = function(colors) end,
--- You can override specific highlights to use other groups or a hex color
--- function will be called with a Highlights and ColorScheme table
---@param highlights Highlights
---@param colors ColorScheme
on_highlights = function(highlights, colors) end,
})
How the highlight groups are calculated:
colors
are determined based on your configuration, with the ability to override them usingconfig.on_colors(colors)
.- These
colors
are utilized to generate the highlight groups. config.on_highlights(highlights, colors)
can be used to override highlight groups.
For default values of colors
and highlights
, please consult the colors.lua file.
require("dullahan").setup({
-- use the black style
style = "black",
-- disable italic for functions
styles = {
functions = {}
},
sidebars = { "qf", "vista_kind", "terminal", "packer" },
-- Change the "hint" color to the "orange" color, and make the "error" color bright red
on_colors = function(colors)
colors.hint = colors.orange
colors.error = "#ff0000"
end
})
Borderless Telescope example
require("dullahan").setup({
on_highlights = function(hl, c)
local prompt = "#8599ff" -- hsl(230, 100, 76)
hl.TelescopeNormal = {
bg = c.bg_dark,
fg = c.fg_dark,
}
hl.TelescopeBorder = {
bg = c.bg_dark,
fg = c.bg_dark,
}
hl.TelescopePromptNormal = {
bg = prompt,
}
hl.TelescopePromptBorder = {
bg = prompt,
fg = prompt,
}
hl.TelescopePromptTitle = {
bg = prompt,
fg = prompt,
}
hl.TelescopePreviewTitle = {
bg = c.bg_dark,
fg = c.bg_dark,
}
hl.TelescopeResultsTitle = {
bg = c.bg_dark,
fg = c.bg_dark,
}
end,
})
Fix undercurls
in Tmux
To have undercurls show up and in color, add the following to your Tmux configuration file:
# Undercurl
set -g default-terminal "${TERM}"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0
Pull requests are welcome and encouraged. For major changes, please open an issue first to discuss what you would like to change.
See the CHANGELOG.md file for details.
Affero General Public License v3.0 for more information.
Folke π |
Takuya Matsuyama π |