Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/chrisgrieser/shimmering-focus/llms.txt

Use this file to discover all available pages before exploring further.

Shimmering Focus includes first-class styling for Obsidian’s built-in vim mode. The default Obsidian vim implementation has minimal visual feedback — the cursor looks the same regardless of mode, and there are no relative line numbers or cursorline. Shimmering Focus fills these gaps with dedicated CSS for each vim mode, plus Style Settings controls for blink rate and cursorline behavior.
To use vim mode in Obsidian, go to Settings → Editor → Vim key bindings and enable the toggle. All vim styling in this theme is active once that setting is on.

Cursor Styling by Mode

Shimmering Focus renders the vim cursor differently depending on the current mode:
  • Normal mode: A full block cursor rendered in a contrasting color, with a thin outline.
  • Insert mode: The cursor reverts to the standard Obsidian blinking line cursor.
  • Visual mode: The block cursor is retained but the selection highlight takes visual precedence.
When the editor loses focus (e.g. when a modal is open), the normal-mode block cursor becomes transparent with a colored outline only, so it remains visible as a position indicator without looking active. The cursor blink rate in normal mode is configurable via the Cursor blink rate (vim-cursor-blink-rate) slider:
SettingStyle Settings IDDefaultRange
Cursor blink ratevim-cursor-blink-rate1200ms0ms3000ms
Setting the value to 0 disables blinking entirely, which many vim users prefer for a stable, non-distracting cursor.

Cursorline

The cursorline highlights the entire current visual line in normal mode with a semi-transparent accent-color background. Enable it with Cursorline (vim-active-visual-line) in Style Settings.

Visual lines, not logical lines

The cursorline tracks visual lines — the lines as rendered on screen after word wrap. This matches vim’s native cursorline behavior more closely than a logical-line approach.

Independent of active block indicator

The cursorline is completely independent of the active block indicator. Both can be enabled simultaneously for a dual-indicator setup.
The cursorline only activates in normal mode. In insert mode, the standard active-line indicator (if configured) takes effect instead.
When the cursor is inside a table, the cursorline is automatically suppressed because the active table cell highlight already provides sufficient positional feedback.

Relative Line Numbers

Enable Relative line numbers (use-relative-line-numbers) in Style Settings to display line numbers relative to the cursor position, rather than absolute file line numbers. Lines above and below the cursor show their distance from the current line (1, 2, 3…), while the current line shows its absolute number.
Line numbers must also be enabled in Obsidian settings (Settings → Editor → Show line numbers) for relative line numbers to appear. The Style Settings toggle alone is not sufficient.
The relative line number feature is also available as a standalone CSS snippet (relative-line-numbers.css) in the theme’s snippets/ directory, for use without the full Shimmering Focus theme.

Disabling Mouse Hovers and Tooltips

Keyboard-centric users often find tooltips and hover buttons distracting when working in vim mode. The Disable tooltips & “Edit this block” button (no-mouse-hovers) toggle in Style Settings suppresses:
  • All tooltip popups shown when hovering elements in Live Preview.
  • The “Edit this block” button that appears when hovering embedded blocks and callouts.
Tooltips inside settings modals and dialogs are intentionally preserved even when no-mouse-hovers is active, since they provide useful information for sliders and configuration controls.

Vim Panel Styling

The vim command panel (the bar that appears at the bottom of the editor when you type : or /) is styled for legibility: the command character and the input field are both rendered at 1.4rem, making them easy to read quickly while executing commands.

Build docs developers (and LLMs) love