Karasu is an atmospheric, terminal-first colorscheme with two variants: Night (dark) and Snow (light).
palette/ # Source of truth
platforms/ # Platform packages
scripts/ # Build + consistency checks
lua/ # Neovim plugin
colors/ # Neovim entrypoints
Manual per-app install is the default and safest path. The sections below only add theme files unless you choose otherwise.
{
'scozu/karasu',
lazy = false,
priority = 1000,
config = function()
require('karasu').setup({ mode = "night" }) -- "night", "snow", "auto"
end
}Colorscheme commands:
:colorscheme karasu-night
:colorscheme karasu-snow
mkdir -p ~/.config/ghostty/themes
cp /path/to/karasu/platforms/ghostty/karasu-night ~/.config/ghostty/themes/
cp /path/to/karasu/platforms/ghostty/karasu-snow ~/.config/ghostty/themes/Config example:
theme = dark:karasu-night,light:karasu-snow
mkdir -p ~/.config/zed/extensions/karasu
cp -r /path/to/karasu/platforms/zed/* ~/.config/zed/extensions/karasu/Select Karasu Night or Karasu Snow in Zed.
Karasu for Obsidian is delivered as a CSS snippet on top of Minimal.
mkdir -p "<vault>/.obsidian/snippets"
cp /path/to/karasu/platforms/obsidian/snippets/karasu-minimal.css "<vault>/.obsidian/snippets/"In Obsidian:
- Enable Minimal theme.
- Enable
karasu-minimal.cssinSettings -> Appearance -> CSS snippets. - In Minimal Theme Settings, set light/dark color schemes to
Default.
mkdir -p ~/.config/opencode/themes
cp /path/to/karasu/platforms/opencode/themes/karasu.json ~/.config/opencode/themes/~/.config/opencode/tui.json:
{
"$schema": "https://opencode.ai/tui.json",
"theme": "karasu"
}karasu follows OpenCode's built-in theme pattern: Karasu Night in dark mode and Karasu Snow in light mode.
Karasu OpenCode themes use explicit hex values for stable, deterministic rendering.
Matching your terminal ANSI palette to Karasu (Ghostty/iTerm2) is optional, but improves cross-tool consistency.
OpenCode loads custom themes from ~/.config/opencode/themes, <project>/.opencode/themes, and ./.opencode/themes, with later locations taking priority.
For full color fidelity, make sure your terminal is running in truecolor mode.
"theme" as a plain string in tui.json is the current OpenCode standard.
Use the VS Code extension in platforms/vscode/.
Cursor note: the same VS Code extension works in Cursor (no separate Cursor package needed).
bun run ./scripts/build-themes.mjsPackage with vsce package if you want a VSIX.
Marketplace links will be added here after the first public release.
This helper script copies Karasu theme files for Ghostty, OpenCode, and Zed in one run:
./scripts/install-all.shBy default it does not edit app config files and does not run Neovim sync.
Examples:
# Configure OpenCode theme safely (with backup)
./scripts/install-all.sh --configure-opencode
# Sync Neovim plugin and auto-stash dirty local edits first
./scripts/install-all.sh --sync-neovim --neovim-auto-stashRegenerate themes:
bun run ./scripts/build-themes.mjsCheck cross-platform color consistency:
bun run ./scripts/check-consistency.mjsNeovim smoke checks:
bun run ./scripts/check-neovim-smoke.mjsOpenCode compatibility checks:
bun run ./scripts/check-opencode-config-compat.mjsbun run ./scripts/build-themes.mjsbun run ./scripts/check-consistency.mjsbun run ./scripts/check-vscode-theme.mjsbun run ./scripts/check-neovim-smoke.mjsbun run ./scripts/check-opencode-config-compat.mjs- Validate a fresh asset install with
./scripts/install-all.sh
- If OpenCode is not picking up Karasu, set
"theme": "karasu"in~/.config/opencode/tui.jsonand rerun./scripts/install-all.sh --configure-opencode. - If OpenCode still shows the wrong custom theme, check for higher-precedence overrides in
tui.json,<project>/.opencode/themes/, or./.opencode/themes/. - If Neovim shows highlight-group spam on startup after updating Karasu, run:
nvim --headless '+Lazy! sync karasu' +qa- or run
./scripts/install-all.sh --sync-neovim --neovim-auto-stash.
Karasu draws inspiration from all of these excellent themes:

