
This repository is a major fork of the upstream DashReader project (original: inattendu/dashreader).
It diverges heavily in UI, navigation behavior, and internal structure.
If you’re looking for the upstream plugin, use the original repo. If you want the “focus-first RSVP modal reader” with strong navigation, use this fork.
DashReader is an RSVP (Rapid Serial Visual Presentation) speed-reader for Obsidian.
Instead of scanning lines, DashReader shows a focus band (center row) and presents text in word chunks at a controlled speed (WPM). This fork emphasizes:
- A distraction-free modal “reading page”
- Reliable navigation (seek, headings, time-based rewind/forward)
- Context windows that match what you actually see on screen (line-wrapped context)
- Timing consistency: time estimates and playback share the same model
DashReader opens as a modal overlay with a blurred backdrop (theme-dependent).
Top
- Breadcrumb navigation showing your current heading path
- Outline / dropdown menus for heading jumps
Middle
- The RSVP focus band with ORP anchoring + focus overlay lines
- Headings/callouts display with separators (when encountered)
Context
- Optional context panels:
- “Before” context above the focus band
- “After” context below the focus band
- Context is line-based and uses your window’s real wrapping
Bottom
- Progress bar (seekable)
- Progress info (index + time)
- On-screen navigation buttons (mobile-friendly)
- Tap/click on the reading area toggles playback.
- Designed for mobile first: you don’t need precise button taps.
When playback is paused, scrolling steps through text word-by-word.
- Scroll down: step forward
- Scroll up: step backward This is for precise “scrubbing” without starting playback.
Click anywhere on the progress bar to jump to that point in the text.
- If you were playing, playback continues from the new position.
- If you were paused, it stays paused (seeking won’t force playback).
Hovering the progress bar shows:
- Current heading path
- Word position (e.g., 1200/5600)
- Virtual-time position (elapsed/total), using the same timing model as playback
DashReader supports heading jumps:
- Previous heading / Next heading actions jump across headings
- Repeating the action quickly cycles headings (useful for scanning structure)
- Callouts can be treated as “pseudo-headings” (depending on parsing rules)
- Breadcrumb shows hierarchical path (H1 › H2 › H3…)
- Outline menu shows the document structure for quick jumps
- Dropdown menu supports sibling navigation
- Jumping via these menus respects your play/pause state (no unexpected autoplay)
Rewind/forward actions move by seconds, not word counts. This fork uses a virtual timeline so rewind/forward remains consistent even when:
- micropauses are enabled
- slow start / acceleration are enabled
- you seek using the progress bar
On-screen controls include jump-to-start and jump-to-end actions.
DashReader’s playback and time estimates use a virtual timeline:
- The same rules used to delay words during playback are also used to compute elapsed/total times
- This keeps progress/time/rewind/forward consistent with:
- micropauses
- slow-start
- acceleration
This fork includes separate desktop/mobile profiles where relevant.
- Words per minute (WPM)
- Words at a time (chunk size)
- Auto-start + delay (optional)
- Font size (desktop + mobile)
- Minimum token font size (for shrink-to-fit on long tokens)
- Font family
- Show/hide context per profile
- Context lines (desktop + mobile)
- Context font size (desktop + mobile)
- Show breadcrumb
- Show progress bar
- Highlight color
- Font color
- Background color
You can leave these blank to defer to theme/CSS variables.
Micropause can be toggled and tuned by category, for example:
- sentence-ending punctuation
- other punctuation
- long words
- paragraph breaks
- numbers
- section markers
- list bullets
- callouts
These apply when the DashReader modal is open and no input field is focused.
Space: Play/Pause←: Rewind 10 seconds→: Forward 10 secondsCtrl/Cmd + ←: Jump to startCtrl/Cmd + →: Jump to end↑: Previous heading↓: Next headingEsc: Stop/quit reading
s: Toggle the inline controls/settings panel (opens/closes the bottom inline panel)
Common entry points:
- Ribbon icon
- Command palette
- Editor context menu (“Read with speed reader”) when text is selected
DashReader will load from the active markdown note and can start from your selection/cursor depending on how you invoke it.
This fork is not published as an Obsidian Community Plugin release.
Install options:
- Manual install (copy the built plugin into
.obsidian/plugins/) - BRAT (if you use it)
- Upstream:
inattendu/dashreader - This fork:
MiserMagus/dashreader
This fork prioritizes a different reading workflow and is not intended to remain API-compatible with upstream.
MIT (inherit upstream license; see LICENSE)