When delivering technical presentations, software demos, or engineering talks, context switching between browser slides and terminal commands can disrupt audience focus. presenterm is a modern, terminal-based slide deck presentation tool written in Rust. It compiles straightforward Markdown documents into rich, interactive terminal presentations featuring syntax-highlighted code blocks, animated transitions, embedded images, LaTeX equations, and live code execution directly within the terminal shell.
Key Capabilities of presenterm
Compared to conventional slide applications or basic CLI display tools, presenterm provides extensive presentation-grade features:
- Pure Markdown Authoring: Slides are authored in clean, version-controllable Markdown separated by standard horizontal rules (
---). - Syntax Highlighting & Line Numbers: Integrates native syntax highlighting across dozens of programming languages with precise line highlighting.
- Terminal Image Rendering: Displays graphics and diagrams natively using Kitty, iTerm2, Sixel, or ASCII rendering protocols.
- Dynamic Slide Pauses: Incremental bullet revelation and step-by-step animations triggered using standard pause comments (
<!-- pause -->). - Built-in Theming: Includes sleek dark and light themes (such as Catppuccin, Gruvbox, and Dracula) with support for custom YAML styling.
- Export to PDF: Generate distributable slide PDFs directly from your terminal session.
How to Install presenterm on Linux
You can install presenterm across popular distributions using Cargo, precompiled binaries, or package managers:
| Method | Terminal Command |
|---|---|
| Cargo (Rust Toolchain) | cargo install presenterm |
| Arch Linux (AUR) | yay -S presenterm |
| Precompiled GitHub Binary | curl -sL https://github.com/mfontanini/presenterm/releases/latest/download/presenterm-x86_64-unknown-linux-gnu.tar.gz | tar xz && sudo mv presenterm /usr/local/bin/ |
Confirm the installation by checking the tool version:
presenterm --version
Creating Your First Markdown Presentation Deck
Create a new presentation file called demo.md using your preferred text editor:
nano demo.md
Insert the following Markdown content demonstrating slide structure, code blocks, and pause transitions:
---
title: Introduction to Modern CLI Tools
author: DevOps Engineering Team
---
# Modern Terminal Workflows
Welcome to our interactive terminal presentation.
<!-- pause -->
Key focus areas for today:
* High-concurrency shell utilities
* Syntax-highlighted file previewers
* Automated pipeline auditing
---
## Code Example: Rust Concurrency
```rust
use std::thread;
fn main() {
let handle = thread::spawn(|| {
println!("Worker thread running inside the terminal!");
});
handle.join().unwrap();
}
```
<!-- pause -->
The thread executes in isolation without blocking the main event loop.
Running the Presentation in the Terminal
To launch your presentation deck, run:
presenterm demo.md
The screen clears and renders the title slide formatted with borders and headers.
Presentation Navigation Controls
Navigate your slides seamlessly during meetings and webinars using these keybindings:
| Key / Shortcut | Action |
|---|---|
| Right Arrow / l / Space | Advance to next step, pause, or slide. |
| Left Arrow / h | Return to previous step or slide. |
| Home / g | Jump immediately to the first slide. |
| End / G | Jump immediately to the final slide. |
| e | Execute the currently visible code block (if enabled). |
| q / Ctrl + C | Exit presentation mode and restore the shell prompt. |
Customising Presentation Themes
Switch themes dynamically from the command line without modifying your presentation source:
presenterm -t catppuccin-mocha demo.md
presenterm -t dracula demo.md
You can also embed the theme: name property in your slide deck frontmatter to lock a consistent aesthetic for your entire team.