David Hurt258 downloadsA pixel-art Obsidian theme with light and dark palettes, optional classic or detailed forests, and Style Settings customization.

A highly customizable pixel-art Obsidian theme with 12 configuration options for landscapes, typography, reading width and icons through Style Settings. Warm lanterns, forest greens and stepped details create a quiet place to write. Version 0.4.4. Original theme by David Hurtado.
Inspired by the atmosphere of Kingdom Two Crowns, with original scenery and no extracted game assets. Choose a simple pixel interface, a chunky classic forest, or a more detailed landscape — all in light and dark mode.
Download the latest release · Configuration · Typography
The opening screenshot shows Classic forest, with larger pixel clusters and simpler silhouettes. Light mode is on the upper-left side of each comparison; dark mode is on the lower-right. These are user-supplied captures of Obsidian.

Turn Enable forest off for a clean background. The pixel typography, square controls and theme colors remain.

Enable the forest and select Detailed — more detail for finer textures. For the chunky artwork shown at the top, select Classic pixel — less detail. These three backgrounds × two color schemes make the six looks shown here.
All three screenshots use optional pixel note text. On a fresh install, note paragraphs keep your reading font and the forest is off.
In Obsidian, open Settings → Appearance → Themes → Manage, search for Lanternwood, then install and use it.
For manual installation:
Lanternwood folder into your vault's
.obsidian/themes/ directory. It contains manifest.json and theme.css.Alternatively, download manifest.json and theme.css from the same release
and place both in .obsidian/themes/Lanternwood/. Version 0.2.3 removed the
installation version restriction and no longer requires Obsidian Early Access.
For manual updates, replace those two files with the files from the newer release.
The forest is off by default in a fresh install. The pixel theme works without Style Settings. Font, original glyphs and all four landscapes are embedded in CSS: no external asset folders, internet connection, font installation or API key are needed at runtime. The complete CSS remains below 1 MB. The four landscapes use compressed WebP at their original 2172×724 dimensions; the original PNGs remain in the repository. WebP compression is lossy. The build is checked against a 1 MB project budget.
Choose Landscape style in Style Settings:
Each style has its own matching day/night pair. This selection changes the artwork, not the typography, opacity, forest height or editor layout.
Dark mode: midnight blue, sage green and amber, with illuminated cottages and a moonlit forest. Light mode: pale parchment, moss green and warm brown, with the corresponding daytime landscape. The correct image follows Obsidian's light/dark setting automatically.
The forest sits behind the workspace, with adjustable transparency and a soft vertical fade. It never reserves space or intercepts clicks: notes retain the full editor height with the forest on or off. Menus and toolbars retain their surfaces. The panorama preserves its proportions and crops to fit; its visible area changes with the window size and chosen background height. It is static.
Open Settings → Style Settings → Lanternwood. There are 12 controls in two groups. All option labels and descriptions are in English, regardless of Obsidian's interface language. Changes apply immediately.
The tables give fresh-install defaults. Your saved preferences can differ. Use the reset arrow next to a modified control to return it to its default.
| Control | Default | Available values | What it does |
|---|---|---|---|
| Enable forest | Off | On / Off | Shows the landscape behind the editor and sidebars. Also adds a forest toggle to the command palette. Disabling it leaves the rest of the pixel theme active. |
| Landscape style | Classic pixel — less detail | Classic pixel — less detail / Detailed — more detail | Chooses simpler shapes and larger pixel clusters, or the finer-textured original artwork. Both include matching day and night images. Only the scenery changes. |
| Background height | 360 px | 100–600 px, in steps of 10 | Sets how far the backdrop rises from the bottom of the workspace. Its top fades into the background. This does not reserve space or shorten the editor. |
| Forest opacity | 0.4 | 0.1–0.8, in steps of 0.05 | Controls transparency: lower values blend the scenery more gently into the workspace; higher values make it more visible behind the text. |
| Forest brightness | 1 | 0.5–1.2, in steps of 0.05 | Adjusts the image's brightness: 1 keeps the original brightness, values below 1 darken it and values above 1 brighten it. |
Opacity and brightness are independent. Lower opacity for a quieter reading background; lower brightness when the image itself feels too bright. Height, style, opacity and brightness become visible when the forest is enabled.
The actual height is limited to 75% of the viewport on desktop, 65% in windows up to 800 px wide, and 60% in mobile mode. The image keeps its proportions and may crop as the window changes size. A tall, opaque forest deliberately reaches farther behind the note, reducing contrast near the bottom. Light and dark modes use the same control values, with different artwork.
| Control | Default | Available values | What it does |
|---|---|---|---|
| Pixel font | Departure Mono | Departure Mono / Pixelify Sans / Silkscreen | Selects the font everywhere the theme uses pixel typography, including tabs and properties. Applies to paragraphs when pixel note text is enabled. |
| Use Obsidian fonts everywhere | Off | On / Off | Disables pixel typography across the whole theme, including tabs and properties. Uses Text font, Interface font and Monospace font from Settings → Appearance. Overrides the other pixel font controls. |
| Use reading font for headings | Off | On / Off | Replaces the pixel heading font with the reading font. Applies to note headings, the inline title and callout titles. Leave off for pixel headings. |
| Use regular interface font for navigation | Off | On / Off | Uses your regular interface font for the file explorer, outline, view-header title, settings labels, buttons and dropdowns. Leave off for pixel navigation. |
| Use pixel font for note text | Off | On / Off | Uses the selected pixel font for note text in editing and reading views, using the font size selected in Settings → Appearance. When off, paragraphs use your Obsidian reading font. |
| Reading width | 760 px | 520–1000 px, in steps of 20 | Sets the target readable line width. Requires Obsidian's Settings → Editor → Readable line length to be enabled; the available pane width still limits it. |
| Use native Obsidian icons | Off | On / Off | Restores native icons in place of the theme's 16 custom pixel glyph designs and their aliases. Icons outside that custom set already retain their native appearance. |
Use Obsidian fonts everywhere takes precedence over all other typography controls. Turn it off to resume your saved pixel font selection. The narrower heading and navigation switches remain available for mixing pixel and regular fonts. Property names keep their borderless styling with either font mode.
The light/dark color scheme, your text font, interface font, monospace font and regular font size are configured in Obsidian's Appearance settings. Lanternwood uses those preferences where it does not explicitly apply pixel typography. All three pixel fonts follow the standard Font size setting in editing and reading views. Readable line length is an Obsidian Editor setting; Lanternwood's width slider works with it.
There is no separate day/night switch, animation control or independent sidebar forest toggle: the landscape follows the color scheme and spans the workspace.
New in 0.4.4: Departure Mono is the default pixel font, including without Style Settings. Pixelify Sans and Silkscreen remain available, and existing saved selections are preserved. A previously removed font falls back to Departure Mono until you choose another available option.

