Skip to content

cortexuvula/RSVP

Repository files navigation

RSVP Reader

A cross-platform Rapid Serial Visual Presentation (RSVP) speed reading application built with Python and PyQt6.

Features

  • RSVP Display: Shows text one word at a time with Optimal Recognition Point (ORP) highlighting
  • Adjustable Speed: Control reading speed from 50 to 2000 words per minute
  • Multiple Input Sources: Load text from files, URLs, or clipboard
  • Smart Pausing: Automatically pauses longer at sentence and clause boundaries
  • Progress Tracking: Visual progress bar with time remaining estimate
  • Bookmarks: Save and return to positions in files
  • Customizable Display: Adjust fonts, colors, and display settings
  • Cross-Platform: Works on Windows, macOS, and Linux

Installation

From Source

# Clone the repository
git clone <repository-url>
cd RSVP

# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e .

Requirements

  • Python 3.10 or higher
  • PyQt6

Development

# Install dev dependencies (pytest, ruff, etc.)
pip install -e ".[dev]"

# Run the test suite (Qt offscreen needed in headless environments)
QT_QPA_PLATFORM=offscreen pytest tests/ --cov=rsvp

# Lint and format
ruff check .
ruff format .

Usage

Running the Application

# Run directly
python -m rsvp.main

# Or if installed
rsvp

Keyboard Shortcuts

Key Action
Space Play/Pause
S Stop
Left/Right Skip 10 words
Shift+Left/Right Previous/Next sentence
Up/Down Increase/Decrease speed
Home/End Go to start/end
Ctrl+O Load text
Ctrl+V Paste and read
Ctrl+B Add bookmark
Ctrl+, Settings
F11 Fullscreen
Escape Pause

Building Standalone Executables

Using PyInstaller

# Install PyInstaller
pip install pyinstaller

# Build executable
pyinstaller --name "RSVP Reader" --windowed --onefile rsvp/main.py

The executable will be created in the dist directory.

Platform-Specific Builds

Windows

pyinstaller --name "RSVP Reader" --windowed --onefile --icon=icon.ico rsvp/main.py

macOS

pyinstaller --name "RSVP Reader" --windowed --onefile --icon=icon.icns rsvp/main.py

Linux

pyinstaller --name "rsvp-reader" --windowed --onefile rsvp/main.py

Configuration

Settings are stored in platform-specific locations:

  • Windows: %LOCALAPPDATA%\RSVP\settings.json
  • macOS: ~/Library/Application Support/RSVP/settings.json
  • Linux: ~/.config/rsvp/settings.json

How RSVP Works

RSVP (Rapid Serial Visual Presentation) displays text one word at a time at a fixed position on screen. This eliminates the eye movements required in traditional reading, potentially allowing for faster reading speeds.

Optimal Recognition Point (ORP)

Each word has an Optimal Recognition Point - the character position where the eye naturally focuses. This application highlights the ORP in a different color and centers each word on this point, making it easier for the brain to quickly recognize words.

License

This project is licensed under the MIT License — see the LICENSE file for details.

About

Rapid Serial Visual Presentation (RSVP) speed reading application - Cross-platform PyQt6 desktop app

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages