Features

Writing and slide design

You write a talk as a Markdown outline. TalkWeaver turns it into designed slides as you type, and you adjust them without leaving the keyboard.

Every heading is a slide

Write your talk as a Markdown outline. Each heading becomes a slide, and the slides update as you type.

There are no boxes to drag and no canvas to arrange. The outline stays the source of truth, and the slides, the handout and the recording are views of it.

Each talk compiles to one self-contained HTML file with a presenter view. It runs in any browser without a server.

Your talks are ordinary Markdown files in a folder you choose, so you can keep them in any backup or version control you already use.

TalkWeaver with the sample talk Ten years of public bike hire open on the Plain tab: the slide outline in the sidebar, the talk text in the middle with a bike icon on the title What riders ask for, a list of four rows with icons shown as pictures, and a quotation, and slide previews on the right. The margin beside the text reads Talk, Section 1, Slide 3 Icon list and Slide 4 Quote.
The outline in the Plain tab, with the margin naming each slide and its layout; the slide previews are on the right.

The Plain view and the Markdown view

The editor has two tabs, Plain and Markdown. Plain is shown until you choose a tab. The commands are Show the plain view and Show the Markdown view.

Plain hides the layout lines (the {…} lines under a title) and the slide ids, wherever they sit on a slide. It conceals Markdown marks away from the caret and shows quotations formatted. Markdown typed in Plain works. Both tabs edit the same Markdown file.

A margin beside the text reads Talk, Section or Slide n, with the layout name beneath. Sections are numbered and show their level and slide count. Margin menus change a heading’s level and a slide’s layout: the layout menu is titled Layout and its last row is More in Inspector…. The commands are Change this heading’s level… and Change this slide’s layout…. The Talk details panel holds the talk’s front matter.

Plain view font in Settings is Sans or Serif, and Text size has Smaller and Larger buttons.

List-item icons show as pictures in Plain. Plain does not draw icons on a card, carousel-frame or column heading, and it has no widgets for polls, code, QR, countdown or statistics. All of these are still correct in the slides.

The same slide shown twice. On the left the Plain tab shows the title What riders ask for with a bike icon, the list with icons and the margin. On the right the Markdown tab shows the same text as ### What riders ask for {icon=lucide:bike}, then {iconlist} and {id=asks}, and an {icon=…} on each list row.
One slide in the Plain tab (left) and the Markdown tab (right).
The Plain tab with the margin’s Layout menu open on Slide 3, Icon list ticked, and More in Inspector… as the last row.
The margin’s Layout menu on Slide 3, with More in Inspector… as the last row.

A registry of designed layouts

TalkWeaver has layouts for statements, two columns, image grids, carousels, contents pages and diagrams such as flows, timelines and organisation charts.

You choose a layout with a keyboard picker (⌘L) or by typing it in curly brackets under the heading, for example {statement} or {cards}.

The picker shows your own slide in each layout. A Recent row and a Suggested row come first, then every layout grouped by purpose with a line on when it fits. Arrowing onto a layout previews it without changing your outline; ↵ keeps it and Esc puts it back. A slide that cannot fit a layout is flagged, never shrunk.

The layouts share one design language. Titles keep the same size across layouts, and body text never drops below a readable minimum size.

Version 0.41 redraws every layout. The content block is centred in the space under the title. Boxes around text have a subtle outline and a light tint. Body text is larger and regular weight: quotes, paragraphs and rows are never bold, though the figures on a stats slide may be. Connectors start and end on box borders, and a layout may use more than one colour from TalkWeaver’s palette. Green and red keep their meaning of right and wrong. Slides do not lose their images or screenshots.

The deck setting title_look sets how titles look. A deck that does not set it now gets the index tab (tab), so such a deck looks different after you upgrade. A deck that sets a value keeps it. The values are tab, kicker, default (also written full, a plain title at the top), label, tab-strip and intro-then-none. With tab-strip, a row of the section’s slide titles shows with the current one filled, and carousel slides draw it too. With intro-then-none, the section card introduces the topic and the slides after it carry no title. No small line shows above a title unless the slide gives {kicker=…}.

