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.
{
"Aejkatappaja/sora",
lazy = false,
priority = 1000,
opts = {},
config = function(_, opts)
require("sora").setup(opts)
vim.cmd("colorscheme sora")
end,
}
use {
"Aejkatappaja/sora",
config = function()
require("sora").setup()
vim.cmd("colorscheme sora")
end,
}
MiniDeps.add("Aejkatappaja/sora")
require("sora").setup()
vim.cmd("colorscheme sora")
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
})
require("sora").setup({ transparent = true })
require("sora").setup({ italic = false })
-- or keep italics everywhere but comments:
require("sora").setup({ italic_comments = false })
require("sora").setup({
on_colors = function(colors)
colors.bg = "#000000"
colors.bg_float = "#000000"
colors.bg_statusline = "#000000"
end,
})
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,
})
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,
})
| Role | Color | Hex |
|---|---|---|
| Background | #0e1018 |
|
| Foreground | #c8d0e0 |
|
| Cyan | #80c8e0 |
|
| Purple | #b0a0d8 |
|
| Sage | #90c8a0 |
|
| Peach | #d0a888 |
|
| Gold | #d4b878 |
|
| Rose | #d0909c |
|
| Teal | #78b8b0 |
|
| Steel | #8898b8 |
Sora includes highlight groups for:
Full Treesitter and LSP semantic token support.
require("lualine").setup({
options = { theme = "sora" },
})
Sora everywhere:
| App | File | Install |
|---|---|---|
| Zed | sora-theme | Extensions > search "Sora", or view in directory |
| Ghostty | extras/ghostty/sora |
cp to ~/.config/ghostty/themes/ |
| Kitty | extras/kitty/sora.conf |
include in kitty.conf |
| Alacritty | extras/alacritty/sora.toml |
import in alacritty.toml |
| WezTerm | extras/wezterm/sora.toml |
cp to ~/.config/wezterm/colors/ |
| Foot | extras/foot/sora.ini |
include in foot.ini |
| Vim | extras/vim/sora.vim |
cp to ~/.vim/colors/ |
| Helix | extras/helix/sora.toml |
cp to ~/.config/helix/themes/, then set theme = "sora" |
| Lazygit | extras/lazygit/sora.yml |
merge into config.yml |
| bat | extras/bat/sora.tmTheme |
cp to $(bat --config-dir)/themes/ + bat cache --build |
| Delta | extras/delta/sora.gitconfig |
include in .gitconfig (install bat theme first) |
| Hunk | extras/hunk/sora.toml |
cp to ~/.config/hunk/config.toml, or merge the [custom_theme] block |
| OpenCode | extras/opencode/sora.json |
cp to ~/.config/opencode/themes/ |
| fzf | extras/fzf/sora.sh |
source in shell rc |
| eza | extras/eza/sora.sh |
source in shell rc |
| Starship | extras/starship/sora.toml |
cp to ~/.config/starship.toml, or merge the [palettes.sora] block |
| Yazi | extras/yazi/sora.toml |
cp to ~/.config/yazi/theme.toml |
| btop | extras/btop/sora.theme |
cp to ~/.config/btop/themes/ |
| tmux | extras/tmux/sora.tmux.conf |
source-file in tmux.conf |
| Herdr | extras/herdr/sora.toml |
cp to ~/.config/herdr/config.toml, or merge the [theme.custom] block |
| tokyo-night-tmux | extras/tmux/tokyo-night-tmux-sora.sh |
see tmux below |
| Slack | extras/slack/sora.txt |
paste in Slack sidebar theme |
| Firefox | extras/firefox/manifest.json |
zip and load via about:debugging |
| Firefox Start Page | extras/firefox-start/index.html |
set as homepage file://... (edit USER const first) |
| macOS Terminal | extras/macos-terminal/sora.terminal |
double-click to import |
| iTerm2 | extras/macos-terminal/sora.itermcolors |
import in Preferences > Profiles > Colors |
| Obsidian | sora-obsidian | Settings > Appearance > Themes > Manage > search "Sora", or view in directory |
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"
MIT