Open-source project
kepano/obsidian-minimal-settings avatar
kepano/obsidian-minimal-settings

obsidian-minimal-settings: putting Minimal Theme options in a settings panel

Settings plugin to control colors and fonts in Minimal Theme

815 stars50 forksTypeScriptMIT

At a glance

What is it?
Minimal Theme for Obsidian exposes a large number of knobs, and this companion plugin surfaces them in the Obsidian settings panel: preset color schemes, background styles, typography, image grids and a set of hotkeys. It is a small TypeScript project with an esbuild pipeline, and it only makes sense alongside the theme itself.
Who is it for?
Adopt obsidian-minimal-settings if you already use Minimal Theme and want its appearance options in one place instead of editing CSS by hand, especially if you switch color schemes or background styles often. Do not adopt it if you use a different theme, since it exists only to configure Minimal, and do not treat it as a general Obsidian appearance plugin.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 33 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A settings front end for one specific theme

Minimal Theme for Obsidian is a theme, which in Obsidian terms means a package of CSS. A theme of that kind exposes its options as CSS custom properties, and the usual way to change them is to edit a snippet by hand in the appearance settings.

This plugin is the alternative to that. It accompanies Minimal Theme and lets you customise the theme from the Obsidian settings panel. The README is careful about the relationship between the two: the plugin is not required to use Minimal Theme, but it is highly recommended. That distinction matters, because Minimal works on its own and the plugin is a convenience layer over it rather than a dependency of the theme.

Its stated requirement list is short: Minimal Theme, and, for the cleanest result, the Hider plugin. Hider is what allows the Obsidian interface to be stripped back, removing the menu ribbon, tooltips, the title bar and scrollbars, so the theme's typography is what you are left looking at. The plugin is written in TypeScript and ships a styles.css alongside the compiled main.js, with an esbuild configuration and an eslint configuration that uses the Obsidian plugin linting rules.

The audience is Obsidian users who have chosen this theme and want to change it without leaving the app, particularly those who switch between color schemes as part of a daily routine.

The preset color schemes and the Style Settings route

The color scheme section offers a list of presets, and the plugin can also build your own through the Style Settings plugin. The presets are the Atom, Ayu, Catppuccin, Dracula, E-ink, Everforest, Flexoki, Gruvbox, macOS, Nord, Rosé Pine, Solarized, Sky and Things schemes.

Two of them carry a qualification. E-ink is marked as beta, which is a reminder that the list mixes long-established palettes with newer ones, and macOS is presumably tied to the appearance of the operating system rather than to a general design system. The rest are community palettes that people already use in their editors and terminals, which is the point of the feature: the theme can match the colour language of the rest of the workflow rather than imposing one.

The Style Settings path is the more interesting of the two, because it is what makes the plugin more than a preset picker. Rather than shipping a fixed set of options, the plugin exposes its settings under the mechanism Style Settings provides, so a user can adjust individual values and keep those adjustments. The trade-off is an extra dependency: customisation beyond the presets means installing another community plugin and accepting its own update cycle.

Hotkeys can also switch between color schemes directly, so the presets are reachable without opening the settings panel at all.

Background styles and how light and dark differ

Beyond color, the plugin offers a set of alternate backgrounds for light and dark mode, and the README is careful to note that the options are not symmetric.

The Default style uses a slightly darker background for the sidebar than for the main panel, which is the conventional arrangement and separates navigation from content without a border. Low contrast uses the same background for sidebar and main panel, which flattens the interface for people who find the panel distinction distracting. High contrast is available in light mode only, and inverts the usual arrangement by using a dark sidebar with a light main panel. True black is available in dark mode only, and makes both the sidebar and the main panel pure black.

The asymmetry is the detail worth remembering. If you switch modes, the background style you had may not be available in the other, so the plugin's hotkeys for cycling light mode styles and cycling dark mode styles are separate commands rather than one shared setting. A user who keeps both modes and expects a matching background is going to find that the two modes have different menus of choices, and the README's parenthetical notes about light mode only and dark mode only are the only warning of that.

These background styles are toggled via hotkeys, which puts them in the same interaction model as everything else the plugin controls.

Typography, layout and content handling

The customization section covers the settings that change how content is laid out rather than how it is coloured.

Fonts and font sizes are there, along with a line width setting that constrains how long a line of text runs, which is the setting that decides whether your notes look like a reading surface or like a document editor. Underline links is a separate toggle, focus mode is available, and custom icons can be supplied.

Then there is a group of width settings for tables, images and iframes, each of which can be cycled between preset widths through a hotkey. Image grids are also there, with their own toggle. For a note-taking app where embedded images and tables are how most content is expressed, these are the settings that change most often, and having them in a panel rather than in a CSS snippet is the whole argument for the plugin.

The pattern across all of this is that every option that a user would plausibly change often has both a settings panel entry and a hotkey. Fonts and font sizes are the exception, in that the size can be increased and decreased by hotkey while the family itself is a setting.

Hotkeys as the primary interface

The hotkey list is long enough that it deserves to be read as the plugin's real interface, with the settings panel as the deeper configuration layer.

The commands are: toggle light or dark mode, cycle between light mode styles, cycle between dark mode styles, switch between color schemes, increase or decrease the font size, toggle image grids, toggle sidebar borders, cycle the image width options, cycle the table width options and cycle the iframe width options.

Every one of those is an action that changes state visibly and immediately, and that is exactly the kind of thing you want on a key rather than behind a menu. The two cycling commands for widths are worth singling out, because they imply a fixed set of preset widths for each element type rather than a numeric field, so the resolution of that choice is the theme author's rather than yours.