A sample-talk process slide, From dock to dock, whose title sits in the index tab hanging from the top edge.
The index-tab title, the new default.
The layout picker open over the sample talk Ten years of public bike hire, on a list slide: a Recent row, a Suggested row with Cards, Icon row, Numbered list and Grid, and the layouts grouped by purpose. Cards is being previewed on the slide above.
The picker shows your own slide: Cards, previewed on a list slide of four short points.

Lists with icons and logos

A list can show an icon or a logo beside each item. The markup is on the left and the slide it makes is on the right, both from the sample talk Ten years of public bike hire.

Slide titles and paragraphs can carry an icon too. The Inspector has a Title icon row (None, Before, Above) and a Paragraph icon row. Insert icon… on ⌘I opens the icon picker at the caret, in both the Plain and the Markdown view. If an icon ends up away from its title, the Layout Doctor finding Icon not on the title moves it back.

The icon picker opened with ⌘I at the caret on the title of Slide 4, with the search “quote” and 10 matches.
The icon picker at the caret on a slide title, searched for “quote”.

A list with icons

Each item names its icon with {icon=lucide:…} at the end of the line, and {iconlist} under the heading turns the list into rows of icons. An item with no icon named gets none. Insert › Icon opens the icon picker.

### What riders ask for
{iconlist}{id=asks}

- Bikes that are there when I arrive {icon=lucide:bike}
- A safe lane for the whole trip {icon=lucide:route}
- A price I can work out in advance {icon=lucide:pound-sterling}
- A dock near the door {icon=lucide:map-pin}
- Help when something breaks {icon=lucide:wrench}
A slide titled What riders ask for with five rows, each with a line icon at its left: a bicycle, a winding route, a pound sign, a map pin and a spanner, beside the lines Bikes that are there when I arrive, A safe lane for the whole trip, A price I can work out in advance, A dock near the door and Help when something breaks.

A list with logos

{logolist} shows a logo beside each name. TalkWeaver finds the logo from the name: it knows well-known products. A name it does not know gets a grey chip with its first letter instead, and you cannot give it a logo file.

### What the analysis used
{logolist}{id=tools}

- OpenStreetMap
- Python
- GitHub
- Slack
A slide titled What the analysis used with four rows, each with a blue logo at its left: the OpenStreetMap magnifying glass, the Python snakes, the GitHub cat and the Slack hash, beside the names OpenStreetMap, Python, GitHub and Slack.

Quote slides take their form from the source

The Inspector has a Quote form setting: Automatic, Plain, Tweet, Video, Book, Paper and Web. The command palette has a Quote form: … command for each. The Web form shows a quotation from a web page or blog post as a browser window.

A web address on its own line under a quotation sets the form. A DOI makes it a paper and any other web address makes it a web page. An author and a link (-Author link) also set it. A quote slide typed from top to bottom gets its form when you leave the quotation. Only your own typing, pasting or deleting sets a form: a change made by the app, such as a sync or an import, never does. Filling a tweet or a video from a pasted link is not in 0.39.0.

In a quotation, pressing Enter twice leaves it, and ⇧↵ starts a new paragraph inside it. Leaving a quotation keeps a blank line above the next slide. This works in Slide Focus too, with one limit: at the end of a quotation that ends the focused slide, Enter stays inside the quotation, and to add a line under it you leave Slide Focus.

Slide 5 in the editor: an invented quotation with the address https://example.org/market-notes on its own line under it. The slide preview shows the quotation as a browser window.
A web address on its own line under a quotation. The preview shows the quotation as a browser window.

Pictures laid out as a gallery

Put several pictures on one slide, give the slide the {image-grid} layout, and TalkWeaver lays them out as a gallery. You write each picture as one line, with its caption in quotation marks, and you write no sizes or positions. The caption goes under the picture.

The pictures here show the same layout with three, two, four and six photographs. Three pictures sit in one row in window frames, two share a row, four fill two rows of two and six fill two rows of three.

The photographs are public-domain (CC0) images from Wikimedia Commons.

Find images and reuse old slides beside the editor

The image drawer docks beside the editor, in both the Plain and Markdown views, and the editor stays usable while it is open. ⌘⇧I opens or closes it. The shortcut is named Find images, and the Insert menu’s Image… item opens it too. Esc closes it. The drawer replaces the old image palette.