User-supplied Obsidian screenshot in light mode, with Departure Mono applied to navigation, headings and note text.
Try the fonts with your own notes. Pixel typography is optional: if none feels comfortable for reading, disable it and use any font available in Obsidian's standard Appearance settings instead.
Open Settings → Style Settings → Lanternwood → Typography and reading. Leave Use Obsidian fonts everywhere off and choose Pixel font:
| Font | Character and suggested use |
|---|---|
| Departure Mono (default) | Monospaced pixel typeface by Helena Zhang. Complete version 1.500, with regular weight and Latin, Greek, Cyrillic and box-drawing glyphs. |
| Pixelify Sans | The original Lanternwood look; variable weights 400–700. |
| Silkscreen | Bold arcade character and uppercase-shaped letters. Includes regular and bold. Try it in titles and navigation before using it for longer notes. |
The selection applies to pixel headings, navigation, tabs, title/status bars, modal titles and properties. Enable Use pixel font for note text to apply it to paragraphs too. Text size follows Settings → Appearance → Font size, including when pixel typography is enabled. The separate heading and navigation switches let you keep your reading or interface font in those areas.
This single switch disables pixel typography across the theme, even if Use pixel font for note text is still enabled. It preserves your other choices, so switching it off restores your pixel setup. The forest, colors, layout and icon preferences stay independent of the font choice.
All three bundled fonts work offline without installation. Departure Mono uses the complete, unmodified upstream WOFF2; its author recommends multiples of 11 px for pixel-perfect rendering. Font sizes remain freely adjustable. Pixelify Sans and Silkscreen use compact WOFF2 subsets with Latin and Latin Extended characters, Spanish accents and ñ, combining accents, punctuation, currency and arrows where supported by the originals. Unsupported characters use system fallbacks. The two subset families use a Lanternwood prefix; Departure Mono retains its original family name. The selector displays the original font names.
All three use the SIL Open Font License 1.1, separately from the theme's MIT license. Sources and notices are retained; see THIRD_PARTY_NOTICES.md. Copyright notices and the OFL terms are also embedded in the CSS. Sources: Departure Mono, Pixelify Sans and Silkscreen.
Standard headings, tasks, links, tables, code, tags, quotes, properties and callouts are styled. Two optional callouts add a lantern or woodland accent:
> [!lantern] Something to remember
> Leave room for new ideas.
> [!forest] A forest of connections
> Good notes open new paths.
[!remember] is an alias for the lantern callout.
Requires Node.js and npm. No build step is needed for users installing the ZIP.
npm ci --ignore-scripts
npm run build
npm run lint
npm run lint:compat
npm run check
npm run optimize:assets regenerates the bundled WebP images from the original
PNGs using Sharp (quality 75, no resizing). The generated WebP files are committed,
so ordinary builds do not need to recompress them.
scripts/optimize-fonts.py regenerates the committed WOFF2 subsets using Python,
FontTools and Brotli. Normal builds use those committed files without Python.
src/theme.css is the editable CSS. scripts/build.mjs embeds the font,
day/night WebP images, font license and original 16×16 SVG glyphs into theme.css.
npm run install:dev is a local maintainer helper: it assumes the repository
is at <vault>/Development/lanternwood and installs two levels above the
repository. Do not use that helper from an arbitrary clone location. scripts/check.mjs checks CSS, YAML settings, version synchronization,
asset completeness and offline packaging. scripts/ui-qa.mjs uses the Obsidian
CLI against @Obsidian-dev, temporarily changes appearance settings and restores
them; it never modifies note content.
See VALIDATION.md for actual coverage and limitations.
Lanternwood is released under the MIT License. Copyright © 2026 David Hurtado.
You may use, copy, modify and distribute the theme, including for commercial purposes, provided you retain the copyright and license notice. The theme is provided "as is", without warranty. See the full license for its terms.
The two bundled fonts use the SIL Open Font License 1.1 separately from the MIT license. Copyright notices and full licenses are embedded in the CSS and included with release ZIPs. See THIRD_PARTY_NOTICES.md.
assets/.Published releases are available on GitHub. The theme has not been submitted to the Community Themes directory. Choose another theme in Appearance to deactivate it.
Version 0.4.3 removes CSS masks entirely. Pixel icons use small CSS gradient blocks that inherit each control's color; checkbox marks use the same technique. The four WebP landscapes include their own transparent top fade, so the forest still blends into the editor. Opacity, brightness, height, landscape style and native-icon settings remain available.
The landscape is aligned to the top to keep its transparent edge visible. Its crop and fade extent can differ slightly from earlier releases as the window changes shape. Original PNG artwork is preserved; npm run optimize:assets recreates the alpha-faded WebP assets reproducibly.
Both the normal lint and an additional Chromium 114 compatibility check pass with zero warnings. The extra check reproduces the 100 mask warnings in 0.4.2 and reports none in 0.4.3, without suppressing the rule. This removes the source of the reported css-masks warning; it is not a certification of every theme feature on historical Obsidian versions. The remote Community Themes validator must still run against the updated file.