#reading #terminal #cli #bionic #rust

bin+lib bio-read

Bionic reading in terminal

4 releases

new 0.2.1 Jan 17, 2025
0.2.0 Jan 15, 2025
0.1.1 Jan 13, 2025
0.1.0 Jan 11, 2025

#83 in Biology

Download history 104/week @ 2025-01-05 332/week @ 2025-01-12

436 downloads per month

AGPL-3.0-or-later

22KB
194 lines

bio-read

GitHub License GitHub Workflow Status GitHub Release GitHub Downloads (all assets, all releases) GitHub Downloads (all assets, latest release) Crates.io Version Crates.io Total Downloads

Bionic reading in terminal.

🚀 Installation

If you have cargo-binstall, you can install this tool by running:

$ cargo binstall bio-read

Otherwise, you can install it from source:

$ cargo install bio-read

📖 Usage

Click to see bio-read in action

[!NOTE] The following asciinema recording is for demonstration purposes only. It may be outdated and may not reflect the latest version of bio-read.

asciicast

$ br --help
Usage: br [<input>] [-f <fixation-point>] [-e <emphasize>] [-d <de-emphasize>]

Bionic reading in terminal.

Positional Arguments:
  input             the file to read from. Read from stdin if not specified.

Options:
  -f, --fixation-point
                    the fixation point. Should be in range [1, 5]. Default is 3.
  -e, --emphasize   customize how to emphasize the text. The emphasized text
                    will take the place of "{}". Example: --emphasize
                    "<em>{}</em>". Default to ansi bold.
  -d, --de-emphasize
                    customize how to de-emphasize the text. The de-emphasized
                    text will take the place of "{}". Example: --de-emphasize
                    "<de>{}</de>". Default to ansi dimmed.
  -h, --help        display usage information

For simple usage, run br with the file you want to read:

$ br file.txt

Alternatively, pipe the text you want to read into br:

$ cat file.txt | br

To set fixation points, use the -f flag, which is a shorthand for --fixation-point:

$ cat file.txt | br -f 1

📝 Notes

Although this tool aims to be as close to the original bionic reading as possible, it is not exactly the same. Notably, the behavior differs when a word is too long, and it handles special characters differently. However, this tool is open-source, and guarantees linear time complexity and and constant memory usage.

On some terminals, you may need to configure emphasized text style to be "bold" for displaying ansi styles properly. Taking Windows Terminal for example, you'll need to set profiles.defaults.intenseTextStyle to "bold" or "all" in the settings.json file, or configure it in the settings UI.

Dependencies

~2MB
~18K SLoC