The consequence for anyone adopting it is that hotkey assignment is where a conflict will surface. Obsidian has a finite set of keybindings and other plugins claim them too, so the plugin's value depends on its commands being bound to keys that are free in your vault. The README states that hotkeys can be customised to perform these actions, which is the ordinary Obsidian command palette mechanism rather than a feature of this plugin.

Building the plugin from source

The repository is a conventional Obsidian plugin project, and the build is driven by esbuild with a TypeScript check in front of it. The two scripts in package.json show the whole pipeline:

json
"dev": "node esbuild.config.mjs",
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production"

The development script runs the esbuild configuration directly, which is the watch-mode build you use while changing settings definitions. The production build first runs the TypeScript compiler with noEmit and skipLibCheck, so type errors fail the build without producing output, and then runs esbuild in production mode to bundle.

The surrounding files are the ones you would expect: manifest.json holds the plugin metadata Obsidian reads, versions.json maps plugin versions to minimum Obsidian versions, styles.css is the theme-side stylesheet the plugin ships, src holds the TypeScript sources, and tsconfig.json configures the compiler. The development dependencies include the Obsidian API package at version 1.13.1, TypeScript, eslint with the Obsidian plugin lint rules, and esbuild itself.

One detail is worth flagging if you fork it. The package.json in the repository names the package obsidian-minimal-theme and carries the version 8.2.3, while the published releases listed for the project have moved past that, with 9.0.0 released on 2026-07-31. So the version in the working tree lags the released version, which matters if you plan to publish your own build under a different name.

Where obsidian-minimal-settings is the wrong tool

The first and simplest limitation is that the plugin is useless outside Minimal Theme. It does not add a theme, it does not style Obsidian on its own, and its settings mean nothing to another theme. If you are still choosing a theme, or you use something else and want a settings panel for the built-in appearance options, the answer is a different plugin or Obsidian's own settings.

The second is the dependency chain. Hider is what removes the ribbon, tooltips, title bar and scrollbars, and Style Settings is what makes custom color schemes possible. Both are community plugins with their own release schedules, and the interaction between three moving parts is where breakage happens, usually as an option that stops applying after one of them updates.

The third is scope. Everything here is appearance: colors, fonts, widths, icons, image grids. The plugin does not change how Obsidian stores, links or syncs notes, and it does not touch how the theme handles core behaviours such as the editor view or the reading view beyond presentation. If your complaint is about how Obsidian works rather than how it looks, this is not where the fix is.

The fourth is the state of individual entries. E-ink is a beta scheme, and the plugin does not document compatibility between its own versions and particular Minimal Theme versions, so a theme update can quietly change what a preset looks like.

Maintenance, documentation and licence

The project is not archived and the last push was on 2026-09-20. Releases are frequent and numbered independently of the theme: 9.0.0 on 2026-07-31, 8.2.3 on 2026-05-11 and 8.2.2 on 2026-04-27. The pattern of small patch releases after a major version suggests the plugin follows Obsidian and Minimal changes closely.

The documentation does not live in the repository README, which is a pointer rather than a manual. The full documentation is at minimal.guide, the theme's own site, so the plugin's behaviour, its hotkey list and its theme compatibility notes are documented alongside the theme itself. That is the right arrangement given the relationship between the two, and it also means the repository README is the quick reference while the site is the reference.

The repository carries an AGENTS.md and a CONTRIBUTING.md alongside the usual configuration files, which suggests the maintainer works with automated tooling as well as human contributors.

The licence is MIT, with a LICENSE file at the root, and the package metadata records the same. MIT is permissive and places no conditions on redistribution or on modification, so a fork that adjusts the defaults or the color schemes carries no obligation to publish it back. That is a description of the terms rather than legal advice.

Editorial conclusion

Adopt obsidian-minimal-settings if you already use Minimal Theme and want its appearance options in one place instead of editing CSS by hand, especially if you switch color schemes or background styles often. Do not adopt it if you use a different theme, since it exists only to configure Minimal, and do not treat it as a general Obsidian appearance plugin. Verify first that the Minimal Theme version you have matches the plugin version you install, that the Style Settings plugin is present if you intend to build your own color scheme, and that the hotkey assignments you rely on have not been taken by another plugin in your vault.

Frequently asked questions

Do I need Minimal Theme to use obsidian-minimal-settings?

The plugin requires Minimal Theme. The README states that the plugin is not required in order to use Minimal Theme, but is highly recommended, so the dependency runs one way only.

How do I create my own color scheme in obsidian-minimal-settings?

Through the Style Settings plugin, which lets you adjust the theme's individual values rather than picking a preset. The presets offered directly are Atom, Ayu, Catppuccin, Dracula, E-ink, Everforest, Flexoki, Gruvbox, macOS, Nord, Rosé Pine, Solarized, Sky and Things.

Which hotkeys does obsidian-minimal-settings provide?

Toggling light and dark mode, cycling light mode styles and dark mode styles, switching color schemes, increasing and decreasing font size, toggling image grids and sidebar borders, and cycling the width options for images, tables and iframes.

How do I build obsidian-minimal-settings from source?

Run the dev script, which invokes node esbuild.config.mjs, for development. The production build script type checks with tsc using noEmit and skipLibCheck and then runs esbuild in production mode, with manifest.json and versions.json holding the Obsidian metadata.

Official sources

  1. kepano/obsidian-minimal-settings on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kepano-obsidian-minimal-settings.svg)](https://hysenlabs.com/projects/kepano-obsidian-minimal-settings)

Was this useful?