48 stars

sora.

A Neovim colorscheme the color of the sky before dawn. Deep blue-black, cool silver, one ethereal cyan.

Neovim colorscheme one palette, everywhere MIT licensed
sora.lua

In every language

One palette, every syntax tree

Cyan carries functions, purple the keywords, sage the strings, gold the constants. The roles hold whether you write Lua, TypeScript, Rust, or Python.

gitsigns · diff
14  local ok = pcall(require, "sora")
15 +  vim.o.background = "dark"
16 +  vim.cmd.colorscheme("sora")
17 -  vim.cmd.colorscheme("default")
18  return ok

Made for long sessions

Low-glare backgrounds and silver-cool text keep contrast legible without the glare. Warm accents appear only where meaning lives.

NORMAL main sora.lua lua 14:2

The palette

Twenty-one colors, one sky

Click a syntax color to spotlight it in the live sample. Click a background to repaint the editor. Every value copies to your clipboard.

Legible by design

Contrast that holds up

Measured WCAG contrast on the base background, not guessed. Text and accents clear AA and AAA; comments sit deliberately quiet.

Yours to tune

Sensible defaults, full control

Pass only what you want to change. Two hooks, on_colors and on_highlights, let you reshape the palette or override any group.

Transparent

Let your terminal background show through floats and statusline.

require("sora").setup({ transparent = true, })

Italics, your call

Keep them everywhere, drop them for comments, or turn them all off.

setup({ italic = false }) -- or comments only: setup({ italic_comments = false })

OLED black

Repaint the palette before highlights build with on_colors.

on_colors = function(c) c.bg = "#000000" end

Override any group

on_highlights runs last and wins over everything.

on_highlights = function(hl, c) hl.Comment = { fg = c.teal } end

Sora everywhere

One palette, every surface

The editor is only the start. Terminals, prompts, pagers, and note-takers all ship in extras/. Click any command to copy it.

copied