图片和动图需要终端本身支持图像协议,普通终端下无法显示;mermaid、d2、LaTeX 公式渲染可能需要额外安装对应工具;README 未给出直接运行命令,需查阅文档确认用法
presenterm
mfontaniniBSD-2-Clause活跃维护在终端里把 Markdown 直接变成幻灯片播放,写演示文稿不用离开命令行,适合喜欢纯文本和终端工作流的开发者。
A markdown terminal slideshow tool
brew install presentermREADME 未说明硬件要求;图片与动图显示依赖 kitty、iterm2、wezterm、ghostty、foot 等终端。
用 Markdown 写幻灯片,直接在终端里放映,省去打开 PPT 工具的麻烦
在终端里把 Markdown 直接变成幻灯片播放,写演示文稿不用离开命令行,适合喜欢纯文本和终端工作流的开发者。
核心能力
- 用 Markdown 文件组织一页或多页幻灯片
- 在 kitty、iterm2、wezterm 等终端显示图片和动图
- 内置多套主题,可自定义颜色、边距与对齐布局
- 支持多语言代码高亮与选择性动态高亮
- 可渲染 mermaid、d2 图及 LaTeX、typst 公式
容易踩的坑
- v0.16.1最新正式版2026-02-20 · 2026-02-20 01:51 UTC
- v0.16.02026-02-16 · 2026-02-16 00:01 UTC
查看更新说明
Breaking changes
- Sixel is now supported in all platform and enabled by default. The will break any build scripts that enable the
sixelfeature flag since that is now gone. Any maintainer that is building the package and enabling that flag should no longer do so (#828).
New features
- Allow executing snippets inside a PTY. This allows you to run tools that move the cursor around and redraw the terminal inside a slide (e.g.
top,htop, etc). (#781) (#794) (#809) (#788) (#808) (#807) (#789). - Use
icy_sixelcrate instead ofsixel-rs.icy_sixelis a pure rust crate which simplifies code distribution and allows enablingsixelsupport by default (#818) - thanks @gcavelier. - Add support for user comments in presentation rendering (#773).
- Allow passing in a mermaid config file (#833).
- Allow specifying
mmdcpuppeteer config path (#830) (#842). - Add keymap to toggle layout grid (#718).
- Add
+auto_execattribute to snippets (#732). - Update bat themes/syntaxes to latest to support a few new themes (#811).
- Add tokyonight moon/day/night themes (#751) - thanks @cloudlena.
- Allow configuring a global alignment in theme (#801).
- Add dynamic theme option (light/dark) based on terminal color (#778) - thanks @JOTSR.
- Add common es executors and support jsx and ts(x) snippets (#783) - thanks @JOTSR.
- Allow configuring code block line numbers at theme level (#771).
- Allow setting prefix on slide titles (#739).
- Allow configuring whether first h1 heading is slide title (#738) (#756).
- Allow styling bold/italics (#737).
- Respect
pausein speaker notes (#735). - Add
--list-comment-commandscli option (#723) - thanks @rochacbruno. - Allow setting headings to be bold/italics/underlined (#721).
- Add
typescript-react/tsxhighlighting (#777) - thanks @JOTSR. - Add dart code highlighting #779 ([#780](https://
- Sixel is now supported in all platform and enabled by default. The will break any build scripts that enable the
- v0.15.12025-08-03 · 2025-08-03 20:41 UTC
- v0.15.02025-07-13 · 2025-07-13 20:52 UTC
查看更新说明
Breaking changes
- The behavior for "jump next fast" and "jump previous fast" keybindings (defaults to
nandp) now jumps straight from one slide to the next/previous one ignoring pauses. Before this used to "reveal" all pauses when jumping forward before going to the next slide. This behavior was weird and unintuitive so now fast jumps go straight into the next/previous slides. The action of "showing all pauses on the current slide" can now be done by pressings(#678).
New features
- Allow specifying where a snippet's execution output will go (#658).
- Add
includecomment command to import markdown files (#651) (#683). - Allow validating snippets without explicitly executing them by using
--validate-snippetsswitch (#645) (#637). - Support iterm2 image protocol when running in tmux (#661).
- Add support for d2 diagrams (#657).
- Errors encountered when parsing markdown now always display the file, line, and column where the error was found, as well as the markdown line that caused the error (#674) (#653) (#684) (#685).
- Superscript via
^this^and<sup>this</sup>syntaxes is supported when using the kitty terminal. For other terminals we try to use unicode half block characters which cover a portion of the ASCII charset. (#606)(#617 ) (#665). - Allow alternative snippet executors for languages that support execution. This allows, for example, runnig rust code via
rust-scriptor python code viapytest(#614). - Allow using env var
PRESENTERM_CONFIG_FILEto point to the config file (#663) - thanks @Silver-Golden. - Set background color via OSC 11 to avoid having a colored edge around the presentation (#623) (#624) (#627).
- Add support for markdown footnotes (#616).
- Runtime errors are now centered rather than being left aligned with some fixed margin (#638).
- Allow configuring number of newlines in between list items (#628).
- Allow 3 digit hex colors (#609) - thanks @peterc-s.
- Allow configuring font used in PDF export (#608).
- Added
- The behavior for "jump next fast" and "jump previous fast" keybindings (defaults to
- v0.14.02025-05-17 · 2025-05-17 20:36 UTC
查看更新说明
New features
- Add support for exporting presentations as HTML files (#566) (#595) (#575) (#599) - thanks @JustSimplyKyle.
- Snippet execution output now contains configurable padding and built-in themes default to the same padding as snippets (2 spaces horizontally, one line vertically) (#592) (#593).
- Add highlighting and execution support for Jsonnet (#585) - thanks @imobachgs.
- Allow configuring snippets to be executed sequentially during exports (#584).
Fixes
- Skip slides with pauses correctly (#598).
- Avoid printing text if there's no vertical space for it, which otherwise looks bad particularly when using font size > 1 (#594).
- Execute snippets only once during export (#583).
- Don't add an extra pause after lists if there's nothing left (#580).
- Allow interleaved spans and variables in footer (#577).
- Truly center
+exec_replacesnippet output (#572).
Docs
- Added link to public presentation using presenterm (#589) - thanks @pwnwriter.
- Rename parameter name to the correct one in docs (#570) - thanks @DzuWe.
- Fix typo in highlighting.md (#586) - thanks @0atman.
Chore
- Bump dependencies (#596).
❤️ Sponsors
Thanks to the following users who supported presenterm via a github sponsorship in this release:
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
presenterm
presenterm lets you create presentations in markdown format and run them from your terminal, with support for image and animated gifs, highly customizable themes, code highlighting, exporting presentations into PDF format, and plenty of other features. This is how the demo presentation looks like when running in the kitty terminal:

Check the rest of the example presentations in the examples directory.
Documentation
Visit the documentation to get started.
Features
- Presentations consist of one or more markdown files.
- Images and animated gifs on terminals like kitty, iterm2, wezterm, ghostty and foot.
- Customizable themes including colors, margins, layout (left/center aligned content), footer for every slide, etc. Several built-in themes can give your presentation the look you want without having to define your own.
- Code highlighting for a wide list of programming languages.
- Font sizes for terminals that support them.
- Selective/dynamic code highlighting that only highlights portions of code at a time.
- Column layouts.
- mermaid graph rendering.
- d2 graph rendering.
- LaTeX and typst formula rendering.
- Introduction slide that displays the presentation title and your name.
- Slide titles.
- Snippet execution for various programming languages, including execution inside pseudo terminals.
- Export presentations to PDF and HTML.
- Slide transitions.
- Pause portions of your slides.
- Custom key bindings.
- Automatically reload your presentation every time it changes for a fast development loop.
- Define speaker notes to aid you during presentations.
See the introduction page to learn more.
presenterm in action
Here are some talks and demos that feature presenterm:
- Are we Ratatui yet? by Samuel Åkesson
- If it can compute, it can run Ratatui by Orhun Parmaksız
- Building Embedded TUIs with Rust & Ratatui by Orhun Parmaksız
- Bringing Terminal Aesthetics to the Web With Rust by Orhun Parmaksız
- 7 Rust Terminal Tools That You Should Use by Orhun Parmaksız
- Renaissance of Terminal User Interfaces with Rust by Orhun Parmaksız
- Using Nix on Apple Silicon and declarative development environments by pwnwriter
- Hayasen: A Robust Embedded Rust Library which supports multiple sensors by Vaishnav-Sabari-Girish
- Using ratatui in Embedded sytems : Meet Mousefood by Vaishnav-Sabari-Girish
Gave a talk using presenterm? We would love to feature it here! Open a PR or issue to get it added.