Skip to content

Repository files navigation

ink-presentation

Present your Markdown notes as beautiful Reveal.js slideshows inside Inkdrop v6 — no external tools, no leaving the app.

A note presented as a slide: a Mermaid sequence diagram rendered in the app-native dark theme, with the slide counter and navigation controls

  • 🎨 App-native theme by default — slides follow your Inkdrop theme (light/dark, colors, fonts) live, plus 6 classic Reveal themes
  • ✂️ Flexible slide splitting--- breaks, or automatic #/## heading splitting with vertical stacks
  • 🧮 Diagrams & math — Mermaid diagrams and KaTeX math ($…$ / $$…$$), both loaded lazily only when a note uses them
  • 🗒️ Speaker notes<!-- note: ... --> comments or Note: lines, shown in an in-deck overlay
  • 🪞 Speaker view — press V for a separate synced window with current + next slide, notes, slide counter, and a timer
  • 🔄 Live refresh — edits to the note from another window (or synced from another device) rebuild the open deck in place, keeping your slide position
  • 🧱 Code-fence aware---, #, and Note: inside code blocks never break your slides
  • ⚙️ Per-note config — override theme, transition, splitting, and even deck CSS via YAML frontmatter
  • 🔒 Fully isolated — the deck renders in a Shadow DOM; plugin styles never leak into the app

Install

In Inkdrop, open Preferences ▸ Plugins, search for ink-presentation, and install — or from a terminal:

ipm install ink-presentation
Install from source instead
git clone https://github.com/crafts69guy/ink-presentation.git
cd ink-presentation
pnpm install && pnpm build
ln -sfn "$PWD" ~/Library/Application\ Support/inkdrop/packages/ink-presentation

Inkdrop v6 canary: the canary build keeps its data in inkdrop-canary instead of inkdrop — link into ~/Library/Application Support/inkdrop-canary/packages/ink-presentation.

Usage

Open a note, then press Ctrl+Alt+P or select Plugins ▸ Toggle Presentation.

New to the plugin? Run Plugins ▸ Present Sample Deck (or the ink-presentation:present-sample command) to present a bundled demo note that showcases every feature below — no note of your own required. Disable it via the "Show 'Present Sample Deck' command" setting if you don't want it in the command palette.

Keys while presenting

Key Action
/ / Space / PgDn / N / J / L Next slide
/ / PgUp / P / H / K Previous slide
Home / End First / last slide
O Overview grid
S Toggle speaker notes
V Open the speaker view window (current + next slide, notes, timer)
F Toggle fullscreen
B / . Pause (black screen)
Esc Close overview grid, or close the presentation (exits fullscreen too)

Writing slides

See docs/writing-slides.md for the full guide. Quick example:

---
theme: inkdrop
transition: fade
---

# My Talk

Intro slide

---

## Code

```js
const answer = 42
```

<!-- note: mention the benchmark here -->

Settings

Preferences ▸ Plugins ▸ ink-presentation

Setting Default Description
Slide separator auto auto picks per note (--- if present, else headings); hr splits on ---; h1/h2 split on headings (h2 stacks H2s vertically)
Theme inkdrop inkdrop follows the app theme; also black, white, league, night, serif, simple
Slide transition slide none / fade / slide / convex / concave / zoom
Enter fullscreen automatically on
Show slide number on
Show progress bar on
Vertical slides off Enables -- as a vertical separator in hr mode
Auto-refresh the deck while presenting on Rebuild the open deck (keeping position) when the note changes in another window or via sync
Show "Present Sample Deck" command on Adds a command/menu entry to present a bundled sample note showcasing the plugin's features

Frontmatter keys (theme, transition, separator, slideNumber, progress, verticalSlides, css) override these per note. css takes a block of deck-scoped CSS injected after the theme (see docs/writing-slides.md).

Known limitations

  • Mermaid diagrams render as SVG; malformed diagrams show an inline error instead of blocking the deck
  • Math delimiters follow remark-math rules — $ must hug the expression (so $5 and $10 stays prose), \$ escapes a literal dollar, and math is not detected inside code or 4-space-indented lines. Invalid TeX renders as red source text
  • Speaker view rides on undocumented Inkdrop internals (the app's own create-simple-window and broadcast-command IPC, discovered in v6 canary.21) — if a future Inkdrop build changes them, V shows an error notification instead of a window
  • Webfonts referenced by Reveal's built-in themes (League Gothic, Source Sans Pro) fall back to system fonts — fonts can't load inside a shadow root

Development

pnpm install
pnpm build        # generate CSS modules + bundle to lib/
pnpm dev          # watch mode
pnpm test         # unit tests (vitest)
pnpm typecheck && pnpm lint

Link into Inkdrop for development (note the canary data-dir caveat — ipm link --dev targets the stable inkdrop dir only):

ln -sfn "$PWD" ~/Library/Application\ Support/inkdrop-canary/dev/packages/ink-presentation

Enable Development Mode in Preferences ▸ General and reload (⌥⌘⇧R).

Docs for contributors:

Publishing

Published to the Inkdrop plugin registry. Releases are cut with ipm publish (validate first with ipm publish --dry-run); the version and git tag are managed in the repo (see docs/verifying.md for the pre-release in-app checklist).

Planned features

Everything from the roadmap has shipped:

  • KaTeX math rendering in slides
  • Popup speaker view
  • Custom per-note CSS via frontmatter
  • Auto-refresh the deck while editing, mid-presentation
  • Plugin-registry publication

PDF/HTML export is intentionally out of scope — Inkdrop's built-in note export already covers it.

License

MIT

About

Present your Markdown notes as beautiful Reveal.js slideshows inside Inkdrop v6

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages