README.md

July 20, 2026 · View on GitHub

Sora

A dark Neovim colorscheme. Ethereal cyan, cool silver, deep OLED blacks.

Install · Configure · Palette · Plugins · Extras

CI


Sora Preview

Philosophy

Sora sits between Tokyo Night's saturation and Lume's muted pastels. The background is near-black with a cool blue undertone, deep enough for OLED. Syntax colors are muted but readable - they don't compete with each other.

The signature ethereal cyan (#80c8e0) for functions is lighter and softer than Tokyo Night's blue, cooler than Lume's lavender. A single warm accent - gold (#d4b878) for constants and numbers - acts like a star against the cool palette. That one warm point in a field of cool tones is what gives Sora its look.

Eight named accents, each with a clear role. No neon, no Christmas tree.

Installation

lazy.nvim
{
  "Aejkatappaja/sora",
  lazy = false,
  priority = 1000,
  opts = {},
  config = function(_, opts)
    require("sora").setup(opts)
    vim.cmd("colorscheme sora")
  end,
}
packer.nvim
use {
  "Aejkatappaja/sora",
  config = function()
    require("sora").setup()
    vim.cmd("colorscheme sora")
  end,
}
mini.deps
MiniDeps.add("Aejkatappaja/sora")
require("sora").setup()
vim.cmd("colorscheme sora")

Configuration

Defaults - pass only what you want to change:

require("sora").setup({
  transparent = false,      -- transparent background (also strips float/statusline bg)
  italic = true,            -- italics globally
  italic_comments = true,   -- italics for comments (ignored if italic = false)

  on_colors = function(colors) end,        -- override palette before highlights build
  on_highlights = function(hl, colors) end, -- override highlight groups after they build
})

Recipes

Transparent background
require("sora").setup({ transparent = true })
No italics
require("sora").setup({ italic = false })
-- or keep italics everywhere but comments:
require("sora").setup({ italic_comments = false })
Pure black OLED background
require("sora").setup({
  on_colors = function(colors)
    colors.bg = "#000000"
    colors.bg_float = "#000000"
    colors.bg_statusline = "#000000"
  end,
})
Tweak a syntax color

on_colors runs before highlights build, so changing a palette key repaints every group that uses it. Keys live in lua/sora/palette.lua.

require("sora").setup({
  on_colors = function(colors)
    colors.func = "#a0d8f0"  -- brighter functions
    colors.string = colors.sage
  end,
})
Override highlight groups

on_highlights runs last and wins over everything. Use it for per-group control.

require("sora").setup({
  on_highlights = function(hl, colors)
    hl.Comment = { fg = colors.fg_comment, italic = true }
    hl.LineNr = { fg = colors.fg_gutter }
    hl.CursorLineNr = { fg = colors.cyan, bold = true }
    hl.FloatBorder = { fg = colors.border, bg = colors.bg_float }
  end,
})

Palette

RoleColorHex
Background#0e1018
Foreground#c8d0e0
Cyan#80c8e0
Purple#b0a0d8
Sage#90c8a0
Peach#d0a888
Gold#d4b878
Rose#d0909c
Teal#78b8b0
Steel#8898b8

Supported Plugins

Sora includes highlight groups for:

Full Treesitter and LSP semantic token support.

Lualine

require("lualine").setup({
  options = { theme = "sora" },
})

Extras

Sora everywhere:

AppFileInstall
Zedsora-themeExtensions > search "Sora", or view in directory
Ghosttyextras/ghostty/soracp to ~/.config/ghostty/themes/
Kittyextras/kitty/sora.confinclude in kitty.conf
Alacrittyextras/alacritty/sora.tomlimport in alacritty.toml
WezTermextras/wezterm/sora.tomlcp to ~/.config/wezterm/colors/
Footextras/foot/sora.iniinclude in foot.ini
Vimextras/vim/sora.vimcp to ~/.vim/colors/
Helixextras/helix/sora.tomlcp to ~/.config/helix/themes/, then set theme = "sora"
Lazygitextras/lazygit/sora.ymlmerge into config.yml
batextras/bat/sora.tmThemecp to $(bat --config-dir)/themes/ + bat cache --build
Deltaextras/delta/sora.gitconfiginclude in .gitconfig (install bat theme first)
Hunkextras/hunk/sora.tomlcp to ~/.config/hunk/config.toml, or merge the [custom_theme] block
OpenCodeextras/opencode/sora.jsoncp to ~/.config/opencode/themes/
fzfextras/fzf/sora.shsource in shell rc
ezaextras/eza/sora.shsource in shell rc
Starshipextras/starship/sora.tomlcp to ~/.config/starship.toml, or merge the [palettes.sora] block
Yaziextras/yazi/sora.tomlcp to ~/.config/yazi/theme.toml
btopextras/btop/sora.themecp to ~/.config/btop/themes/
tmuxextras/tmux/sora.tmux.confsource-file in tmux.conf
Herdrextras/herdr/sora.tomlcp to ~/.config/herdr/config.toml, or merge the [theme.custom] block
tokyo-night-tmuxextras/tmux/tokyo-night-tmux-sora.shsee tmux below
Slackextras/slack/sora.txtpaste in Slack sidebar theme
Firefoxextras/firefox/manifest.jsonzip and load via about:debugging
Firefox Start Pageextras/firefox-start/index.htmlset as homepage file://... (edit USER const first)
macOS Terminalextras/macos-terminal/sora.terminaldouble-click to import
iTerm2extras/macos-terminal/sora.itermcolorsimport in Preferences > Profiles > Colors
Obsidiansora-obsidianSettings > Appearance > Themes > Manage > search "Sora", or view in directory

tmux

For a basic tmux setup, add to your tmux.conf:

source-file /path/to/sora.nvim/extras/tmux/sora.tmux.conf

If you use tokyo-night-tmux, paste the contents of extras/tmux/tokyo-night-tmux-sora.sh into the plugin's src/themes.sh (before the default *) case), then add to your tmux.conf:

set -g @tokyo-night-tmux_theme "sora"

License

MIT