Folder Nav

by mian Fuqu
5
4
3
2
1
Score: 30/100

Description

Obsidian plugin: browse the sidebar one folder at a time with a breadcrumb, instead of scrolling an indented tree.

Reviews

No reviews yet.

Stats

1
stars
844
downloads
0
forks
28
days
28
days
29
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
1
total issues
1
open issues
0
closed issues
7
commits

Latest Version

a month ago

Changelog

Fixes a real gap: right-clicking gave you no way to create, rename, move or delete anything.

Why it was broken. Obsidian adds its core context-menu items inside the file explorer's own code and only fires the file-menu event afterwards. A plugin listening to that event — or firing it — sees third-party contributions and nothing else. Folder Nav replaces that explorer view, so there was no native menu to borrow and those actions were missing entirely.

Fixed

  • New note, New folder (on folders)
  • Rename — small dialog, pre-selects the name without the extension, refuses a name that already exists
  • Move to… — folder picker, the stand-in for drag-and-drop
  • Make a copy
  • Delete — hands off to Obsidian's own promptForDeletion, so your "confirm before deleting" setting still applies
  • Items are grouped with setSection() so the menu reads the way Obsidian's own does, with New note / New folder at the top
  • Other plugins' menu items still appear alongside

Also

  • minAppVersion 1.5.0 → 1.8.7. The official ESLint plugin caught vault.copy requiring 1.8.7, which the old floor understated
  • Back to 0 errors under eslint-plugin-obsidianmd

Install: download main.js, manifest.json and styles.css below into <vault>/.obsidian/plugins/folder-nav/, or use BRAT with mianfuqu/obsidian-folder-nav.

README file from

Github

Folder Nav

English · 简体中文

An Obsidian plugin that replaces the sidebar file tree with drill-down navigation — the sidebar shows one folder at a time, and a breadcrumb walks you back up. Like double-clicking into folders in Windows Explorer or macOS Finder.

No more ever-deepening indentation eating the width of a narrow sidebar.

Why

Obsidian's file explorer indents every level. By the third or fourth level — Notes › Course › Week 3 › Handout.pdf — the names are squeezed into a sliver, and the whole tree is always on screen competing for attention.

Folder Nav keeps the sidebar at a constant depth. You see the folder you're standing in, and the breadcrumb tells you where that is.

Usage

Enabled by default: it takes over the built-in Files view. The sidebar tab is unchanged, and so is the ribbon icon.

Mouse

Action Result
Click a folder Go into it
Click a file Open it in the main editor area (never in the sidebar)
Click a breadcrumb segment Jump back to that level
Click ← Go up one level
Right-click a file or folder New note / New folder, Rename, Move to…, Make a copy, Delete — plus other plugins' menu items

Obsidian adds its core context-menu items inside the file explorer's own code, before it fires the file-menu event — so a plugin listening to that event only ever sees third-party contributions. Since Folder Nav replaces that view, it rebuilds the core items itself on public API. Delete in particular hands off to Obsidian's own promptForDeletion, so your "confirm before deleting" setting is respected.

Keyboard (click the list first)

