Executable TalkTransform your Markdown presentations into live coding demonstrations with VS Code integration. Features
Getting StartedCreate a PresentationCreate a file with the
Start a Presentation
Keyboard Shortcuts
Floating ToolbarA floating toolbar appears in the bottom-right corner when you hover over the presentation. It provides quick access to VS Code workspace toggles:
Commands
Action Reference
|
| Parameter | Description | Required |
|---|---|---|
path |
Relative path to the file | Yes |
editor.highlight
Highlights specific lines in a file.
[Highlight Code](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:editor.highlight?path=path/to/file.ts&lines=5-10)
| Parameter | Description | Required |
|---|---|---|
path |
Relative path to the file | Yes |
lines |
Line range (e.g., 5-10 or 5) |
Yes |
terminal.run
Runs a command in the integrated terminal. Requires Workspace Trust.
[Run Command](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:terminal.run?command=npm%20test)
| Parameter | Description | Required |
|---|---|---|
command |
URL-encoded command to execute | Yes |
debug.start
Starts a debug session. Requires Workspace Trust.
[Start Debugging](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:debug.start?config=Launch%20Program)
| Parameter | Description | Required |
|---|---|---|
config |
Name of the launch configuration | Yes |
sequence
Executes multiple actions in order.
[Demo Flow](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:sequence?actions=file.open%3Ffile%3Dsrc/main.ts,editor.highlight%3Ffile%3Dsrc/main.ts%26lines%3D1-5)
| Parameter | Description | Required |
|---|---|---|
actions |
Comma-separated list of URL-encoded actions | Yes |
vscode.command
Executes any VS Code command. Requires Workspace Trust.
[Open Settings](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.action.openSettings)
| Parameter | Description | Required |
|---|---|---|
id |
VS Code command ID | Yes |
args |
URL-encoded JSON arguments | No |
Examples:
[Open Settings](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.action.openSettings)
[Toggle Sidebar](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.action.toggleSidebarVisibility)
[Search Extensions](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.extensions.search&args=%22python%22)
[Focus Terminal](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.action.terminal.focus)
[Open Keyboard Shortcuts](https://github.com/ormasoftchile/executable-talk/blob/HEAD/action:vscode.command?id=workbench.action.openGlobalKeybindings)
Dynamic Content Rendering
Embed live content directly in your slides using render directives. These are invisible links that get replaced with actual content when the slide is displayed.
render:file
Embed file contents with optional line range.
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:file?path=src/main.ts&lines=1-20)
| Parameter | Description | Required |
|---|---|---|
path |
Relative path to the file | Yes |
lines |
Line range (e.g., 1-20 or 5) |
No |
lang |
Language for syntax highlighting | No (auto-detected) |
format |
Output format: code, quote, or raw |
No (default: code) |
Examples:
# Show the first 10 lines of package.json
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:file?path=package.json&lines=1-10)
# Show a specific function with TypeScript highlighting
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:file?path=src/utils.ts&lines=25-40&lang=typescript)
render:command
Execute a command and embed its output. Requires Workspace Trust.
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:command?cmd=npm%20--version)
| Parameter | Description | Required |
|---|---|---|
cmd |
URL-encoded command to execute | Yes |
cwd |
Working directory for the command | No |
timeout |
Timeout in milliseconds | No (default: 30000) |
format |
Output format: code, json, or raw |
No (default: code) |
cached |
Cache output between renders | No (default: true) |
Examples:
# Show npm version
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:command?cmd=npm%20--version)
# List source files
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:command?cmd=ls%20-la%20src/)
# Show git status
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:command?cmd=git%20status%20--short)
render:diff
Show git diffs or file comparisons.
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:diff?path=src/main.ts&before=HEAD~1)
| Parameter | Description | Required |
|---|---|---|
path |
File to show git diff for | Yes* |
before |
Git ref to compare against (e.g., HEAD~1, main) |
No (default: HEAD) |
after |
Git ref to compare to | No (default: working tree) |
left |
Left file for file-to-file diff | Yes* |
right |
Right file for file-to-file diff | Yes* |
mode |
Display mode: unified or split |
No (default: unified) |
context |
Number of context lines | No (default: 3) |
*Either path OR both left and right are required.
Examples:
# Show recent changes to a file
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:diff?path=src/main.ts&before=HEAD~3)
# Compare two files
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:diff?left=old/config.json&right=new/config.json)
# Show changes since a specific branch
[](https://github.com/ormasoftchile/executable-talk/blob/HEAD/render:diff?path=src/feature.ts&before=main)
Fragment Animations
Reveal content step-by-step using fragment markers. Add <!-- .fragment --> after any element to make it appear on the next arrow key press:
## Key Features
- First point appears <!-- .fragment -->
- Then the second <!-- .fragment -->
- And finally the third! <!-- .fragment -->
Animation Types
Specify an animation style after .fragment:
- Fade in (default) <!-- .fragment fade -->
- Slide up from below <!-- .fragment slide-up -->
- Slide in from right <!-- .fragment slide-left -->
- Zoom in <!-- .fragment zoom -->
- Dimmed, then highlighted <!-- .fragment highlight -->
| Animation | Effect |
|---|---|
fade |
Fade in (default) |
slide-up |
Slide up from below |
slide-left |
Slide in from the right |
zoom |
Zoom in from smaller |
highlight |
Visible but dimmed, then highlighted |
Fragments work on list items, paragraphs, headings, and block elements. The syntax is compatible with Reveal.js.
Speaker Notes
Add speaker notes to any slide using the notes field in YAML frontmatter:
---
notes: |
Key points to cover:
- Explain the architecture
- Show the demo
- Answer questions
---
# Slide Title
Slide content goes here...
View speaker notes by running Executable Talk: Open Presenter View.
Presentation Options
Customize the presentation using the options field in the deck frontmatter:
---
title: My Presentation
author: Your Name
options:
toolbar: true # Show toolbar (default: true)
zenMode: true # Enter Zen Mode on start (default: true)
showSlideNumbers: true # Show slide numbers (default: true)
showProgress: false # Show progress bar (default: false)
fontSize: medium # Font size: small, medium, large
theme: dark # Theme: dark, light
---
Toolbar Customization
The floating toolbar can be customized to show only specific buttons:
options:
toolbar:
- sidebar # Toggle Sidebar
- panel # Toggle Panel
- terminal # Toggle Terminal
- activityBar # Toggle Activity Bar
- zenMode # Toggle Zen Mode
Set toolbar: false to hide it completely.
Workspace Trust
For security, actions that execute code (terminal.run and debug.start) require Workspace Trust. When opening a presentation with executable actions in an untrusted workspace:
- You'll be prompted to confirm before proceeding
- Actions requiring trust will show as blocked
- You can still use
file.openandeditor.highlightactions
Requirements
- VS Code 1.85.0 or higher
- Workspace Trust enabled for
terminal.runanddebug.startactions
Extension Settings
This extension does not contribute any settings.
Known Issues
- Multi-monitor presenter view requires manual command execution (no automatic detection)
- Zen Mode state detection is approximate
Release Notes
See CHANGELOG.md for version history.
License
MIT
Made with ❤️ for live coding presentations