39 个版本 (10 个稳定版本)

1.6.0 2024 年 8 月 12 日
1.5.0 2024 年 4 月 19 日
1.4.1 2024 年 2 月 2 日
1.4.0 2023 年 10 月 3 日
0.1.12 2021 年 3 月 31 日

#92 in 命令行工具

Download history 114/week @ 2024-04-26 60/week @ 2024-05-03 73/week @ 2024-05-10 114/week @ 2024-05-17 64/week @ 2024-05-24 64/week @ 2024-05-31 54/week @ 2024-06-07 42/week @ 2024-06-14 49/week @ 2024-06-21 55/week @ 2024-06-28 42/week @ 2024-07-05 45/week @ 2024-07-12 46/week @ 2024-07-19 62/week @ 2024-07-26 49/week @ 2024-08-02 186/week @ 2024-08-09

每月 352 次下载

MIT 许可证

1MB
1.5K SLoC

ttyper

Crates.io GitHub Stars GitHub Workflow Status GitHub commit activity Discord License

ttyper 是一个使用 Rust 和 Ratatui 构建的基于终端的打字测试。

Recording

聊天

如果你有兴趣为 ttyper 贡献,需要帮助解决问题,或者只是想闲聊,你应该加入 开发 Discord 服务器

安装

预构建的二进制文件

预构建的二进制文件可在 GitHub 发布 中找到,适用于大多数架构。如果你的系统不受支持或你有其他问题,请随时打开一个问题。

cargo

cargo install ttyper

arch linux

pacman -S ttyper

nix

nix-env -iA nixpkgs.ttyper # or nixos.ttyper on NixOS

scoop

scoop install ttyper

用法

要获取使用说明,可以运行 ttyper --help

ttyper 1.5.0
Terminal-based typing test.

USAGE:
    ttyper [FLAGS] [OPTIONS] [contents]

FLAGS:
    -d, --debug             
    -h, --help              Prints help information
        --list-languages    List installed languages
        --no-backtrack      Disable backtracking to completed words
        --sudden-death      Enable sudden death mode to restart on first error
    -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>

示例

命令 测试内容
ttyper 200 个最常见英语单词中的 50 个
ttyper-w100 200 个最常见英语单词中的 100 个
ttyper-w100 -l english1000 1000 个最常见英语单词中的 100 个
ttyper--语言-文件 lang 从文件 lang 中随机选择 50 个单词
ttyper text.txt text.txt 的内容,按换行符分割

语言

以下语言默认可用

名称 描述
c C 编程语言
csharp C# 编程语言
english100 100 个最常见英语单词
english200 200 个最常见英语单词
english1000 1000 个最常见英语单词
english-advanced 高级英语单词
english-pirate 50 个海盗英语单词
german 207 个最常见德语单词
german1000 1000 个最常见德语单词
german10000 10000 个最常见德语单词
go Go 编程语言
html 超文本标记语言
java Java 编程语言
javascript Javascript 编程语言
norwegian 200 个最常见挪威语单词
php PHP 编程语言
portuguese 100 个最常见葡萄牙语单词
portuguese200 200 个最常见葡萄牙语单词
portuguese1000 1000个最常见的葡萄牙语单词
portuguese-advanced 高级葡萄牙语单词
python Python编程语言
qt QT图形用户界面框架
ruby Ruby编程语言
rust Rust编程语言
spanish 100个最常见的西班牙语单词
ukrainian 100个最常见的乌克兰语单词

可以通过在 TTYPER_CONFIG_DIR/language 目录下创建一个包含每个单词一行的新文件来添加额外的语言。在Linux上,配置目录是 $HOME/.config/ttyper;在Windows上,它是 C:\Users\user\AppData\Roaming\ttyper;在macOS上,它是 $HOME/Library/Application Support/ttyper

config

配置通过配置目录中的 config.toml 文件指定(例如 $HOME/.config/ttyper/config.toml)。

以下是一些带解释的默认值

# the language used when one is not manually specified
default_language = "english200"

[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"

# border type
border_type = "rounded"

# 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

配置使用自定义的样式格式,可以指定大多数 ANSI转义样式代码,编码为字符串。

样式以颜色指定开始,可以是单色(前景色),也可以是两个由冒号分隔的颜色(前景色和背景色)。颜色可以是终端指定的十六种颜色之一,24位十六进制颜色代码,nonereset

在颜色之后,您可以可选地指定分号分隔的修饰符。以下是一些修饰符列表

  • bold
  • crossed_out
  • dim
  • hidden
  • italic
  • rapid_blink
  • slow_blink
  • reversed
  • underlined

一些例子

  • blue:white;italic 指定在白色背景上的斜体蓝色文本。
  • none;italic;bold;underlined 指定没有设置颜色或背景的带下划线、斜体和加粗的文本。
  • 00ff00:000000 指定纯绿色(#00ff00)的文本在纯黑色(#000000)的背景上。

扩展BNF

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" ;

border types

配置文件支持以下边框类型。

  • plain
  • rounded(默认值)
  • double
  • thick
  • quadrantinside
  • quadrantoutside

如果您熟悉 serde,您还可以阅读 反序列化代码

依赖关系

~8–17MB
~193K SLoC