Michael Sharkey176 downloadsDesignate a target pane, then open links to other notes (including embedded-note links) there instead of in the current pane.
Pick a pane. Every note link you click — including the link icon on an embedded note — opens there, no matter which pane you clicked it from.
Target Pane lets you designate one pane (tab group) as the destination for note links (links that take you to a different note). Once set, clicking a [[wikilink]] to another note, a Markdown link, or the link icon on an ![[embedded note]] opens it in your chosen pane instead of hijacking the pane you're reading in. Great for a "read on the left, open references on the right" workflow.
In-page links (#heading / ^block jumps within the current note) stay where you clicked, and web/URL links are left completely alone.
#heading and ^block jumps scroll within the pane you clicked; they don't go to the target.| You do… | …it goes to |
|---|---|
| Click a note link (to another note) | Target pane → active tab (replaced) |
| Cmd/Ctrl-click a note link | Target pane → new tab |
| Cmd/Ctrl-Alt-click a note link | Obsidian default (split) |
Click an in-page link (#heading / ^block) |
Stays in the pane you clicked |
| Click a web/URL link | Opens in your browser (unaffected) |
| Target turned off | Stock Obsidian behavior |
Cmd/Ctrl-P).| Command | Description |
|---|---|
Set target pane to the active pane |
Make the focused pane the target. |
Clear target pane |
Turn targeting off. |
main.js, manifest.json, and styles.css from the latest release.<your-vault>/.obsidian/plugins/target-pane/.Install the BRAT plugin, then add mjsharkey/obsidian_target_pane as a beta plugin.
#heading / ^block) link inside a pinned tab can make Obsidian open it in another pane. That's native Obsidian behavior (a pinned tab refuses navigation), not this plugin.Requires Node.js and npm.
git clone https://github.com/mjsharkey/obsidian_target_pane.git
cd obsidian_target_pane
npm install
npm run dev # esbuild watch — rebuilds main.js on save
To test in a real vault, symlink this repo into a vault's plugins folder and use the
Hot-Reload plugin (it auto-reloads on main.js changes because this repo has a
.git directory):
ln -s "$(pwd)" "/path/to/your/vault/.obsidian/plugins/target-pane"
Then enable both Target Pane and Hot Reload in the vault. For a production build:
npm run build # type-checks, then emits a minified main.js
Releases are automated. Write notes in release-notes/<version>.md, then:
./scripts/release.sh patch # or minor / major / an explicit X.Y.Z
release.sh bumps package.json / manifest.json / versions.json, commits, pushes, and pushes a version tag. Pushing a tag matching [0-9]+.[0-9]+.[0-9]+ triggers .github/workflows/release.yml, which runs npm ci, builds, attaches main.js / manifest.json / styles.css to a new GitHub release, and signs them with build-provenance attestations. Branch / work-in-progress pushes never trigger a release — only a version tag does.
Contributions are very welcome — this started as a focused scratch-my-own-itch plugin, and it'll get better with more eyes and use cases.
npm run build first so it type-checks.No contribution is too small — docs, typo fixes, and edge-case reports all help.
MIT © Michael Sharkey