rsvp-term

Crates.iorsvp-term
lib.rsrsvp-term
version0.6.0
created_at2026-01-05 07:49:05.840957+00
updated_at2026-01-05 14:36:00.533363+00
descriptionTUI for RSVP reading of markdown prose
homepagehttps://github.com/Mootikins/rsvp-term
repositoryhttps://github.com/Mootikins/rsvp-term
max_upload_size
id2023354
size957,856
Matthew Krohn (Mootikins)

documentation

README

rsvp-term

A terminal UI for RSVP (Rapid Serial Visual Presentation) speed reading of Markdown and EPUB files.

Demo

What is RSVP?

RSVP = Read Si Vous Plait (French for "read, if you please") — and also known as Rapid Serial Visual Presentation.

RSVP displays text one word at a time at a fixed position, eliminating eye movement and enabling faster reading. This implementation uses ORP (Optimal Recognition Point) highlighting - the letter your eye naturally focuses on is highlighted in red and centered.

Features

  • ORP-centered display - Spritz-style word presentation with optimal recognition point
  • Markdown support - Parses CommonMark with GFM tables
  • EPUB support - Read EPUB books directly, or export chapters to Markdown
  • Context display - Faded surrounding text above/below current word
  • Outline navigation - Jump between sections via heading outline
  • Adaptive timing - Longer words, punctuation, and paragraph breaks get extra display time
  • Vim-style controls - Familiar keybindings for navigation

Installation

cargo install --path .

Or build from source:

cargo build --release
./target/release/rsvp-term document.md

Usage

# Read a Markdown file
rsvp-term document.md

# Read an EPUB book
rsvp-term book.epub

# Export EPUB chapters to Markdown files
rsvp-term book.epub --export-md

Controls

Key Action
Space Pause/Resume
j / Slower (-25 WPM)
k / Faster (+25 WPM)
h / Rewind ~10 words
l / Skip ~10 words
o Toggle outline view
Enter Jump to section (in outline)
q Quit
? Toggle help
Ctrl+C Force quit

How It Works

  1. Parsing - Markdown/EPUB is parsed into tokens with style (bold, italic, code, link) and block context (paragraph, list, quote, heading)

  2. Timing - Each word gets a base duration (60000ms / WPM) plus modifiers:

    • Long words: +10-20ms per character over 6
    • Punctuation: +150-200ms for commas, periods, etc.
    • Structure: +150-300ms for new blocks/paragraphs
  3. ORP Calculation - The optimal recognition point is ~1/3 into the word:

    • 1-3 chars: position 0
    • 4-6 chars: position 1
    • 7-9 chars: position 2
    • 10+ chars: position 3
  4. Display - Word is centered on ORP position, with context lines fading by distance

Dependencies

License

MIT

Commit count: 0

cargo fmt