Key Action
↑ / ↓ Move the selection
Enter Open the selection
Backspace / Alt+← / Cmd/Ctrl+[ Go up one level
Esc Clear the selection

Commands (also bindable in Settings → Hotkeys)

  • Folder Nav: Toggle drill-down / native file list
  • Folder Nav: Go to vault root
  • Folder Nav: Go up one level
  • Folder Nav: Reveal current file in list

Folder colours

Give a folder a colour and it carries into everything below it: the row is tinted where it sits, and the whole sidebar picks up a wash once you're inside. A drill-down list never shows you the parent folder, so the colour is what tells you where you are.

Set one — right-click a folder → Folder colour, then pick a swatch. A folder with no colour of its own inherits the nearest coloured ancestor, so drilling deeper keeps the cue.

Manage them — Settings → Folder Nav → Folder colours lists every coloured folder, with a Background intensity slider. At 0 only the folder row is tinted and the list background is left alone.

Colours are always layered translucently over your theme's own background; foreground colours are never touched, so text stays exactly as legible as your theme makes it.

Settings

Setting Description
Background intensity How strong the wash is inside a coloured folder — the number is the opacity percentage. 0 tints the folder row only.
Take over the file list Turn off to restore the native tree instantly — nothing is left behind.
Sort order Follow native mirrors the sort the built-in explorer was using when Folder Nav took over (alphabetical, modified time, …). Folders first always puts folders above files, then sorts by name.
Reveal current file Follow the active note into its folder. Seeded from Obsidian's own "Auto reveal" setting.
Show file extensions Off shows Note instead of Note.md.
Hide loose files in the vault root Only affects the vault root — handy when attachments pile up there.
Hidden extensions Comma-separated list used by the setting above.

How it works

Folder Nav replaces the view inside the existing file-explorer leaf rather than disabling Obsidian's core file-explorer plugin. Disabling that plugin would also remove the sidebar's ribbon icon, and reaching for it would mean touching undocumented APIs. Everything here goes through the public workspace API — the plugin makes no use of app.internalPlugins or any other private surface.

The replacement is re-applied on layout-change, so the built-in plugin recreating its leaf (on layout restore, or when you run "Open file explorer") doesn't leave you with a native tree. Duplicate drill-down leaves are collapsed down to one.

Nothing in your vault configuration is rewritten. workspace.json and core-plugins.json are never modified by the plugin.

Limitations

  • No drag-and-drop to move files. Obsidian's native drag handling is bound to its own explorer internals; reusing it means depending on undocumented APIs. Use the context menu's Move to… instead, which opens a folder picker.
  • No inline rename (F2) and no multi-select. Rename lives in the context menu and opens a small dialog. Select one file at a time.
  • Custom folder order isn't reproduced. Sorting is computed from your chosen order rather than borrowed from the built-in explorer, which is destroyed on takeover. Folders you manually reordered with another plugin will sort by name or date instead.
  • Obsidian's own "Reveal file in navigation" does nothing while the takeover is on. It targets the built-in explorer's view, which is no longer loaded, so it quietly no-ops — it won't open a second file list or throw. Use Folder Nav: Reveal current file in list instead, and rebind your hotkey to it if you had one on the built-in command.
  • A major Obsidian update may still require fixes. The takeover is built on the public workspace API, but it does replace a core view, which no API promises to keep working. The failure mode is safe by design: if the takeover can't run, you get the native file list back.
  • Desktop and mobile. isDesktopOnly is off, but the drill-down layout has mainly been exercised on desktop.

Development

npm install
npm run build     # typecheck + bundle
npm run dev       # watch mode

main.js is written to the project root. To also copy it into a vault while developing:

OBSIDIAN_PLUGIN_DIR=~/MyVault/.obsidian/plugins/folder-nav npm run build

Debug loop, if you have the Obsidian CLI:

obsidian vault=MyVault plugin:reload id=folder-nav
obsidian vault=MyVault dev:errors
obsidian vault=MyVault dev:screenshot path=/tmp/shot.png

Source layout

src/
├── main.ts       Plugin entry: lifecycle, commands, settings wiring
├── view.ts       FolderNavView — navigation state, history, list rendering
├── takeover.ts   Swap the built-in explorer's view for ours, and back
├── breadcrumb.ts Breadcrumb trail construction
├── render.ts     A single list row
├── palette.ts    Folder colour palette and nearest-ancestor lookup
├── colorPicker.ts Colour swatch modal
├── sort.ts       Sorting and the vault-root filter
└── settings.ts   Settings tab

Contributors

  • mianfuqu — author and maintainer
  • DeepSeek — implementation

See CONTRIBUTORS.md.

License

MIT