Package: fasttyper
fasttyperAboutFasttyperis minimalistic typing test based on user provided exercising text. It supports both reading from text files and stdin supporting wide range of usecases. The goal was to create it as simple as it can be, without any additional bloatware functionalities. That means thatFasttyperdoesn't come with build in test generator and you have to provide your own scripts generating tests. Some examples of such scrips are providen inUsage section.InstallationFasttyperis currently maintained onPyPiPython Package Index. To install package simpply use:python3 -m pip install fasttyperUsageWith installation of fasttyper you should have new executable -fasttyper. It takes two optional positional arguments, amount of words and language (like inMonkeytype's: english, english_1k etc). Default amount of words is 25 and language is english. To run fasttyper simply call:fasttyperfrom command line. There are some avalibe options:usage: fasttyper [-h] [--config FILE] [--unclutter-backspace] [--no-cursor] [amount] [language]

positional arguments:
  amount                Amount of words
  language              Language

options:
  -h, --help            show this help message and exit
  --config FILE, -c FILE
                        configuration file
  --unclutter-backspace, -b
                        unclutter backspace, when it raises ctrl+backspace instead
  --no-cursor, -n       disable cursosI personally use alias:alias ff='fasttyper -n`because i don't like having cursor and i am too lazy to type fasttyper so i just type ff :)Running next test and stopping applicationTo abandon test and start brand new one, press TAB.To kill application (exit) press CTRL+C.ConfiguringDefault configuration:{"user_input_valid_color":3,"user_input_invalid_color":2,"reference_text_color":9,"stats_template":"wpm:{stats.wpm:0.2f}, time:{stats.total_seconds:0.2f}s","stats_color":5,"stats_position":"top","summary_datafile":"~/.cache/fasttyper/datafile.csv","top_margin_percentage":40,"left_margin_percentage":35,"min_width":80,"lines_on_screen":3,"border":1,"logo":" ~ FastTyper ~ ","logo_color":8,"resume_text":" press <Tab> to continue, <Ctrl>C to exit ","resume_text_color":9,"summary_template":("wpm:{wpm:5.1f}|   peak:{peak_wpm:5.1f}","raw:{raw_wpm:5.1f}|   peak:{peak_raw_wpm:5.1f}","acc:{accuracy:5.1f}%  |   words:{correct_words}/{total_words}","time:{total_seconds:5.1f}s ",),"summary_centered":True,"summary_color":9,"summary_lines":4,"summary_border":0,"random_capitalization":0,"random_punctuation":0,"sentence_mode":False,"punctuation":",.?!;:","sentence_ending":".?!","amount":25,"language":"english","no_cursor":False,"unclutter_backspace":False,}Fasttyper by default looks for config file in:$HOME/.config/fasttyper/config.json. You can provide different location for config file with--configargument, for example:--config=~/.fasttyper.json. Config has to be a json dict. Avalibe keys:user_input_valid_color- integer, terminal color for valid text, by default it is 3user_input_invalid_color- integer, terminal color for invalid text, by default it is 2reference_text_color- integer, terminal color for reference text, by default it is 8stats_color- integer, terminal color for stats text, by default it is 5summary_datafile- datafile storing all stats, by default it is ~/.cache/fasttyper/datafile.csvtop_margin_percentage- integer, percentage of screen used for top margin, by default 30left_margin_percentage- integer, percentage of screen used for left (and right) margin, by default 10lines_on_screen- integer, number of lines to display on screen, by default 3Also there are keys that override fault parameters for CLI args, like: amount and language will override Your default settings for runner, same goes for punctuation, sentence_mode etc.Example config file with all default values in avalibehere.Other example config files:{"top_margin_percentage":40,"left_margin_percentage":25}{"user_input_valid_color":5}Usage as module, piping stuff, custom scripts etcFasttyperis ran as an python module, so to execute it simply type:python3 -m fasttyperfrom cloned github repository, if you didn'tinstallpackage from TestPyPi.Fasttypercan open text files, which path should be provided as first and only argument to the module execution, for example:python3 -m fasttyper example_text.txtProgram also allows user to pipe text into it. Keep in mind, it only supports spaces and new line characters, so you won't be able to table tabs. For example, you can runFasttyperon fortune generated quote changing tabulators to spaces with sed:furtune | python3 -m fasttyperor if you want to randomize words from given file with shuf on for example all disctionaries in system:shuf -n5 /usr/share/dict/* | python -m fasttyperYou can use another similar projects set of words as well, for example to create test with 20 random words fromMonkeytype'senglish 100 dictionary use:curl -s https://raw.githubusercontent.com/Miodec/monkeytype/master/static/languages/english.json | python3 -c "import sys, json; print('\n'.join(json.load(sys.stdin)['words']))" | shuf -n20 | python3 -m fasttyperTo exit you can either finish test, useKeyboardInterrupt(CTRL+C) or taptab. After you finish test, there will be summary printed, use enter to exit from it.When backspace does wierd shietSome terminal emulators send different values for key presses of backspace and ctrl+backspace. To fix it, simply addbflag like that:python3 -m fasttyper -b.Hiding cursorTo hide the cursor, simply addnflag like that:python3 -m fasttyper -n.Example scriptsfunctionff(){mkdir-p~/.cache/fasttyperlocalamount="${1:-50}"locallanguage="${2:-english}"localsfile=~/.cache/fasttyper/$languagelocalsource_path=https://raw.githubusercontent.com/Miodec/monkeytype/master/static/languages/$language.json[[!-f$sfile]]&&curl-s$source_path|python3-c"import sys, json; print('\n'.join(json.load(sys.stdin)['words']))">$sfilewhiletruedoshuf-n$amount$sfile|python3-mfasttyper||breakdone}ff 50 english_1kThis shell function shuffles N words from cached word list, and if given word list doesnt exist it download's it. It runs in loop, but does exit from it if you exit fasttyper with CTRL+C.The above script is avalible for download from doc folder.