Coding is already hard on the brain, so it should at least be easy on the eyes. Ashen is a warm, muted colorscheme that evokes the feeling of embers sizzling out in an old fire pit. It features red & orange tones, plenty of grayscale, and hints of teal.
Warning
This theme is still in early development: the palette and theming may be subject to change.
- Features
- Installation
- Plugins
- Configuration
- Plugin Configuration
- Extras
- Acknowledgements
- Roadmap
- Contributing
- Warm, cozy palette that's easy on the eyes.
- Clear differentiation of errors and warnings.
- Supports a number of plugins.
- Fast load time.
- Actively developed.
Using lazy.nvim:
{
"ficcdaf/ashen.nvim",
lazy = false,
priority = 1000,
-- configuration is optional!
opts = {
-- your settings here
},
}
You can load Ashen anywhere in your Neovim configuration:
vim.cmd("colorscheme ashen")
-- You may call the load function as well
require("ashen").load()
If you're using LazyVim, I recommend the following:
return {
{ "ficcdaf/ashen.nvim" },
-- Configure LazyVim to load Ashen
{
"LazyVim/LazyVim",
opts = {
colorscheme = "ashen",
},
}
}
Warning
The following may be incomplete! Please check lua/ashen/plugins
for an up-to-date list of supported plugins. I will endeavour to update this README frequently.
Many plugins are already "supported" because they use standard Neovim highlight groups. However, some plugins require bespoke support. Additionally, some plugins may require extra setup to look good with Ashen. Please see Plugin Configuration for more details.
Ashen explicitly supports the following plugins:
- blink.cmp
- nvim-cmp
- flash.nvim
- lualine
- mini.icons
- trailblazer.nvim
- obsidian.nvim
- oil.nvim
- render-markdown.nvim
- telescope.nvim
- minimap.vim
Warning
If you choose to set any options, please note that setup
only sets up
the configuration and does not load the theme! You must call colorscheme ashen
or require("ashen").load()
after setup
!
You can pass an options table to the setup
function to configure Ashen, the same you would any other plugin. If you use lazy.nvim
, you can set options as shown in installation!
require("ashen").setup({
-- your settings here
})
-- theme must be loaded *after* setup!
vim.cmd("colorscheme ashen")
The following default settings are provided. Any settings not self-explanatory will be expanded on below. Any provided settings will be merged with the defaults.
{
-- override palette, see below
---@type Palette
---@field [ColorName] HexCode
colors = {},
-- force clear other highlights
-- even if no other theme is set
-- (useful for debugging)
force_hi_clear = false,
-- enable termguicolors on load (recommended)
termguicolors = true,
}
You can override any color in Ashen's palette, or set new colors entirely. The colors
setting accepts a table of ColorName = HexCode
pairs, where they are both strings, with ColorName
corresponding to an Ashen color, and HexCode
being a #
prefixed hexadecimal color code. For an list of available color names, please see colors.lua.
Please see the following example:
{
colors = {
background = "#000000",
red_ember = "#933737"
},
}
Tip
Made a palette you're proud of? It could become Ashen's next "theme variant" -- don't be afraid to open a feature request for it!
Not yet implemented, but coming soon to an Ashen installation near you!
Ashen comes with a preconfigured Lualine theme that includes a word counter for Markdown, Text, and Latex files. Optionally, noice.nvim is used to indicate Macro recording status, and pomo.nvim is supported. The following is an example of how to configure Lualine to use Ashen:
return {
"nvim-lualine/lualine.nvim",
-- ensure Ashen is loaded first
dependencies = {
"ficcdaf/ashen.nvim",
},
opts = function()
local ashen = require("ashen.plugins.lualine").lualine_opts
-- you can set any other options
-- expected by lualine, since this
-- table will be passed directly to `setup`
ashen.extensions = { "lazy", "fzf" }
return ashen
end,
}
I am working on improving the word counter and releasing it as a separate plugin. When that happens, Ashen will be updated to support it out of the box.
Trailblazer tends to overwrite the highlight groups set by Ashen. Therefore, you may need to invoke Ashen's Trailblazer setup immediately after loading Trailblazer. Please see the following example:
return {
"LeonHeidelbach/trailblazer.nvim",
event = "UIEnter",
-- ensure Ashen is loaded first
dependencies = {
"ficcdaf/ashen.nvim",
},
config = function()
require("trailblazer").setup({
-- your Trailblazer setup here
})
-- This ensures Ashen's HL groups are set up
-- AFTER Trailblazer sets its own.
require("ashen.plugins").setup("trailblazer")
end,
}
Ashen will support render-markdown
OOTB with no additional configuration. You may optionally consider including the following icons in your setup. Note they may not render properly in all browsers.
-- as part of render-markdown.nvim setup
opts = {
bullet = {
-- cleaner bullet points
icons = { "•", "∙" },
},
heading = {
-- Icons that say H1, H2, etc.
icons = { " ", " ", " ", " ", " ", " " },
},
}
Extras can be found here. You can install them like you would any other theme in the respective application.
The following extras are available:
- Ghostty
- Kitty
- Alacritty
- Windows Terminal
Ashen was inspired by nvim-noirbuddy.
Please refer to the issues page for an up-to-date roadmap.
I welcome contributions. If you want a certain plugin or extra to be added, please open an issue and I'll get to it as soon as I can. If you're interested in contributing, you're welcome to take a stab at any of the issues.