The drawer has three tabs. The SlideWell tab searches your SlideWell screenshots and the images from old PowerPoints that you have added to SlideWell. The PowerPoint Imports tab holds whole slides from old PowerPoints. The TalkWeaver Vaults tab finds pictures already pasted or imported into your TalkWeaver vaults, and works without SlideWell. The drawer does not search the web. Results show captions and “Used in” counts. ⌘↵ or a drag inserts the picture at the caret, and the picture is copied into the talk’s own vault.

Screenshots come from SlideWell. Until it is set up, the first tab shows the line “Screenshots appear here when SlideWell is set up”. Images and slides from old PowerPoints come from the PowerPoints you have added to SlideWell.

The PowerPoint Imports tab shows slides from your old PowerPoints. Choosing a slide asks “Use this slide as”:

  • Editable slide: the slide is added after the current slide, and its text and images stay editable.
  • Picture of the slide: the slide is placed on the current slide as one image, as it looked.

A slide with no text or pictures to edit can only go in as a picture. A reused slide gets its own new id when the talk is saved, and one ⌘Z removes it whole.

What a slide can hold

The Insert menu lists the things a slide can hold: Image, Slides from other talks, Board slide, Icon, Table, Mindmap, Chart, Mermaid, Diagram, SVG, Code, QR code, Action button, Embed, Auto-embed and Countdown. A poll is written as a heading with {poll=single} and a list of options. A quotation uses {quote}.

The first picture shows one object on each slide of a sample talk: a chart, a quotation, a poll, an embedded page, a QR code, a countdown, a table, code and a diagram. The second shows the Insert menu.

AI chat and terminal slides

Four slide designs simulate an AI chat and a terminal: a chat with behind-the-scenes lanes, a chat with rows that open on a click, a plain terminal and an agent terminal. Each can show its parts step by step as you press Next, and each has a larger-text option.

The Inspector and the action bar

The Inspector (⌘P) shows the current slide as the audience will see it. Its options are grouped into sections for the layout, the title, the slide, steps and polls, with a row of shortcuts to each section at the top.

A setting that depends on another appears only while it applies. The List style control always shows the style the slide actually uses.

The action bar above the editor holds buttons for layout, icons, images, slides from other talks, tables, charts, diagrams, the Inspector, presenting, handouts and publishing. A second group covers everyday editing: undo, redo, new slide, promote and demote heading, and lists.

When the window is narrow, buttons move into a menu at the end of the bar. You can turn the bar off in Settings → Workspace.

Slides that are easier to read

Versions 0.35 and 0.37 give slides more space, clearer headings and bigger icons.

Titles

Top titles are smaller. Bold, italic and code in titles show wherever the slide is shown, with bold in the accent colour. The title looks Kicker, Label and Tab can be set for one slide or the whole talk. A slide with too much on it gets an amber mark on its heading line instead of shrinking its text.

Timelines

Stops have more space between them, sit on one clean line, and have bold labels.

Lists

Sidebar titles line up. Icons are bigger and centred on their item, and a faint dotted line separates the items.

Cards and icon rows

Cards and icon rows use the normal text size, with bold headings and bigger icons. To fit a slide, they reduce the spacing before they make the text smaller.

Numbered lists

Numbered lists use the icon-list layout, with the number in a square by default. You can switch to a plain or a styled number in the Inspector.

Section slides

Section divider slides no longer print the word “SECTION” above the title.

Statement slides and quotes beside the sidebar

Statement slides get more line spacing and more room around the text. A quote beside the sidebar loses its panel, and its quote mark hangs in the margin. The section name on subsection slides lines up with the title.

Drawn illustrations of a timeline and a numbered list, not screenshots of the app.

Keyboard shortcuts for writing

Every button has a keyboard path, and every shortcut is listed in the cheat sheet (⌘/). Commands in the command palette can be given a key of your own.

⌘⇧P
Command palette
⌘P
Inspector
⌘L
Layout picker
⌘I
Insert icon
⇧↵
New paragraph in a quotation
Enter twice
Leave a quotation
⌘⇧↑ ⌘⇧↓
Move slide or item up or down
⌘S
Search slides
⌘⌥P
Pathways
F5
Present from the start
⇧F5
Present from this slide
⌘/
All shortcuts