Introduction
presenterm is a terminal-based slideshow tool written in Rust that renders Markdown files as presentations directly in your terminal. It supports syntax-highlighted code blocks, images (via terminal protocols), LaTeX formulas, and customizable themes.
What presenterm Does
- Renders Markdown files as terminal slideshows with slide separators and incremental reveals
- Displays syntax-highlighted code blocks in 50+ languages with optional line-by-line highlighting
- Shows images inline using kitty, iTerm2, or sixel terminal protocols
- Renders LaTeX math formulas using typst as a backend
- Supports speaker notes, slide transitions, and presentation export to PDF
Architecture Overview
presenterm parses a Markdown file, splits it on configurable slide separators (default: ---), and processes each slide into a sequence of render operations. The rendering engine measures terminal dimensions and lays out text, code blocks, images, and other elements. It uses crossterm for terminal manipulation and syntect for syntax highlighting. Image rendering auto-detects the terminal protocol. Themes are defined in YAML and control colors, margins, alignment, and code block styling.
Self-Hosting & Configuration
- Install via cargo, Homebrew, nix, or download prebuilt binaries for Linux, macOS, and Windows
- Write slides in standard Markdown with
---as slide separators - Customize themes by creating YAML files in
~/.config/presenterm/themes/ - Enable image display by using a terminal that supports kitty graphics, iTerm2 inline images, or sixel
- Export presentations to PDF with
presenterm --export-pdf slides.md
Key Features
- No browser or GUI needed — runs entirely in the terminal over SSH or locally
- Hot-reload mode watches the Markdown file and updates slides on save
- Code execution lets you run code blocks live during a presentation
- Incremental lists and pause commands for step-by-step reveals
- Column layouts, tables, and Mermaid diagram rendering for rich content
Comparison with Similar Tools
- Slidev — Vue-based browser slides; presenterm runs in the terminal with no web stack
- Marp — Markdown-to-slide converter for HTML/PDF; presenterm is a live terminal presenter
- reveal.js — HTML presentation framework; presenterm targets developers who prefer the terminal
- Lookatme — Python terminal presentation tool; presenterm is faster (Rust) with broader feature set
- mdp — Minimal terminal Markdown presenter; presenterm adds images, themes, and code execution
FAQ
Q: Which terminals support image display? A: Kitty, iTerm2, WezTerm, and any terminal supporting the sixel protocol. Text-only terminals skip images gracefully.
Q: Can I use custom fonts or colors? A: Colors and styling are controlled via YAML themes. Font rendering depends on your terminal emulator.
Q: Does it work over SSH? A: Yes. Since it runs in the terminal, you can present from a remote machine via SSH. Image support depends on the client terminal.
Q: Can I export slides to PDF?
A: Yes. Use --export-pdf to render slides to a PDF file using a headless terminal renderer.