presenterm
A terminal slideshow tool that lets you create and present slides written in Markdown, with syntax highlighting, images, and smooth transitions.
presenterm is a terminal-based slideshow tool. Presentations are written as a
single Markdown file β each slide separated by a horizontal rule β and rendered
directly in your terminal with syntax-highlighted code blocks, images (via the
Kitty graphics protocol, iTerm2, or Sixel), and optional speaker notes.
If you live in the terminal and would rather write slides in your editor than wrestle with Keynote or Google Slides, presenterm is the tool for you.
Features
- Markdown-based β write slides in plain Markdown; no proprietary format, no GUI required
- Syntax highlighting β code blocks are highlighted using the same engine as
bat, supporting hundreds of languages - Image support β display images inline using the Kitty graphics protocol, iTerm2 inline images, Sixel, or Γberzug++
- Themes β ships with several built-in themes and supports fully custom themes defined in YAML
- Speaker notes β add notes to any slide that are visible to you but not your audience
- Slide index β jump to any slide instantly with a built-in index view
- Export to PDF β export your presentation to a PDF file for sharing
- Auto-reload β automatically reloads the presentation when the source file changes, so you can edit and present simultaneously
- Incremental lists β reveal bullet points one at a time for a step-by-step feel
Installation
cargo install presenterm
Or via your system package manager:
# Debian / Ubuntu (Debian 13+)
apt install presenterm
# Fedora
dnf install presenterm
# macOS
brew install presenterm
# Arch Linux
pacman -S presenterm
# Nix
nix-env -iA nixpkgs.presentermWriting a Presentation
A presentation is a single .md file. Slides are separated by ---:
---
theme:
name: dark
---
# My Presentation
A subtitle or tagline here
<!-- end_slide -->
---
## Agenda
- Introduction
- Demo
- Q&A
<!-- end_slide -->
---
## Code example
```rust
fn main() {
println!("Hello from presenterm!");
}
```
<!-- end_slide -->
---
## Thank you
Questions?Usage
# Present a file
presenterm slides.md
# Start in a specific slide
presenterm slides.md --initial-slide 3
# Export to PDF
presenterm --export-pdf output.pdf slides.md
# Validate the presentation without displaying it
presenterm --validate slides.mdKeybindings
| Key | Action |
|---|---|
β / l / Space / n | Next slide |
β / h / p | Previous slide |
gg | Go to first slide |
G | Go to last slide |
<number>G | Go to slide number |
t | Open slide index |
? | Show help |
q / Ctrl+c | Quit |
Themes
Presenterm ships with several built-in themes. Specify one in your presentation's front matter:
---
theme:
name: catppuccin-mocha
---
Available built-in themes include dark, light, catppuccin-mocha,
catppuccin-latte, tokyo-night, gruvbox-dark, and more. You can also define
a fully custom theme in a separate YAML file and reference it by path.
Speaker Notes
Add speaker notes to any slide using an HTML comment β they are visible in a separate pane during the presentation but never shown to the audience:
## My Slide
Some content here.
<!-- speaker_note
Remember to demo the live example here.
Mention the benchmark numbers from the README.
-->