Open-source project
chrisgrieser/shimmering-focus avatar
chrisgrieser/shimmering-focus

Shimmering Focus, an Obsidian theme that hides the interface from keyboard users

A minimalistic and opinionated Obsidian theme for the keyboard-centric user.

648 stars24 forksCSSMIT

At a glance

What is it?
Shimmering Focus is a minimalistic and opinionated Obsidian theme for people who work from the keyboard, hiding interface elements that mouse users need and exposing more than a hundred settings through the Style Settings plugin. It suits writers and note takers who want the editor to disappear, and it is opinionated enough that it will not suit a mouse-driven workflow without changes.
Who is it for?
Adopt Shimmering Focus if you use Obsidian almost entirely from the keyboard and want the editing surface to take up the whole window, since the theme hides or de-emphasises interface chrome and adds commands for the things a keyboard user does most.
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 39 days ago.
What is it written in?
Mainly CSS, according to GitHub's language statistics.

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

Editorial analysis

Radical minimalism hides the chrome, not just the colours

Shimmering Focus describes itself as a minimalistic and opinionated Obsidian theme for the keyboard-centric user, and the design philosophy section makes the distinction that matters: as opposed to minimalistic colors, this theme focuses on a minimalistic user interface, where UI elements not relevant for keyboard users are hidden or only shown when needed.

The stated way out is the Style Settings plugin, and the README says those elements can be permanently re-enabled with it. So the hiding is a default, not a lock, which is the difference between an opinionated theme and an unusable one.

The second principle is a condensed display of information, with unnecessary padding and white-space removed, and the README gives the reason: it is beneficial for small screens or higher zoom levels. On a laptop at 150 percent scaling, or on a tablet held close, that whitespace is what pushes the readable column off the screen.

The third principle is high customizability, with more than a hundred customization settings via the Style Settings plugin. That number is the theme's real differentiator, and it is also the reason the Style Settings dependency matters more than it might appear at first glance.

Smart hiding, active cell highlighting, and a specific idea of what a reader needs

The feature list describes a theme that has opinions about specific Obsidian surfaces rather than a general restyling.

The smart hiding rules are the clearest example. The tab bar is only shown when there is more than one tab open, and the sidebar tab buttons are only shown on hover. Both rules exist because a keyboard user has a command for opening a tab and a command for switching panes, while a mouse user needs the affordance visible. The theme is choosing one user and accepting the cost for the other.

Tables get highlighting of active cells and alternating row colors, which is a readability decision for dense data rather than a visual flourish. Headings get distinctive styling and various options for differentiating heading levels, which serves outline scanning in a long note.

Images get particular attention: the alt text of images used as caption is styled, and images can be zoomed in via click-and-hold or toggled between reduced and original size through Style Settings. That last part is a real answer to a common Obsidian annoyance, where a wide image forces the reading column to shrink.

There is a writing-oriented set of features too, with emphasis of Pandoc citations and footnotes, extensive styling for the Longform plugin, and styling for notes using the cssclasses: writing class. Vim users get explicit styling of Obsidian's vim mode, including settings such as relative line numbers and emphasis of the cursorline.

Style Settings commands for the three toggles that matter

When the Style Settings plugin is installed, the theme adds commands for toggling theme features. Three are documented.

Toggle folding of URLs in Source Mode. Toggle between reduced and original image size, where the size reduction can be customized with the respective style setting. And toggle readable line length, which the README notes requires the Readable line length setting in Obsidian to be enabled.

That dependency is worth pausing on. A fair amount of what this theme does is only reachable when a community plugin is present, and the plugin is not bundled with Obsidian. A reader who installs the theme from the theme store and nothing else gets the visual design, the hiding rules and the colour scheme, but not the hundred customization options or these commands.

The commands are also the right model for the theme's philosophy. Rather than one giant preference, each of the three is a keyboard command that toggles behaviour on the spot, which suits a workflow where you sometimes want the URLs expanded and sometimes not.

Building your own colour scheme from CSS custom properties

The advanced customisation section shows how to make your own colour scheme, and the mechanism is plain CSS custom properties scoped to the light and dark theme classes. The light variant looks like this:

css
    --bg-hue: 230;
    --bg-sat: 25%;
    --color-accent: hsl(184 79% 35%);
    --color-accent-hsl: 184, 79%, 35%;
    --interactive-accent: hsl(184 79% 30%);
    --alt-heading-color: hsl(232 34% 50%);
    --secondary-accent: hsl(28 54% 51%);
    --hover-accent: hsl(328 100% 54%);
    --link-unresolved-color: hsl(101 42% 51%);

The comment in the README explains the one trap: the --color-accent-hsl value should have the same values as --color-accent, because the two forms of the same colour are both present and Obsidian expects them to agree. The dark variant differs in the saturation and in the lightness of the accent and the heading colour, with the same set of variable names.

