RSVP (Rapid Serial Visual Presentation) reading overlay. Displays text word by word with highlighted center letter (ORP). Press Space to pause and jump to the exact reading position in the editor. I use this application for fast reading of SDD.
cargo install speed-readerOr from source:
git clone https://github.com/bimawa/SpeedReaderRust
cd SpeedReaderRust
cargo install --path guiAdd to ~/.config/zed/tasks.json:
[
{
"label": "SpeedReader: Read current file",
"command": "speed-reader",
"args": ["$ZED_FILE"],
"tags": ["speed-reader"],
"hide": "on_success"
}
]Cmd+Shift+P → SpeedReader: Read current file
Add to ~/.config/zed/keybindings.json:
{
"context": "Editor",
"bindings": {
"cmd-shift-r": ["task::Spawn", { "task_name": "SpeedReader: Read current file" }]
}
}Then Cmd+Shift+R from any buffer.
Launch the reader with selected text instead of the full file:
Add a second task to ~/.config/zed/tasks.json:
[
{
"label": "SpeedReader: Read current file",
"command": "speed-reader",
"args": ["$ZED_FILE"],
"tags": ["speed-reader"],
"hide": "on_success"
},
{
"label": "SpeedReader: Read buffer",
"command": "bash",
"args": ["-c", "pbpaste | speed-reader"],
"tags": ["speed-reader"],
"hide": "on_success"
}
]Usage:
- Select text in the editor.
Cmd+Cto copy selection to clipboard.Cmd+Shift+P→SpeedReader: Read buffer.
Or add a keybinding in ~/.config/zed/keybindings.json:
{
"context": "Editor",
"bindings": {
"cmd-shift-t": ["task::Spawn", { "task_name": "SpeedReader: Read buffer" }]
}
}Then select text, copy, and press Cmd+Shift+T.
Edit ~/.config/speed-reader/config.json:
{
"editor_cmd": "code",
"wpm": 300
}Supports any editor with editor file:line:col CLI syntax (Zed, VS Code, Vim, Helix, etc.).
| Key | Action |
|---|---|
Space |
Pause + jump to editor |
Space (again) |
Resume |
Esc |
Close overlay |
← → |
Skip words |
↑ ↓ |
Speed ±10 WPM |
S |
Settings panel |
| Mouse drag | Move overlay |
core/ RSVP engine (Rust library)
gui/ Desktop overlay (winit + ab_glyph + pixels)
