Jay Leimer136 downloadsSlate: a dense, calm, monospace theme for Obsidian, based on the Slate design system
![]()
A dense, calm, keyboard-first theme for Obsidian.
One monospace typeface, square edges, hard offset shadows and a single ember accent.

Slate is the Obsidian version of the Slate design system: the same tokens (colours, type, spacing, shadows), applied to Obsidian's own variables so core UI, notes and most plugins follow them. It has a light and a dark variant and follows Obsidian's Appearance → Base color scheme setting.
From Obsidian: Settings → Appearance → Themes → Manage, search for Slate, then Install and use. Updates arrive through the same dialog.
By hand (for example in a vault without internet access): download theme.css and manifest.json from the latest release into a folder named Slate inside <your vault>/.obsidian/themes/, then pick Slate under Settings → Appearance → Themes.
Nothing is loaded from the network: the font is embedded in theme.css as a Latin subset (scripts/subset-fonts.py).
| Light | Dark | |
|---|---|---|
| Live Preview | ![]() |
![]() |
| Reading view | ![]() |
![]() |

#e8823a) is the one brand colour. It fills the call to action and the chosen row, and is never used as text: links use a darker ember (accent-text) that keeps its contrast.The tokens live in src/01-tokens.css under the --sl- prefix, and src/02-variables.css maps them onto Obsidian's variables, so you can retune the theme from your own CSS snippet:
/* .obsidian/snippets/slate-tweaks.css */
body {
--font-text-size: 15px;
}
.theme-dark {
--sl-color-accent: #4aa3ff; /* a different accent, dark mode only */
}
Tested in a real Obsidian on 1.8.10 and the latest release (1.14), light and dark, desktop. manifest.json asks for 1.8.10 or newer. Plugins that draw their own UI usually pick the colours up through Obsidian's variables; if one does not, open an issue with a screenshot.
npm install
npm run build # builds theme.css from src/*.css and fonts/
npm run check # theme.css is up to date; manifest and CSS rules
npm run screenshots # drives a real Obsidian and writes test/screenshots/*.png
theme.css is generated: edit the files in src/, run npm run build and commit both. See CONTRIBUTING.md.
Slate is free and open source. If you like it, you can buy me a coffee.
theme.css as a Latin subset (scripts/subset-fonts.py).