Floating Outline

unlisted

by sadcyberplayer

A simple floating table of contents: a slim row of dashes on the edge of the note that expands into a clickable outline on hover.

ā˜… 1 starsUpdated 4d agoMIT
View on GitHub

Floating Outline

A simple floating table of contents for Obsidian, by sadcyberplayer.

šŸ“¦ Source code: github.com/sadcyberplayer/obsidian-floating-outline

Instead of a full sidebar, Floating Outline shows a slim column of dashes fixed to the edge of the window, vertically centered, one dash per heading. Hover over it and it smoothly expands into a small panel listing every heading in the note — click any line (or any dash) to jump straight to that section.

Features

  • Small dash indicator, one per heading, indented by heading level
  • Recognizes headings even when nested inside a list item (e.g. - # Day Tasks:), not just top-level headings
  • Smooth hover-to-expand animation into a full outline panel
  • Click a dash or a heading name to jump to that section
  • Works in both Reading view and Live Preview / Source mode
  • Scroll-spy highlighting of the current section (Reading view)
  • Automatically hides on notes with too few headings
  • Configurable position (left/right edge), panel width, and edge offset
  • Respects your current theme (uses Obsidian's CSS variables, so it adapts to light/dark and custom themes automatically)

Settings

SettingDescription
Enable floating outlineMaster on/off switch
PositionLeft or right edge of the window
Minimum headings to showDon't show the widget below this heading count (default: 2)
Panel widthWidth of the expanded outline panel
Edge offsetDistance from the window edge
Hide on mobileKeep it desktop-only

There's also a command, "Toggle floating outline", available from the command palette, so you can bind a hotkey to quickly hide/show it.

Installation

From Obsidian (once published)

Settings → Community plugins → Browse and search for "Floating Outline".

Manually

  1. Download main.js, manifest.json, and styles.css from the latest Release.
  2. Create a folder named floating-outline inside your vault's .obsidian/plugins/ directory.
  3. Copy the three files into that folder.
  4. Reload Obsidian (or disable/re-enable community plugins) and turn the plugin on under Settings → Community plugins.

For testing, via BRAT

If you install the BRAT plugin, you can add this repository directly and get updates automatically without waiting for a community plugin review.

Development

npm install
npm run dev     # watch mode, rebuilds main.js on save
npm run build   # type-checks and produces a production build

To test inside a real vault, either:

  • Clone this repo directly into <vault>/.obsidian/plugins/floating-outline and run npm run dev there, or
  • Symlink this folder into <vault>/.obsidian/plugins/floating-outline.

Then enable it under Settings → Community plugins and reload the app after each rebuild (or use the "Hot Reload" community plugin during development).

Publishing checklist (for maintainers)

  1. Bump the version: update manifest.json, then run npm run version to sync versions.json.
  2. Run npm run build and tag a GitHub Release with that version number.
  3. Attach main.js, manifest.json, and styles.css as binary attachments on the release (not the whole repo zip).
  4. To submit to the official community plugin list, fork obsidian-releases and add an entry for this plugin to community-plugins.json, then open a pull request. The Obsidian team reviews submissions manually — this can take a while, so double-check the plugin ID isn't already taken before opening the PR.

License

MIT — see LICENSE.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.