resources | ||
src | ||
.gitignore | ||
build.rs | ||
Cargo.lock | ||
Cargo.toml | ||
flake.lock | ||
flake.nix | ||
LICENSE.md | ||
panel.json | ||
README.md |
dttyper
dttyper is a terminal-based typing test built with Rust and tui-rs forked from ttyper, that exports each tests into an influx database.
installation
cargo build
cargo install --path .
Develop (using crate2nix)
a. Enter dev shell via nix
nix develop
b. modify code and then run with nix
nix run
usage
For usage instructions, you can run dttyper --help
:
dttyper
Terminal-based typing test.
USAGE:
dttyper [FLAGS] [OPTIONS] [contents]
FLAGS:
-d, --debug
-h, --help Prints help information
--list-languages List installed languages
--no-backtrack Disable backtracking to completed words
-V, --version Prints version information
OPTIONS:
-c, --config <config> Use config file
-l, --language <language> Specify test language
--language-file <language-file> Specify test language in file
-w, --words <words> Specify word count [default: 50]
ARGS:
<contents>
examples
command | test contents |
---|---|
dttyper |
50 of the 200 most common english words |
dttyper -w 100 |
100 of the 200 most common English words |
dttyper -w 100 -l english1000 |
100 of the 1000 most common English words |
dttyper --language-file lang |
50 random words from the file lang |
dttyper text.txt |
contents of text.txt split at newlines |
languages
The following languages are available by default:
name | description |
---|---|
c |
The C programming language |
csharp |
The C# programming language |
english100 |
100 most common English words |
english200 |
200 most common English words |
english1000 |
1000 most common English words |
english5000 |
5000 most common English words |
english10000 |
10000 most common English words |
english-advanced |
Advanced English words |
english-pirate |
50 pirate speak English words |
german |
207 most common German words |
german1000 |
1000 most common German words |
german10000 |
10000 most common German words |
go |
The Go programming language |
html |
HyperText Markup Language |
java |
The Java programming language |
javascript |
The Javascript programming language |
norwegian |
200 most common Norwegian words |
php |
The PHP programming language |
portuguese |
100 most common Portuguese words |
python |
The Python programming language |
qt |
The QT GUI framework |
ruby |
The Ruby programming language |
rust |
The Rust programming language |
spanish |
100 most common Spanish words |
ukrainian |
100 most common Ukrainian words |
Additional languages can be added by creating a file in DTTYPER_CONFIG_DIR/language
with a word on each line. On Linux, the config directory is $HOME/.config/dttyper
; on Windows, it's C:\Users\user\AppData\Roaming\dttyper
; and on macOS it's $HOME/Library/Application Support/dttyper
.
Statistics review
A grafana panel can be imported to view your reports!
config
Configuration is specified by the config.toml
file in the config directory (e.g. $HOME/.config/dttyper/config.toml
).
The default values with explanations are below:
default_language = "english1000"
server = "http://localhost:8086"
token = "token"
bucket = "dttyper"
org = "dttyper"
keyboard = "Generic"
[theme]
# default style (this includes empty cells)
default = "none"
# title text styling
title = "white;bold"
## test styles ##
# input box border
input_border = "cyan"
# prompt box border
prompt_border = "green"
# correctly typed words
prompt_correct = "green"
# incorrectly typed words
prompt_incorrect = "red"
# untyped words
prompt_untyped = "gray"
# correctly typed letters in current word
prompt_current_correct = "green;bold"
# incorrectly typed letters in current word
prompt_current_incorrect = "red;bold"
# untyped letters in current word
prompt_current_untyped = "blue;bold"
# cursor character
prompt_cursor = "none;underlined"
## results styles ##
# overview text
results_overview = "cyan;bold"
# overview border
results_overview_border = "cyan"
# worst keys text
results_worst_keys = "cyan;bold"
# worst keys border
results_worst_keys_border = "cyan"
# results chart default (includes plotted data)
results_chart = "cyan"
# results chart x-axis label
results_chart_x = "cyan"
# results chart y-axis label
results_chart_y = "gray;italic"
# restart/quit prompt in results ui
results_restart_prompt = "gray;italic"
style format
The configuration uses a custom style format which can specify most ANSI escape styling codes, encoded as a string.
Styles begin with the color specification, which can be a single color (the foreground), or two colors separated by a colon (the foreground and background). Colors can be one of sixteen specified by your terminal, a 24-bit hex color code, none
, or reset
.
After the colors, you can optionally specify modifiers separated by a semicolon. A list of modifiers is below:
bold
crossed_out
dim
hidden
italic
rapid_blink
slow_blink
reversed
underlined
Some examples:
blue:white;italic
specifies italic blue text on a white background.none;italic;bold;underlined
specifies underlined, italicized, and bolded text with no set color or background.00ff00:000000
specifies text of color#00ff00
(pure green) on a background of#000000
(pure black).
style = colors, { ";", modifier }, [ ";" ] ;
colors = color, [ ":", color ] ;
color = "none"
| "reset"
| "black"
| "white"
| "red"
| "green"
| "yellow"
| "blue"
| "magenta"
| "cyan"
| "gray"
| "darkgray"
| "lightred"
| "lightgreen"
| "lightyellow"
| "lightblue"
| "lightmagenta"
| "lightcyan"
| 6 * hex digit ;
hex digit = ? hexadecimal digit; 1-9, a-z, and A-Z ? ;
modifier = "bold"
| "crossed_out"
| "dim"
| "hidden"
| "italic"
| "rapid_blink"
| "slow_blink"
| "reversed"
| "underlined" ;
If you're familiar with serde, you can also read the deserialization code.