Title: Autoscrolling text for lazy reading | |
Author: Solène | |
Date: 17 May 2018 | |
Tags: unix | |
Description: | |
Today I found a software named | |
[Lazyread](http://lazyread.sourceforge.net/) which can read and | |
display file an autoscroll at a chosen speed. I had to read its source | |
code to make it work, the documentation isn't very helpful, it doesn't | |
read ebooks (as in epub or mobi format) and doesn't support | |
stdin... This software requires some C code + a shell wrapper to | |
works, it's complicated for _only_ scrolling. | |
So, after thinking a few minutes, the autoscroll can be reproduced | |
easily with a very simple awk command. Of course, it will not have the | |
interactive keys like lazyread to increase/decrease speed or some | |
others options, but the most important part is there: | |
**autoscrolling**. | |
If you want to read a file with a rate of 1 line per 700 millisecond, | |
just type the following command: | |
$ awk '{system("sleep 0.7");print}' file | |
Do you want to read an html file (documentation file on the disk or | |
from the web), you can use lynx or w3m to convert the html file on the | |
fly to a readable text and pass it to awk stdin. | |
$ w3m -dump doc/slsh/slshfun-2.html | awk '{system("sleep | |
0.7");print}' | |
$ lynx -dump doc/slsh/slshfun-2.html | awk '{system("sleep | |
0.7");print}' | |
$ w3m -dump https://dataswamp.org/~solene/ | awk '{system("sleep | |
0.7");print}' | |
Maybe you want to read a man page? | |
$ man awk | awk '{system("sleep 0.7");print}' | |
If you want to pause the reading, you can use the true unix way, | |
Ctrl+Z to send a signal which will stop the command and let it paused | |
in background. You can resume the reading by typing `fg`. | |
One could easily write a little script parsing parameters for setting | |
the speed or handling files or url with the correct command. | |
Notes: If for some reasons you try to use *lazyread*, fix the shebang | |
in the file lesspipe.sh and you will need to call lazyread binary with | |
the environment variable `LESSOPEN="|./lesspipe.sh %s"` (the path of | |
the script if needed). Without this variable, you will have a very | |
helpful error "file not found". |