Graph Highlight Lock
approvedby goverse
Lock and preserve node connection highlighting in Obsidian Graph View, with a visible navigation trail. - This plugin has not been manually reviewed by Obsidian staff.
๐ Graph Highlight Lock
A highlight that doesn't disappear when your mouse moves. Pin the hover-highlight of any node in Obsidian's built-in Graph View with a single click, and watch your navigation trail stay lit up behind you as a colored path.

English
It does not create a separate graph view โ it works directly on top of the Graph View you already use, with zero extra setup.
Why?
Obsidian's Graph View highlights a node's connections while your mouse hovers over it, but the highlight disappears the moment you move away. In a vault with hundreds or thousands of notes, that means freezing your mouse in place just to trace a note's connections โ and following a chain of links means losing everything you've already seen the second you move on.
Graph Highlight Lock pins that highlight to a node. Move your mouse freely, follow a link to the next node, and lock that one too โ the entire path you took stays visible as a colored line, so you always know how you got where you are.
Core Features
| Action | Result |
|---|---|
| Hover a node | Default Obsidian behavior (neighbors/edges highlighted) |
| Alt + Left Click on a hovered node | Locks the current highlight โ stays even after the mouse moves away |
| Alt + Click a connected neighbor | The lock extends โ the navigation trail stays visible as a colored line with a direction arrow, so you can always see the path you took, in order |
| Alt + Click a node already on the trail | Walks the trail back to that point |
| Alt + Click an unrelated node | Starts a fresh trail |
Esc | Clears the lock entirely |
| Alt + Click on empty space | Clears the lock entirely |
| Normal click / drag / zoom / right-click | Completely unaffected โ all native Graph View behavior is preserved |
The trail's color, thickness, and direction arrows are all configurable in settings. Works with both the Global Graph and Local Graph views.
Commands
Graph Highlight Lock: Lock hovered nodeGraph Highlight Lock: Clear highlight lockGraph Highlight Lock: Toggle lock
Settings
- Lock trigger: the modifier key used to lock (default
Alt;Ctrl/Shift/Cmdalso supported) - Locked node marker: shows the current locked trail in the top-left corner as
๐ A โ B โ C - Trail color: color used for the trail (previously-locked nodes and their connecting edges)
- Trail edge thickness: thickness of trail edges, as a multiple of the native line thickness
- Trail direction arrows: show an arrow on each trail edge pointing in the order you locked the nodes
Installation
Graph Highlight Lock is available in Obsidian's Community Plugins directory.
- Open Settings โ Community plugins โ Browse.
- Search for "Graph Highlight Lock".
- Click Install, then Enable.
You can also install it via BRAT (useful for getting updates before they land in the directory), or manually:
- Download
main.js,manifest.json, andstyles.cssfrom Releases. - Create a folder
.obsidian/plugins/graph-highlight-lock/inside your vault and put the 3 files there. - Enable "Graph Highlight Lock" under Settings โ Community plugins.
How it works
Obsidian's Graph View has no official public API. This plugin reuses the existing highlight state of the internal PIXI-based renderer (getHighlightNode, onNodeClick, etc.) instead of drawing its own graph โ which keeps it lightweight and visually identical to the native Graph View.
That said, this relies on undocumented internal APIs, so it may break on future Obsidian updates. All such access is isolated in a single file, src/graph-adapter.ts, so only that file needs to change if Obsidian's internals shift.
Keeping the trail visible works differently for nodes and links. Nodes get their own color function (getFillColor) replaced for as long as they're on the trail, so every time native code recomputes it, it lands on our color anyway. Links have no equivalent override point, so instead the link's own draw function is wrapped to always run the native draw first and apply our color/thickness/arrow right after โ guaranteed to be the last write, every time. Neither approach uses a polling timer; both only ever touch the (small) set of nodes/edges actually on the trail, never the full graph.
Building from source
npm install
npm run dev # watch mode for development
npm run build # production build (produces main.js)
Copy the built main.js, manifest.json, and styles.css into your test vault's .obsidian/plugins/graph-highlight-lock/.
Roadmap
- Multiple simultaneous locks / trails
- Selectable connection depth (1โ3 hops)
- Persisting lock state across sessions
Author
GOVERSE
- ๐บ YouTube: @goverse82
- โ๏ธ Email: ruruoni1@gmail.com
Bug reports and feature requests are welcome in Issues.
License
MIT
ํ๊ตญ์ด
๋ณ๋์ ๊ทธ๋ํ ํ๋ฉด์ ๋ง๋ค์ง ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ ์ฐ๊ณ ์๋ Obsidian Graph View ์์์, ์ถ๊ฐ ์ค์ ์์ด ๊ทธ๋๋ก ๋์ํฉ๋๋ค.
์ ํ์ํ๊ฐ์?
Obsidian Graph View๋ ๋ ธ๋์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ์ฐ๊ฒฐ๋ ๋ ธ๋/๋งํฌ๊ฐ ๊ฐ์กฐ๋์ง๋ง, ๋ง์ฐ์ค๋ฅผ ๋ผ๋ ์๊ฐ ์ฌ๋ผ์ง๋๋ค.
๋ ธ๋๊ฐ ๋ช๋ฐฑ~๋ช์ฒ ๊ฐ์ธ Vault์์ "์ด ๋ ธํธ๊ฐ ๋ญ๋ ์ฐ๊ฒฐ๋ผ ์์์ง?"๋ฅผ ํ์ธํ๋ ค๊ณ ๋ง์ฐ์ค๋ฅผ ๊ทธ ์๋ฆฌ์ ์ผ์ด๋ถ์ ๋ฏ ๊ณ ์ ํด์ผ ํ๋ ๊ฒฝํ, ๋ค๋ค ์์ผ์ค ๊ฒ๋๋ค. ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ํ๋์ฉ ๋ฐ๋ผ๊ฐ ๋ณด๊ณ ์ถ์ด๋, ๋ง์ฐ์ค๋ฅผ ์ฎ๊ธฐ๋ ์๊ฐ ์ง๊ธ๊น์ง ๋ณธ ๊ฒ ๋ค ๋ ์๊ฐ ๋ฒ๋ฆฝ๋๋ค.
Graph Highlight Lock์ ๊ทธ ๊ฐ์กฐ ์ํ๋ฅผ ๋ ธ๋์ ๊ณ ์ (Lock)ํฉ๋๋ค. ๋ง์ฐ์ค๋ฅผ ์์ ๋กญ๊ฒ ์์ง์ด๋ฉฐ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํ์ํ๊ณ , ๋งํฌ๋ฅผ ๋ฐ๋ผ ๋ค์ ๋ ธ๋๋ก ๋์ด๊ฐ๋ฉด โ ์ง๋์จ ๊ฒฝ๋ก ์ ์ฒด๊ฐ ์๊น ์๋ ์ ์ผ๋ก ๊ณ์ ๋จ์์์ต๋๋ค. "๋ด๊ฐ ์ด๋์๋ถํฐ ์ด๋ป๊ฒ ์ฌ๊ธฐ๊น์ง ์๋์ง"๋ฅผ ํ๋์ ๋์ง์ด๋ณผ ์ ์์ต๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ
| ๋์ | ๊ฒฐ๊ณผ |
|---|---|
| ๋ ธ๋์ ๋ง์ฐ์ค ์ฌ๋ฆฌ๊ธฐ | ๊ธฐ๋ณธ Obsidian ๋์ ๊ทธ๋๋ก (์ฐ๊ฒฐ ๋ ธ๋/๋งํฌ ๊ฐ์กฐ) |
| Alt + ์ขํด๋ฆญ (ํธ๋ฒ ์ค์ธ ๋ ธ๋) | ํ์ฌ ๊ฐ์กฐ ์ํ๋ฅผ ๊ณ ์ (Lock) โ ๋ง์ฐ์ค๋ฅผ ์ฎ๊ฒจ๋ ์ ์ง๋จ |
| ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋ ธ๋์์ Alt + ํด๋ฆญ | Lock ๋์์ด ์ด์ด์ง โ ์ง๋์จ ๊ฒฝ๋ก(Trail)๊ฐ ์๊น ์๋ ์ + ํ์ดํ๋ก ๊ณ์ ํ์๋์ด, ์ด๋ค ์์๋ก ์ฐพ์์๋์ง ํ๋์ ๋ณด์ |
| ๊ฒฝ๋ก ์ค๊ฐ ๋ ธ๋๋ฅผ ๋ค์ Alt + ํด๋ฆญ | ๊ทธ ์ง์ ๊น์ง ๊ฒฝ๋ก๋ฅผ ๋๋๋ฆผ |
| ์ฐ๊ฒฐ ์๋ ๋ ธ๋๋ฅผ Alt + ํด๋ฆญ | ์๋ก์ด ๊ฒฝ๋ก๋ก ๋ฆฌ์ |
Esc | Lock ์ ์ฒด ํด์ |
| ๋น ๊ณต๊ฐ์์ Alt + ํด๋ฆญ | Lock ์ ์ฒด ํด์ |
| ์ผ๋ฐ ํด๋ฆญ / ๋๋๊ทธ / ์ค / ์ฐํด๋ฆญ | ์ ํ ์ํฅ๋ฐ์ง ์์ โ ๊ธฐ์กด Graph View ๊ธฐ๋ฅ 100% ๊ทธ๋๋ก |
๊ฒฝ๋ก์ ์์ ยท ๊ตต๊ธฐ ยท ํ์ดํ ํ์ ์ฌ๋ถ๋ ์ค์ ์์ ์์ ๋กญ๊ฒ ๋ฐ๊ฟ ์ ์์ต๋๋ค. Global Graph์ Local Graph ๋ ๋ค ์ง์ํฉ๋๋ค.
์ปค๋งจ๋ ํ๋ ํธ
Graph Highlight Lock: Lock hovered nodeGraph Highlight Lock: Clear highlight lockGraph Highlight Lock: Toggle lock
์ค์
- Lock trigger: Lock์ ์ฌ์ฉํ ๋ณด์กฐํค (๊ธฐ๋ณธ๊ฐ
Alt,Ctrl/Shift/Cmd๋ฑ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ) - Locked node marker: ํ๋ฉด ์ข์๋จ์ ํ์ฌ Lock๋ ๊ฒฝ๋ก๋ฅผ
๐ A โ B โ Cํํ๋ก ํ์ํ ์ง ์ฌ๋ถ - Trail color: ๊ฒฝ๋ก(์ด์ ์ Lockํ๋ ๋ ธ๋/์ฐ๊ฒฐ์ )์ ์ฌ์ฉํ ์์
- Trail edge thickness: ๊ฒฝ๋ก ์ฐ๊ฒฐ์ ์ ๋๊ป (๊ธฐ๋ณธ ๋๊ป์ ๋ฐฐ์)
- Trail direction arrows: ์ฐ๊ฒฐ์ ์ Lockํ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํ์ดํ๋ฅผ ํ์ํ ์ง ์ฌ๋ถ
์ค์น ๋ฐฉ๋ฒ
Graph Highlight Lock์ Obsidian ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก์ ์ ์์ผ๋ก ๋ฑ๋ก๋์ด ์์ต๋๋ค.
- ์ค์ โ ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ โ ์ฐพ์๋ณด๊ธฐ(Browse)
- "Graph Highlight Lock" ๊ฒ์
- ์ค์น ํ ํ์ฑํ
๋๋ BRAT ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ ์ฅ์ ์ฃผ์๋ฅผ ๋ฑ๋กํด์ ์ค์นํ ์๋ ์๊ณ (์ ์ ๋ชฉ๋ก์ ๋ฐ์๋๊ธฐ ์ ์ต์ ๋ฒ์ ์ ๋จผ์ ์จ๋ณด๊ณ ์ถ์ ๋ ์ ์ฉ), ์๋์ผ๋ก๋ ์ค์นํ ์ ์์ต๋๋ค:
- Releases ์์
main.js,manifest.json,styles.css3๊ฐ ํ์ผ์ ๋ด๋ ค๋ฐ์ต๋๋ค. - Vault ํด๋ ์์
.obsidian/plugins/graph-highlight-lock/ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ 3๊ฐ ํ์ผ์ ๋ฃ์ต๋๋ค. - Obsidian โ ์ค์ โ ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ์์ "Graph Highlight Lock"์ ์ผญ๋๋ค.
์ด๋ป๊ฒ ๋์ํ๋์? (๊ธฐ์ ์ ์ผ๋ก)
Obsidian Graph View๋ ๊ณต์ ๊ณต๊ฐ API๊ฐ ์์ต๋๋ค.
์ด ํ๋ฌ๊ทธ์ธ์ Graph View๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ PIXI ๊ธฐ๋ฐ ๋ ๋๋ฌ์
ํ์ด๋ผ์ดํธ ์ํ(getHighlightNode, onNodeClick ๋ฑ)๋ฅผ ๊ทธ๋๋ก ์ฌ์ฌ์ฉํด์
Lock์ ๊ตฌํํฉ๋๋ค.
๋ณ๋์ ๊ทธ๋ํ ๋ ๋๋ง ์ฝ๋๋ฅผ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ณ , ๊ธฐ์กด Graph View์
์๊ฐ์ ์คํ์ผ๊ณผ 100% ๋์ผํ๊ฒ ๋ณด์
๋๋ค.
๋ค๋ง ์ด๋ ๋น๊ณต์(undocumented) ๋ด๋ถ API์ด๋ฏ๋ก, Obsidian์ด ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ
๋ณ๊ฒฝํ๋ฉด ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
์ด๋ฐ ๋ด๋ถ ์ ๊ทผ์ src/graph-adapter.ts ํ ํ์ผ์๋ง
๊ฒฉ๋ฆฌ๋์ด ์์ด, ํฅํ ๋์์ด ํ์ํ ๋ ๊ทธ ํ์ผ๋ง ์์ ํ๋ฉด ๋๋๋ก ์ค๊ณํ์ต๋๋ค.
์ง๋์จ ๊ฒฝ๋ก(Trail)๋ฅผ ๊ณ์ ํ์ํ๋ ๋ถ๋ถ์ ๋
ธ๋์ ๋งํฌ๊ฐ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก
์ฒ๋ฆฌ๋ฉ๋๋ค. ๋
ธ๋๋ ์์ ๊ณ์ฐ ํจ์(getFillColor)๋ฅผ ํ์ํ ๋์๋ง ๋ฐ๊ฟ์น๊ธฐํด์,
Obsidian์ด ๋งค ํ๋ ์ ๋ค์ ๊ณ์ฐํด๋ ํญ์ ์ฐ๋ฆฌ ์์ด ๋์ค๊ฒ ๋ง๋ญ๋๋ค. ๋งํฌ(์ )๋
์ด๋ฐ ํจ์๊ฐ ๋ฐ๋ก ์์ด์, ์ฐ๊ฒฐ์ ์์ฒด์ "๊ทธ๋ฆฌ๊ธฐ" ํจ์๋ฅผ ๊ฐ์ธ
"์๋ ๊ทธ๋ฆฌ๊ธฐ โ ๊ทธ ์งํ ์ฐ๋ฆฌ ๊ฐ(์์ ยท ๊ตต๊ธฐ ยท ํ์ดํ) ์ ์ฉ" ์์๋ฅผ ํญ์
๋ณด์ฅํ๋ ๋ฐฉ์์ ์๋๋ค. ๋ ๋ฐฉ์ ๋ชจ๋ ๋ฐ๋ณต ์คํ๋๋ ํ์ด๋จธ ์์ด, ๊ฒฝ๋ก์ ์๋
๋
ธ๋/์ฐ๊ฒฐ์ (์ ์ฒด ๊ทธ๋ํ๊ฐ ์๋๋ผ)๋ง ๊ฑด๋๋ฆฝ๋๋ค.
๊ฐ๋ฐ์์ฉ ๋น๋ ๋ฐฉ๋ฒ
npm install
npm run dev # ๊ฐ์ ๋ชจ๋๋ก ๋น๋ (๊ฐ๋ฐ ์ค)
npm run build # ํ๋ก๋์
๋น๋ (main.js ์์ฑ)
๋น๋๋ main.js, manifest.json, styles.css๋ฅผ ํ
์คํธ Vault์
.obsidian/plugins/graph-highlight-lock/์ ๋ณต์ฌํ๋ฉด ๋ฉ๋๋ค.
ํฅํ ๊ณํ
- ๋ค์ค Lock / ์ฌ๋ฌ ๊ฒฝ๋ก ๋์ ํ์
- ์ฐ๊ฒฐ ๊น์ด(Depth) 1~3๋จ๊ณ ์ ํ
- Lock ์ํ ์ ์ฅ (์ธ์ ๊ฐ ์ ์ง)
์ ์์
GOVERSE
- ๐บ YouTube: @goverse82
- โ๏ธ Email: ruruoni1@gmail.com
๋ฒ๊ทธ ์ ๋ณด๋ ๊ธฐ๋ฅ ์ ์์ Issues๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ผ์ด์ ์ค
MIT
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.