Praxis is a warm, focused Obsidian theme built from Minimal's proven foundation and shaped around a compact Praxis design system. It supports light and dark mode, but it is intentionally designed as a dark-first theme. It includes an Obsidian Publish companion stylesheet and keeps the Minimal-style helper classes that make notes, tables, image galleries, dashboards, and Dataview views easier to compose.

[!author] callout and |noicon callout metadata supportpublish.css for Obsidian PublishPraxis in your vault at .obsidian/themes/Praxis.theme.css and manifest.json to that folder.Praxis.BRAT can install Praxis directly from GitHub while the theme is in beta or before it is listed in the community theme catalog.
BRAT community plugin.https://github.com/voi-tech/obsidian-praxis.Praxis.Praxis targets Obsidian 1.13.0 or newer and works on desktop and mobile. It uses modern CSS selectors, including :has(), for Minimal-compatible media and table helpers.
Praxis works without plugins, and its Style Settings-backed features are enabled by default in the base theme. If you install the optional Style Settings community plugin, Praxis exposes a small set of controls for the same defaults:
Praxis intentionally does not mirror the full Minimal Style Settings surface. Broader typography, color, and layout preferences should be managed through Obsidian's built-in Appearance settings or custom snippets.
Add helper classes with the cssclasses property in your note:
---
cssclasses:
- cards
- table-wide
---
wide expands the readable line widthmax expands content to the maximum available widthtable-100, table-full, table-wide, table-maxtable-small, table-tiny, table-nowrap, table-wrap, table-tabulartable-center, table-lines, table-numbersrow-hover, row-alt, row-lines, row-lines-off, col-alt, col-linestable-col-1-150, table-col-1-200cards turns compatible tables into card gridslist-cards turns top-level lists into card gridscards-cover crops images to fill their card image areacards-align-bottom pushes the last card field to the bottomcards-16-9, cards-1-1, cards-2-1, cards-2-3 set image aspect ratioscards-cols-1 through cards-cols-8 force a specific number of columnsimg-100, img-wide, img-max, img-grid, img-grid-ratioiframe-100, iframe-wide, iframe-maxmap-100, map-wide, map-maxchart-100, chart-wide, chart-maxAdd these suffixes to image embeds:
#outline adds a subtle border#interface adds a framed interface treatment#invert inverts images in dark mode#invertW inverts images in light mode#circle crops the image into a circlehide-title hides the inline titlealt-title hides the inline title for notes that provide their own first headingh1-borders adds a divider treatment to H1 headingsPraxis includes custom task icons for /, -, >, <, ?, !, *, quote, l, b, i, S, I, p, c, f, k, w, u, d, +, B, a, n, R, t, P, and L.
It also supports [0] through [9] task states as horizontal progress bars, from 0% ([0]) to 90% ([9]).
Callouts use Lucide-based icons. The custom [!author] callout is styled for quotes and attributions. Add |noicon metadata to a callout to hide its icon.
publish.css is a companion stylesheet for Obsidian Publish. It shares Praxis colors, typography, callouts, cards, table helpers, image helpers, and media width helpers while staying separate from the app theme.
To use it, publish publish.css at the root of your Publish vault. Style Settings does not run on Obsidian Publish, so Publish customization should be done directly through CSS variables in publish.css.
Praxis is a fork and substantial adaptation of Minimal by Steph Ango. It uses Minimal as its foundation for Obsidian app structure, helper classes, compatibility patterns, and Publish-oriented thinking, then adds the Praxis design layer: warm palettes, compact spacing, task treatments, callout styling, Properties refinements, and a companion publish.css.
Minimal is released under the MIT License. Praxis preserves the copyright and license notice in theme.css and is also released under the MIT License.
If Praxis is useful to you, please also support the original Minimal project.