Presenter panel¶
The presenter panel is a collapsible sidebar built into the main view. It shows a preview of the next click, the speaker notes, a wall clock, and an elapsed timer. Press p to toggle it.
Opening it¶
While the deck is being served, open the panel in either of these ways:
- Press p in the main view.
- Click the presenter-icon button in the status bar.
The stage shrinks to make room for the panel on the right. Press p again (or click the button again) to close it and return to the full-width view.
Layout¶
┌──────────────────────────────────────┬─────────────────┐
│ │ 14:32:07 04:22│
│ │ Slide 4 / 12 ○ │
│ CURRENT SLIDE ├─────────────────┤
│ (stage — same view the audience │ NEXT │
│ sees, with live transitions) │ [preview] │
│ │ │
│ ├─────────────────┤
│ │ │
│ │ [notes] │
│ │ │
└──────────────────────────────────────┴─────────────────┘
- Info strip: clock (current time), elapsed time since the page was opened, current slide number, and a circular step indicator matching the one in the status bar.
- Next: a preview of the next click — either the same slide with one more step
revealed, or the first state of the following slide. Shows
ENDafter the last slide. - Notes: the rendered speaker notes for the current slide.
Speaker notes¶
Notes come from the same slide data as the main view.
For slides with a Markdown file (md=), use the ::notes:: zone marker.
Anything after the marker is routed to the notes pane and does not appear
on the slide itself:
# My slide title
Content shown on the slide.
::notes::
These are the speaker notes.
They support **Markdown**, including lists and `code`.
You can also pass notes directly via the notes= parameter on any Slide:
Slide("diagram", notes="Walk through the diagram top to bottom.")
Slide("results", notes=Path("slides/results-notes.md"))
See Authoring slides and Manifest reference for details.
Using a second screen¶
To present on a projector while keeping the panel on your laptop screen, open two
browser windows at the same URL (http://localhost:7777).
In the window on your laptop screen, press p to open the panel.
Leave the other window full-screen on the projector.
Navigation in either window is broadcast to the other over WebSocket, so both stay in sync regardless of which one you use to advance.
Multi-window sync¶
Position sync runs over the same WebSocket the main view uses for live reload. Any number of windows can be open at once:
- A navigation in any window is broadcast to every other open window.
- A window opened at the bare URL adopts the shared position on connect, so it lands where the presenter already is (second-screen follow).
- A window opened at a deliberate deep link (a URL with a slide number, such as
/5) keeps that slide instead of being pulled to the shared position. A browser refresh counts as a deep link, so reloading never yanks a window off its slide. - After a deck rebuild, the position is preserved (clamped if the slide count drops).
Sync modes¶
Each window chooses how it participates, independent of the others. Cycle the mode with s, or click the sync button in the status bar and pick from the menu. The button shows the active mode and tints when it is anything but two-way.
| mode | broadcasts its navigation | follows other windows |
|---|---|---|
| Two-way (default) | yes | yes |
| Present | yes | no |
| Follow | no | yes |
| Solo | no | no |
Use Present on the window you drive from and Follow on a screen that should only ever track it, so an accidental key press on the follower cannot move the deck. Switching a window into Follow (or Two-way) immediately catches it up to the current position. The choice is remembered per browser tab across reloads.