scalar-themes
v1.0.0
Published
Scalar-based color themes for Ghostty, Neovim, Zed, OpenCode, and Warp
Maintainers
Readme
Light

Dark

Install
One command to theme everything. Zero dependencies.
# pnpm (recommended)
pnpm dlx scalar-themes
# npx
npx scalar-themes
# yarn
yarn dlx scalar-themes
# bun
bunx scalar-themesThe interactive CLI lets you pick which tools to theme:
Scalar Themes
Scalar-based color themes for your terminal and editor
Select tools to theme:
Space to toggle, Enter to confirm
> [x] Ghostty terminal emulator
[x] Neovim editor (LazyVim compatible)
[x] Zed text editor
[x] OpenCode AI coding agent
[x] Warp terminal emulatorOr install specific tools directly:
pnpm dlx scalar-themes ghostty zed
pnpm dlx scalar-themes --allSupported Tools
| Tool | Theme Files | Install Method |
|---|---|---|
| Ghostty | scalar-dark, scalar-light | Generated from Scalar palette and written to Ghostty themes dir (docs) |
| Neovim | scalar.lua, scalar-dark.lua, scalar-light.lua | Copied to ~/.config/nvim/colors/ + lualine theme |
| Zed | scalar.json | Copied to ~/.config/zed/themes/ (docs) |
| OpenCode | scalar-adaptive.json | Copied to ~/.config/opencode/themes/ |
| Warp | scalar_dark.yaml, scalar_light.yaml | Copied to ~/.warp/themes/ |
What It Does
Each installer follows the tool's idiomatic configuration method:
Ghostty -- Generates theme files from the Scalar palette and writes them into Ghostty's active config directory themes folder(s), then updates your config to use theme = dark:scalar-dark,light:scalar-light. On Ghostty >= 1.3.0, the installer uses palette-generate = true with ANSI colors (0-15). On older or unknown versions, it writes explicit palette entries 16-255 for compatibility.
Neovim -- Copies colorscheme files to ~/.config/nvim/colors/ and a lualine theme to lua/lualine/themes/. For LazyVim users, it also creates a plugin spec at lua/plugins/scalar-theme.lua that sets the colorscheme automatically. Works with standard Neovim too. Supports dark/light via vim.o.background, terminal ANSI colors, and optional vim.g.scalar_theme_config overrides.
Zed -- Copies scalar.json into Zed's local themes directory and sets "dark": "Scalar Dark" / "light": "Scalar Light" in your settings.
OpenCode -- Copies scalar-adaptive.json into OpenCode's themes directory. The file uses { "dark": ..., "light": ... } per-key variants, so it auto-adapts to your terminal appearance.
Warp -- Copies scalar_dark.yaml and scalar_light.yaml into ~/.warp/themes/. Warp auto-discovers themes in this directory. Select from Settings > Appearance > Themes.
Manual Setup
Copy the theme files into Ghostty's custom themes directory:
# macOS + Linux (XDG path; Ghostty checks this on all platforms)
mkdir -p ~/.config/ghostty/themes
cp themes/ghostty/scalar-dark themes/ghostty/scalar-light ~/.config/ghostty/themes/On macOS, Ghostty also supports ~/Library/Application Support/com.mitchellh.ghostty/ as a secondary config location.
On Ghostty >= 1.3.0, these files rely on palette-generate (enabled by default) to derive colors 16-255 from the base ANSI colors. If you use an older Ghostty build, prefer the installer command (pnpm dlx scalar-themes ghostty) so it can write an explicit compatibility palette.
Then add to your Ghostty config:
theme = dark:scalar-dark,light:scalar-lightCopy the colorscheme and lualine theme:
cp themes/neovim/colors/scalar*.lua ~/.config/nvim/colors/
mkdir -p ~/.config/nvim/lua/lualine/themes
cp themes/neovim/lua/lualine/themes/scalar.lua ~/.config/nvim/lua/lualine/themes/LazyVim: Create ~/.config/nvim/lua/plugins/scalar-theme.lua:
return {
{ "LazyVim/LazyVim", opts = { colorscheme = "scalar" } },
}Standard Neovim: Add to your init.lua:
vim.cmd.colorscheme("scalar")Optional theme config (set before loading the colorscheme):
vim.g.scalar_theme_config = {
transparent = false,
transparent_floats = false,
terminal_colors = true,
dim_inactive = false,
show_end_of_buffer = false,
styles = {
comments = { italic = true },
keywords = {},
functions = {},
variables = {},
},
}
vim.cmd.colorscheme("scalar")Legacy compatibility toggle:
vim.g.scalar_transparent = trueThree colorscheme names are available:
scalar-- respectsvim.o.background(dark or light)scalar-dark-- forces darkscalar-light-- forces light
# macOS + Linux
cp themes/zed/scalar.json ~/.config/zed/themes/
# Windows (PowerShell)
Copy-Item themes/zed/scalar.json "$env:APPDATA\Zed\themes\scalar.json"Then in your Zed settings.json:
{
"theme": {
"mode": "system",
"light": "Scalar Light",
"dark": "Scalar Dark"
}
}mkdir -p ~/.config/opencode/themes
cp themes/opencode/scalar-adaptive.json ~/.config/opencode/themes/Then in ~/.config/opencode/opencode.json:
{
"theme": "scalar-adaptive"
}mkdir -p ~/.warp/themes
cp themes/warp/scalar_dark.yaml themes/warp/scalar_light.yaml ~/.warp/themes/Then open Warp Settings > Appearance > Themes and select "Scalar Dark" or "Scalar Light".
Palette
All themes derive from the same colors defined in themes/palette.jsonc.
Run npm run check:theme to verify key contrast and palette updates were applied consistently across theme files.
| Role | Hex | |
|---|---|---|
| Background | #0f0f0f | |
| Surface |
#1a1a1a | |
| Highlight |
#272727 | |
| Foreground |
#e7e7e7 | |
| Secondary |
#a4a4a4 | |
| Muted |
#797979 | |
| Green |
#00b648 | |
| Red |
#e53b39 | |
| Yellow |
#ffc90d | |
| Blue |
#4eb3ec | |
| Orange |
#ff8d4d | |
| Purple |
#b191f9 | |
| Role | Hex | |
|---|---|---|
| Background | #ffffff | |
| Surface |
#f6f6f6 | |
| Highlight |
#e7e7e7 | |
| Foreground |
#1b1b1b | |
| Secondary |
#757575 | |
| Muted |
#7d7d7d | |
| Green |
#078657 | |
| Red |
#ef0006 | |
| Yellow |
#987100 | |
| Blue |
#007ac2 | |
| Orange |
#cc4700 | |
| Purple |
#5203d1 | |
Credits
Colors are derived from the Scalar default theme (packages/themes/src/presets/default.css) with small readability-focused contrast adjustments.
