Omahub
← All plugins
S

Speed reader

by sterre-g

Reads the clipboard one word at a time, pinned at the optimal recognition point, at a speed you choose.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
9bbacd2
Scanned
2 weeks ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
9bbacd2
Reviewed
2 weeks ago

This is a straightforward RSVP clipboard reader that reads the clipboard with wl-paste and displays the words locally. No network access, persistence, obfuscation, or destructive behavior was found, and the deterministic scan found no issues. Manual review agrees with the scan.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/sterre-g/omarchy-speed-reader --enable
Productivity #bar #quickshell

omarchy-speed-reader

Reads the clipboard to you one word at a time, in the bar.

The reader in the middle of the screen over a dimmed desktop, one word between two ticks

Rapid serial visual presentation: instead of your eyes travelling along a line, the words come to a fixed point. Each word is pinned so that its optimal recognition point, roughly a third of the way in, sits on the same pixel every time. That is the marked spot between the two ticks.

The word before and the word after are drawn either side, faded and smaller, so you can see where the sentence is going without looking away from the marked spot. They hang off the ends of the focus word rather than sharing a row with it, so a long neighbour never shifts the letter you are fixed on.

Long words, commas and full stops each get proportionally more time, so 500 wpm does not mean every word flashes for exactly 120 ms.

Install

omarchy plugin add https://github.com/sterre-g/omarchy-speed-reader.git --enable
omarchy plugin enable sterre.speed-reader --section right

Using it

Copy some text, then click the bar button. The reader opens in the middle of the screen, over a dimmed background, and the clipboard loads automatically.

That position is the point: the whole idea of RSVP is that your eyes stop travelling, so the word sits where you are already looking rather than in a popup pinned to the bar.

  • Left click opens the reader, right click reloads the clipboard without opening.
  • Clicking the dimmed background or pressing Esc closes it.
  • space play and pause, h and l move a sentence back and forward, k and j change speed by 25 wpm, r reloads the clipboard, 0 restarts, Esc closes.
  • Closing the panel pauses. Reopening keeps your place.

From a keybinding:

omarchy-shell sterre.speed-reader readnow   # open, load the clipboard and start
omarchy-shell sterre.speed-reader read      # open and load, without starting
omarchy-shell sterre.speed-reader play
omarchy-shell sterre.speed-reader pause
omarchy-shell sterre.speed-reader speed 600
omarchy-shell sterre.speed-reader status

A good ~/.config/hypr/bindings.lua entry:

o.bind("SUPER + SHIFT + R", "Speed read clipboard", "omarchy-shell sterre.speed-reader readnow")

Settings

wpm and autoLoad, editable from the widget settings UI or inline on the entry in ~/.config/omarchy/shell.json. See barWidget.schema in manifest.json.

How it works

Model.js holds everything worth testing: tokenizing, the optimal recognition point per word, the per word dwell multipliers, sentence boundaries for jumping, the neighbouring words, and the readouts. test/model.test.js covers it with plain node assertions.

Panel.qml is the widget. It reads the clipboard with wl-paste -n through a Quickshell Process, and drives a Timer whose interval is recomputed per word.

Only the widget on the focused monitor answers IPC, so read opens the reader on the screen you are looking at rather than on whichever monitor replied first.

Text is never written anywhere. It is read from the clipboard into memory and dropped when you load something else.

Development

./run-tests
./dev-sync
omarchy plugin validate ~/.config/omarchy/plugins/sterre.speed-reader
omarchy-shell shell rescanPlugins

License

MIT, see LICENSE.