The theme also accepts alternative colour schemes submitted by the community through the Style Settings plugin, and the README invites submissions of classic, well-known colour schemes, which it says are especially welcome.

For a user, that means recolouring the theme is a matter of editing a handful of custom properties, and for a designer it means a palette can be contributed upstream without touching the theme's own rules.

lightning-css lets the source use modern CSS while staying compatible

The build setup is where the theme handles Obsidian's version fragmentation, and the answer is a transpiler.

All relevant source files live in the source directory, and they are compiled via GitHub action when pushed to GitHub. The build uses lightningcss for syntax-lowering, and the README explains what that buys: you can use modern CSS features such as CSS-nesting, because the resulting theme.css is still compatible with older Obsidian installer versions. The theme targets Obsidian installer version 1.1.9, so you can use the :has() selector.

Otherwise, the theme is written in vanilla CSS, and the devDependencies are correspondingly small, with lightningcss-cli and doiuse. The doiuse tool is a separate check on browser feature usage, which fits a project whose whole job is to know exactly which CSS features it is allowed to use.

The repository layout backs this up. There is a source/ directory, a compiled theme.css at the root, a snippets/ directory holding features that are also available as standalone snippets, a manifest.json for the Obsidian theme format, a types/ directory, an assets/ directory, a Justfile for task automation, a package-lock.json, and a biome.jsonc for formatting. There is also a .harper-dictionary.txt and a .markdownlint.yaml, so the prose and the CSS are both linted.

Three licences in one theme, and a release cadence you can plan around

The licences section is worth reading carefully for a theme, because the fonts are embedded rather than linked, and embedded files carry their own terms.

The theme itself is licensed under the MIT License. The two embedded fonts, iA Writer Quattro and Recursive, are licensed under the SIL Open Font License. The embedded icon font is licensed under the Apache License, with the README linking the icon font licensing page.

The thanks section lists the people whose snippets and ideas the theme includes, and the README notes that many features are only possible because of that, which is an unusually direct acknowledgment for a theme project.

The release record is regular and close to the code. Version 5.86.0 on 2026-07-20, 5.87.0 on 2026-08-01 and 5.88.0 on 2026-09-14, with the last push to the main branch on 2026-09-14 as well. So the tree is being worked on.

The README also records the theme's history in the store: it was the winner of Obsidian October 2022, and it is described as the 11th most downloaded theme in the Obsidian theme store. Those are the kinds of facts that tell you the theme has survived multiple Obsidian redesigns without being rewritten, which matters more for a theme than any feature list.

Editorial conclusion

Adopt Shimmering Focus if you use Obsidian almost entirely from the keyboard and want the editing surface to take up the whole window, since the theme hides or de-emphasises interface chrome and adds commands for the things a keyboard user does most. Do not adopt it if you rely on the ribbon, hover-revealed buttons or mouse-driven navigation, since the hiding is deliberate and, while the Style Settings plugin can bring the elements back, you are then re-enabling what the theme was built to remove. Before you switch, check that the Style Settings plugin is available in your install, because most of the theme's options live there, read the licences section since the embedded fonts carry their own terms, and note the release cadence, with 5.88.0 published on 2026-09-14 and the last push on the same day.

Frequently asked questions

How do I install Shimmering Focus in Obsidian?

The theme is distributed through the Obsidian theme store, where the README says it is the 11th most downloaded theme. Most of its options require the Style Settings plugin to be installed as well.

What does the Style Settings plugin add to Shimmering Focus?

The theme exposes more than a hundred customization settings through it, and it adds commands for toggling folding of URLs in Source Mode, toggling between reduced and original image size, and toggling readable line length, which requires the Readable line length setting in Obsidian to be enabled.

Can I change the colours of Shimmering Focus?

Yes, with a CSS snippet. The theme defines its palette as CSS custom properties scoped to the light and dark theme classes, including --color-accent, --color-accent-hsl, --interactive-accent, --alt-heading-color, --secondary-accent, --hover-accent and --link-unresolved-color. The README notes that --color-accent-hsl must carry the same values as --color-accent.

Which fonts are embedded in Shimmering Focus and under what licence?

The two embedded fonts iA Writer Quattro and Recursive are licensed under the SIL Open Font License, and the embedded icon font is licensed under the Apache License. The theme itself is under the MIT License.

How is the Shimmering Focus theme built from source?

The source files live in the source directory and are compiled by a GitHub action when pushed, using lightningcss for syntax-lowering so that modern CSS such as nesting and :has() still produces a theme.css compatible with older Obsidian installers. The theme targets Obsidian installer version 1.1.9.

Official sources

  1. chrisgrieser/shimmering-focus on GitHub
  2. Issues
  3. License: MIT
  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/chrisgrieser-shimmering-focus.svg)](https://hysenlabs.com/projects/chrisgrieser-shimmering-focus)

Was this useful?