Creating presentations is a frequent task for developers, yet the dominant tools – PowerPoint, Google Slides, and Keynote – feel heavy and out of place in a terminal-centric workflow. presenterm (mfontanini/presenterm on GitHub) offers a compelling alternative: a tool that renders Markdown files as beautiful slide presentations directly in the terminal, with syntax highlighting, image support, and live code execution.
Created by mfontanini, presenterm brings the elegance of Markdown-based presentation tools like reveal.js to the terminal environment. Slides are written in plain Markdown with a simple convention – each slide is separated by a level-1 heading or the standard --- separator – and the tool handles the rest. The result is a presentation that is version-controllable, distraction-free, and always ready to present, whether or not you have a projector or external display.
The tool makes extensive use of modern terminal capabilities. It supports 24-bit true color rendering, inline images through the Kitty terminal protocol and sixel graphics, Unicode box-drawing characters for slide layouts, and terminal hyperlinks. For terminal emulators that support these features, the presentation quality rivals GUI-based tools while operating entirely within the terminal.
Rendering Pipeline
presenterm converts Markdown content into terminal-rendered slides through a multi-stage pipeline:
flowchart LR
A[Markdown File\nPresentation Source] --> B[Markdown Parser\nSyntax Analysis]
B --> C[Slide Builder\nContent Segmentation]
C --> D[Theme Application\nStyling & Colors]
D --> E[Syntax Highlighting\nCode Rendering]
D --> F[Image Rendering\nKitty / Sixel Support]
E --> G[Terminal Output\nSlide Display]
F --> G
G --> H[User Interaction\nNavigation / Execution]
H --> GEach stage can be customized through configuration files, themes, and annotations within the Markdown source.
Feature Comparison
| Feature | presenterm | reveal.js | PowerPoint | slides (go) |
|---|---|---|---|---|
| Markdown input | Yes | Yes | No | Yes |
| Terminal native | Yes | No | No | Yes |
| Syntax highlighting | Yes | Yes | Limited | Yes |
| Code execution | Yes | No | No | No |
| Image display | Yes | Yes | Yes | Limited |
| Presenter notes | Yes | Yes | Yes | Yes |
| Custom themes | Yes | Yes | Yes | Yes |
| Slide transitions | Yes | Yes | Yes | No |
Advanced Features
Beyond basic slide rendering, presenterm includes several features that make it particularly suitable for technical presentations. The code execution feature allows presenters to embed runnable code blocks in their slides. During the presentation, pressing a key executes the code and displays the output below the source code. This is invaluable for live demonstrations, algorithm walkthroughs, and interactive workshops.
Syntax highlighting is powered by syntect, the same library used by bat and other modern terminal tools. Over 200 syntax definitions are included, covering virtually every programming language used in technical presentations. Common themes like One Half, Dracula, Solarized, and Catppuccin are built in, with support for custom theme definitions.
Presenter notes provide a private view of speaker notes that are not visible in the main presentation. The notes can include additional context, speaking points, timing information, or references. A separate presenter window can be displayed on a second monitor, showing the current slide, next slide, elapsed time, and presenter notes.
Recommended External Resources
- presenterm GitHub Repository – Source code, themes, and documentation
- Markdown Guide – Comprehensive reference for Markdown syntax
FAQ
What is presenterm? presenterm is an open-source terminal-based presentation tool developed by mfontanini that renders Markdown files as slide presentations directly in the terminal. It supports syntax highlighting for code, image rendering in terminal emulators that support it, code execution within slides, theming, presenter notes, and various slide transitions.
How do you create presentations with presenterm? Presentations are written in Markdown, with each slide separated by a level-1 heading or a slide separator (—). Standard Markdown features are supported including headings, lists, tables, code blocks, images, blockquotes, and inline formatting. The Markdown file is passed to presenterm as a command-line argument, and the presentation displays immediately.
What terminal features does presenterm support? presenterm leverages modern terminal capabilities including 24-bit true color, Unicode graphics, Kitty terminal protocol for inline images, sixel graphics, and terminal hyperlinks. It automatically detects the terminal emulator’s capabilities and adjusts rendering accordingly.
Can presenterm execute code during presentations? Yes, presenterm supports code execution within slides. Code blocks with the ’exec’ annotation can be configured to run their content in a specified language or shell. The output is displayed below the code block, making it useful for live demonstrations during technical presentations.
Does presenterm support presenter notes? Yes, presenterm supports presenter notes that are visible only in a separate presenter window or by pressing a specific key during the presentation. Notes are written as part of the slide content using a special annotation and are not shown in the main presentation view.
Further Reading
- presenterm on GitHub – Source code, themes, and configuration guide
- Markdown Guide – Reference for Markdown syntax and best practices
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!