rslides is a terminal-native presentation tool for Markdown slide decks.
It is built for live technical talks: fast startup, keyboard-first navigation, syntax-highlighted code blocks, and image rendering in modern terminals.
- Markdown-first workflow
- Runs directly in the terminal (
kitty,iTerm2,ghostty, and ASCII fallback) - Code highlighting with
syntect - Slide transitions and fragment reveals
- Tables, callouts, quotes, lists, headings, and column layouts
- Custom color themes via a simple config file
- Source-available with non-commercial terms (free to fork/modify, not for sale)
cargo build --releasecargo run -- demo.md./target/release/rslides my-talk.mdrslides [--theme <file>] <file.md>
Example:
rslides --theme theme.example demo.mdl/Right/Down: next slide (or next reveal fragment)k/Left/Up: previous slide (or previous reveal fragment)q/Esc: quit
When ANSI TUI mode is unavailable, rslides falls back to plain mode with:
n(orl): nextp(ork): previousq: quit
Slides are split by ---.
# Slide One
Content
---
# Slide Two
More contentPer-slide config on delimiter lines:
--- {columns: [2,3], image-mode: native, title: "Deep Dive"}Supported keys:
columns: integer ratios for layout (for example[2,3])image-mode:auto,ascii, ornativetitle: optional display title
- Reveal fragments:
<!-- reveal: on -->- Slide line spacing:
<!-- line_spacing: 2 -->- Inline spacing spacer:
<!-- line-spacing: 8 -->- Column break:
<!-- column: 1 -->- Column alignment:
<!-- align: center -->Use standard Markdown image syntax:
![ [valign: middle, halign: center, alt: "Image caption"] ](assets/demo.png)Notes:
- One image per slide is supported.
- GIF animation works in ASCII mode and native image mode.
- SVGs are rasterized for native terminal rendering.
If the first slide contains only the fields below, it is parsed as a cover:
title: My Talk
sub_title: Rust + Terminal UX
author: Jane Doe
image: assets/demo.pngPass a theme file with --theme.
Theme format:
title_start=178,102,255
title_end=102,245,255
text=220,225,232
See theme.example for all keys.
cargo check
cargo testThis repository is published for transparency and reuse, but external pull requests are not accepted.
You are free to check, download, fork, and modify under the license terms.
For responsible disclosure, see SECURITY.md.
This project is source-available under a non-commercial license.
Forking and modification are allowed; selling is not allowed. See LICENSE.
