Colour themes for Emacs, Neovim, VS Code, WezTerm and your terminal: fourteen flavors, each with a dark and a light version, plus a high-contrast pair for low vision.
Each flavor starts from a scene, a sky at dusk, a lagoon, a café, a library, and takes its colours from it. The colours are calm and of even strength: none shouts louder than the others, so your eyes can rest anywhere on the screen. Rayleigh is the default flavor.
Rayleigh, the default flavor, in Emacs: the blue hour by night, a clear noon by day.
The same Rayleigh in VS Code, Neovim and the terminal.
| Flavor | Dark | Light | |
|---|---|---|---|
| Rayleigh | Twilight after sunset: the blue hour, the Belt of Venus and the last gold | A clear sky at noon: zenith blue ink on cloud white | |
| Cherenkov | The blue-violet glow of a reactor pool, uranium-glass green | The same glow printed in cobalt | |
| Quartz | Violet quartz on a neutral grey night | Amethyst ink on white paper | |
| Olive | Provence at dusk: an olive grove, lavender rows, rosé, ochre cliffs, blue shutters, terracotta roofs | Limestone paper, lavender ink | |
| Dusk | A warm evening on a mid-dark plum ground: orchid, honey and coral | Lilac paper, aubergine ink | |
| Oxblood | A wine cellar by candlelight: rose and candle gold on wine | Powdered paper, wine and gold inks | |
| Lagoon | A lagoon at dusk on a mid-dark blue-green ground: coral, golden sand, clear water | Pale lagoon paper, coral ink | |
| Ember | A desk lamp on warm graphite: apricot and butter | Ivory paper, printer's inks | |
| Canopy | The sun above a forest at night | Old gold on celadon paper | |
| Harbor | Harbour lights on navy water: lemon, amber, sea glass | A nautical chart: teal ink on pale blue paper | |
| Espresso | A café at night: espresso, crema, pistachio, cinnamon and a blue enamel cup | Latte paper, roasted inks | |
| Aurora | Green curtains over a violet polar night: star gold, the red flash of oxygen | Snow paper under the aurora, emerald ink | |
| Parchment | A reading room at night: tobacco leather, a brass lamp, teal bindings | Parchment, teal and madder inks | |
| Nebula | An emission nebula in deep space: oxygen cyan, sulphur gold, hydrogen rose | The nebula printed in an atlas: peacock ink on clean white |
The swatches show the six code colours in role order: keywords, functions, types, strings, constants, builtins; dark variant on the left, light on the right.
Rayleigh
Cherenkov
Quartz
Olive
Dusk
Oxblood
Lagoon
Ember
Canopy
Harbor
Espresso
Aurora
Parchment
Nebula
Requires Emacs 27.1 or later. The package is lumina-themes.
Emacs 30, use-package with :vc:
(use-package lumina-themes
:vc (:url "https://github.com/RazikSF/lumina-themes" :lisp-dir "emacs")
:config (load-theme 'lumina-rayleigh-dark t))
Doom Emacs, in packages.el:
(package! lumina-themes
:recipe (:host github :repo "RazikSF/lumina-themes"
:files ("emacs/*.el" "emacs/themes/*.el")))
then in config.el:
(setq doom-theme 'lumina-rayleigh-dark)
straight.el:
(straight-use-package
'(lumina-themes :type git :host github :repo "RazikSF/lumina-themes"
:files ("emacs/*.el" "emacs/themes/*.el")))
(load-theme 'lumina-rayleigh-dark t)
elpaca:
(elpaca (lumina-themes :host github :repo "RazikSF/lumina-themes"
:files ("emacs/*.el" "emacs/themes/*.el")))
By hand: clone the repository, then
(add-to-list 'load-path "/path/to/lumina-themes/emacs")
(add-to-list 'custom-theme-load-path "/path/to/lumina-themes/emacs/themes")
(load-theme 'lumina-rayleigh-dark t)
The themes are plain deftheme files with no dependency. Each one sets
about 3 000 faces: the core interface, built-in modes and over 150
packages (org and org-modern, magit, vertico, corfu, company, consult,
marginalia, embark, treemacs, dirvish, lsp-mode, eglot, tree-sitter,
flycheck, flymake, meow, evil, vterm, mu4e, elfeed, markdown, web-mode,
doom-modeline, transient, which-key, avy and more). Faces of packages
you do not use are simply ignored.
Commands (after (require 'lumina-themes)):
| Command | Effect |
|---|---|
lumina-themes-select |
pick a Lumina theme with completion |
lumina-themes-toggle |
switch between the dark and light variant of the current flavor |
lumina-themes-load-random |
load a random Lumina theme (C-u: dark only, C-u C-u: light only) |
lumina-themes-reapply |
re-apply the options below after changing them |
Options, set before loading a theme:
(setq lumina-themes-italic-comments t) ; italic comments (default)
(setq lumina-themes-italic-types nil) ; italic type names
(setq lumina-themes-bold-keywords nil) ; bold instead of semi-bold keywords
(setq lumina-themes-brighter-comments nil) ; comments at the docstring contrast
(setq lumina-themes-comment-bg nil) ; tinted background behind comments
(setq lumina-themes-padded-modeline nil) ; t, or a padding width in pixels
Requires Neovim 0.8 or later with true colours (termguicolors, on by
default since Neovim 0.10 in terminals that support it). The
colorschemes are written in Lua; Vim is not supported.
lazy.nvim:
{
"RazikSF/lumina-themes",
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme("lumina-rayleigh-dark")
end,
}
vim-plug: Plug 'RazikSF/lumina-themes', then
colorscheme lumina-rayleigh-dark.
:colorscheme lumina picks the flavor named by vim.g.lumina_flavor
(Rayleigh when it is unset), dark or light after background.
Each colorscheme sets about 1 600 highlight groups: the interface, tree-sitter captures, LSP semantic tokens, diagnostics, the terminal colours and some 40 plugins (telescope, fzf-lua, snacks, nvim-tree, neo-tree, oil, nvim-cmp, blink.cmp, gitsigns, neogit, diffview, flash, leap, noice, which-key, trouble, lazy, mason, dap-ui, neotest, render-markdown, mini, bufferline, aerial and more). A lualine theme of the same name ships with each one:
require("lualine").setup({ options = { theme = "lumina-rayleigh-dark" } })
Install Lumina Themes from the Visual Studio Marketplace (VS Code) or from Open VSX (VSCodium, Cursor and other editors built on VS Code): search for Lumina Themes in the Extensions view, or run
code --install-extension RazikSF.lumina-themes
Then open the theme picker (Ctrl+K Ctrl+T, Cmd+K Cmd+T on macOS) and
choose a Lumina flavor.
config.color_scheme_dirs = { "/path/to/lumina-themes/wezterm" }
config.color_scheme = "lumina-rayleigh-dark"
The base24/ files are standard tinted-theming
schemes. Use them with tinty or
any tinted-theming template to colour your terminal, bat, fzf, btop
and the rest of your tools.
lumina-<flavor>-<dark|light>, for example lumina-rayleigh-dark or
lumina-aurora-light, in every editor. Quartz adds
lumina-quartz-dark-contrast and lumina-quartz-light-contrast: text
above 16:1, comments above 6:1, every code colour at 7:1 or more (WCAG
AAA).
The theme files are generated: please do not edit them by hand. Open an issue for a colour that lands wrong, an unreadable surface or a missing package; name the face or highlight group and attach a screenshot.
MIT.