Skip to content
alsi-lawr edited this page Jul 16, 2026 · 4 revisions

Themes

Neotheme ships 31 built-in themes across nine families. gruber-dark-muted is the default.

Theme families

Family Stand-out theme Range Full inventory
Arcfield arcfield-graphite Two dark and one light variant Themes and examples
Bathyal bathyal-midwater Two dark and one light variant Themes and examples
Ferric ferric-forge One dark and one light variant Themes and examples
Grove grove-campfire One dark and one light variant Themes and examples
Gruber gruber-dark-muted Three dark and three light variants Themes, examples, and lineage
Neritic neritic-day Two dark and two light variants Themes and examples
Typeset typeset-paper One light and one dark variant Themes and examples
Typewriter typewriter-ink Three light and two dark variants Themes and examples
Understory understory-canopy Two dark and two light variants Themes and examples

The family preview carousel and full matrix show the collection together.

Browse and preview

With Neotheme loaded, open the family-first browser:

:Neotheme

Choosing a theme updates only the browser's highlighted code preview. Space applies a theme while keeping the browser open; Enter applies it and closes. Confirmed selections remain session-only. See Session Theme Controls for every key, transition policy, and checkpoint rule.

Select the configured theme

require("neotheme").setup({
	theme = "typeset-paper",
})

vim.cmd.colorscheme("neotheme")

The theme name belongs to Neotheme setup. Every built-in and custom palette uses the single :colorscheme neotheme entrypoint.

List families and themes

From Neovim:

:NeothemeList
:NeothemeList gruber

Without an argument, :NeothemeList prints each family followed by its members. Supplying a family prints only that family's themes.

The equivalent Lua registry APIs are:

local neotheme = require("neotheme")

local families = neotheme.families()
local all_names = neotheme.themes()
local gruber_names = neotheme.themes("gruber")

themes() includes custom when no family is supplied. Family-filtered results contain only built-in members. Returned lists are sorted copies and can be modified without changing the registry.

Background metadata

Every built-in records whether it is dark or light. Loading, confirmed switching, resetting, or reloading a built-in applies the corresponding vim.o.background value automatically. Browser row previews do not change the editor's global background.

Custom themes default to a dark background because custom palette configuration does not include background metadata. See Custom Themes for light custom palettes.

Clone this wiki locally