Floating Outline
unlistedby 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.
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
| Setting | Description |
|---|---|
| Enable floating outline | Master on/off switch |
| Position | Left or right edge of the window |
| Minimum headings to show | Don't show the widget below this heading count (default: 2) |
| Panel width | Width of the expanded outline panel |
| Edge offset | Distance from the window edge |
| Hide on mobile | Keep 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
- Download
main.js,manifest.json, andstyles.cssfrom the latest Release. - Create a folder named
floating-outlineinside your vault's.obsidian/plugins/directory. - Copy the three files into that folder.
- 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-outlineand runnpm run devthere, 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)
- Bump the version: update
manifest.json, then runnpm run versionto syncversions.json. - Run
npm run buildand tag a GitHub Release with that version number. - Attach
main.js,manifest.json, andstyles.cssas binary attachments on the release (not the whole repo zip). - To submit to the official community plugin list, fork
obsidian-releasesand add an entry for this plugin tocommunity-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.