This markdown file demonstrates how the terminal slideshow system works.
Key Concept: Every H1 heading (# Title) creates a new slide!
cargo run README.md # This file becomes a slideshow!| Key | Action |
|---|---|
->, l, Space |
Next slide |
<-, h |
Previous slide |
q, Esc |
Quit |
This is Slide 2 because it starts with # Slide Creation Rule
Everything between H1 headings becomes part of the same slide:
- This bullet point is on slide 2
- So is this one
- And any other content until the next H1
H2, H3, H4, H5, H6 headings don't create new slides - they organize content within the current slide.
Press -> to see the next slide!
This is Slide 3 - notice how we jumped here from slide 2?
You can use bold text and italic text in your slides.
Inline code works great for technical content.
• Bullet points for key information
• Multiple levels of organization
• Clear, readable formatting
fn main() {
println!("Code blocks maintain formatting!");
}This is Slide 4 - created by the H1 # How H1 Headings Work
The slideshow parser looks for lines that start with # (H1 markdown syntax).
When it finds one, it:
- Ends the current slide (if any)
- Starts a new slide with that H1 as the title
- Includes all content until the next H1
# First Slide
Content for slide 1
# Second Slide
Content for slide 2
# Third Slide
Content for slide 3This creates exactly 3 slides!
This is Slide 5 - let's learn how to create presentations
Create any .md file with H1 headings:
# My Presentation Title
Introduction content here
# Problem Statement
Describe the problem
# Solution
Your brilliant solution
# Thank You
Closing remarkscargo run my-presentation.mdNavigate with arrow keys, space, or h/l (vim-style)
This is Slide 6 - pro tips for better presentations
All these subheadings stay on the same slide because they're not H1!
| Feature | Status |
|---|---|
| Tables | ✅ Supported |
| Lists | ✅ Supported |
| Code | ✅ Supported |
- Numbered lists work too
- Great for step-by-step processes
- Mix with other content freely
This is Slide 7 - how the system actually works
The slideshow system scans your markdown file looking for:
// Simplified logic
if line.starts_with("# ") {
// Start new slide
slides.push(new_slide);
} else {
// Add to current slide
current_slide.add_content(line);
}| Element | Support | Notes |
|---|---|---|
| Headings | ✅ H1-H6 | Only H1 creates slides |
| Paragraphs | ✅ | Standard text blocks |
| Lists | ✅ | Bulleted and numbered |
| Emphasis | ✅ | italic and bold |
| Code | ✅ | inline and blocks |
| Tables | ✅ | Like this one! |
- Systems Programming: rust, c, cpp/c++/cxx, go, assembly/asm
- Web Development: javascript/js, typescript/ts, html, css, php
- Enterprise: java, csharp/c#/cs, scala, kotlin/kt, groovy
- Scripting: python/py, ruby/rb, perl/pl, lua, powershell/ps1, shell/bash/sh
- Functional: haskell/hs, elixir/ex, erlang/erl, clojure/clj, ocaml, fsharp/f#, lisp, scheme
- Mobile: swift, dart
- Data/Config: json, xml, yaml/yml, toml, ini, properties
- Markup/Documentation: markdown/md, tex/latex
- Database: sql
- Build/Config: dockerfile/docker, makefile/make, nginx, apache
- Scientific: r, matlab
- Legacy: cobol, pascal, fortran, ada
- Hardware: verilog, vhdl
- Other: vim
- Ratatui: Terminal UI framework
- pulldown-cmark: Markdown parsing
- Crossterm: Cross-platform terminal control
This is the Final Slide - time to experiment
- Make a new
.mdfile - Add some H1 headings
- Fill with content
- Run
cargo run your-file.md
# Welcome
Your introduction here
# Main Topic
Core content
# Conclusion
Wrap up thoughtsEvery H1 (# Title) = New Slide
Everything else organizes content within slides.
Now go create amazing terminal presentations!
This presentation demonstrates itself - press q to exit