README file from
GithubInkflow
Inkflow is a fast handwriting sidecar for Obsidian. Open a Markdown note, tap the pen, and write. Your editable ink is saved automatically and a normal PNG embed stays up to date inside the note.
It is intentionally not a whiteboard or diagramming system. Inkflow does one thing: it makes handwritten marginalia feel immediate on iPad, Boox, and other pen-enabled devices, including e-ink screens.
Why it feels different
- One gesture to ink. Open Inkflow from the ribbon or command palette and start writing.
- Made for styluses. Pressure-sensitive strokes, raw and coalesced pointer samples, palm rejection, and large touch targets.
- Fast over long sessions. New pen segments go straight to the display without clearing or repainting the canvas. Completed strokes are cached and display pixel density is capped to protect e-ink and mobile GPUs.
- Portable by default. Every canvas produces an ordinary PNG embedded with Obsidian's
![[...]]syntax and refreshes visible embeds after each short stroke burst. - Editable and recoverable. A compact
.ink.jsonsidecar preserves every point. Rename-safe associations live in plugin data, leaving no bookkeeping text in your notes. - Disposable by design. Delete handwriting in one action: the embed disappears and its private source and image follow your Obsidian trash preference. Deleting the parent note cleans them up automatically.
- Distraction-free. Ink automatically follows the theme, paper is always dotted, and the only choices while writing are pen, eraser, and three useful widths.
- Full-bleed. Dotted paper covers the entire writing pane—there is no inset page edge or dead margin to find on an e-ink screen.
- Local and offline. No accounts, analytics, network calls, native modules, or runtime dependencies.
Use
- Open a Markdown note.
- Select Open handwriting for current note from the command palette, or tap the pen ribbon icon.
- Write. Inkflow creates the sidecar and image after your first stroke.
The canvas follows the active note by default. Turn this off in Settings → Inkflow when you want to keep one canvas pinned while reading other notes.
Controls
| Action | Control |
|---|---|
| Pen | Toolbar or P while the canvas is focused |
| Stroke eraser | Toolbar or E |
| Undo / redo | Toolbar or platform-standard Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z |
| Stroke width | Thin, regular, or bold toolbar buttons |
| Delete handwriting | Trash button beside the save status, or Delete handwriting from current note in the command palette |
| Zoom in / reset | Ctrl/Cmd + wheel |
The eraser removes whole strokes. This is deliberate: it is predictable, fast, and makes undo exact.
Boox and other e-ink devices
Inkflow works directly on Boox and other e-ink tablets.
Boox setup (everyone)
For the best writing speed on a Boox device, go to Settings → App Management → App Optimization, find Obsidian, and set its refresh mode to Fast or Ultrafast. This makes the screen redraw faster while you write. The trade-off: you'll see a bit more ghosting (faint traces of earlier strokes) until the screen does a full refresh.
Boox setup (rooted devices, optional)
Boox reserves its fastest ink path for a handful of apps, such as OneNote and Evernote. On a rooted device, you can add Obsidian to that list yourself by editing your device's ink configuration (eac_config on older firmware, or the onyx_config store on firmware 4.0 and later) and setting the draw view to com.getcapacitor.CapacitorWebView, then rebooting. Steps and file locations: https://gist.github.com/calliecameron/b3c62c601d255630468bd493380e3b7e
This is entirely optional, and only for users comfortable with rooting. Rooting voids your warranty and can brick your device, so only do this if you accept that risk.
What to expect
Without the rooted optimization above, writing in Obsidian on a Boox device will feel a little slower than the built-in Notes app, since Boox limits its fastest ink path to a small set of built-in apps.
Files and privacy
By default Inkflow writes to Attachments/InkFlow:
My-note-abc1234.ink.json # editable source
My-note-abc1234.png # portable snapshot embedded in Markdown
All processing happens on-device. Inkflow does not access the network, collect telemetry, require an account, display ads, or access files outside your vault.
Inkflow assets belong to their note by default. Deleting handwriting keeps the Markdown note, removes its image embed, clears the association, and moves the .png and .ink.json files to your configured Obsidian trash. Deleting the Markdown note performs the same asset cleanup automatically. If an asset is referenced by another note, Inkflow leaves it in place.
Installation
Community plugins
After publication, install Inkflow from Settings → Community plugins → Browse.
Manual / beta
Download main.js, manifest.json, and styles.css from a release and place them in:
<vault>/.obsidian/plugins/inkflow/
Then reload Obsidian and enable Inkflow.
BRAT beta channel
BRAT can install prerelease Inkflow builds without changing the version published in Obsidian's community directory:
- Install and enable BRAT from Community plugins.
- Run BRAT: Add a beta plugin for testing from the command palette.
- Enter
quangnd159/inkflowas the repository. - Enable Inkflow again if Obsidian prompts you.
BRAT downloads the beta main.js, manifest.json, and styles.css from GitHub Releases and can update them independently of the community-store channel. Run BRAT: Check for updates to all beta plugins and update whenever a newer test build is announced.
Development
Requires Node.js 20.19 or newer.
npm install
npm run dev
npm run check
To test in Obsidian, copy or symlink the repository into a dedicated development vault at .obsidian/plugins/inkflow, then enable the plugin. Do not develop against a valuable vault.
Release checklist
- Update
CHANGELOG.md. - Run
npm version patch,minor, ormajor. - Push the commit and the numeric tag (for example
1.0.1, without av). - GitHub Actions builds and attaches
main.js,manifest.json, andstyles.cssto the release. - For the first public version, submit the repository to
obsidianmd/obsidian-releases.