Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monketype

ci crates.io license: GPL-3.0

A fast, keyboard-driven terminal typing test inspired by monkeytype (source) — built in Rust with ratatui.

🚧 Status: in active development. See SPEC.md for the full design and the implementation roadmap.

  time   words   quote   zen                                serika-dark

  the quick brown fox jumps over the lazy dog and then
  keeps typing while the words scroll smoothly upward as
  your caret blinks along each character in real time

  30

Features

  • Four modestime (15/30/60/120s), words (10/25/50/100), quote (filterable by length), and zen (type freely, end when you like).
  • Faithful metrics — net & raw WPM, accuracy, consistency, and a full character breakdown (correct / incorrect / extra / missed), computed the way monkeytype computes them.
  • Live, smooth typing — 3-line scrolling text, a blinking bar caret, and per-character color feedback.
  • Results graph — a WPM/raw-over-time chart with error markers, right in your terminal.
  • Command paletteCtrl+K to fuzzy-switch mode, value, theme, and quote length. The test is the home screen; no menus to wade through.
  • Theming — ships with multiple themes and loads your own from a themes directory.
  • Personal bests — every test is saved locally; beat your record and it tells you.
  • Single binary, zero config — wordlists, quotes, and default themes are embedded. It just runs.

Install

From crates.io (requires a Rust toolchain)

cargo install monketype

Arch Linux (AUR)

# build from source
yay -S monketype
# or prebuilt
yay -S monketype-bin

Prebuilt binaries

Download a binary for your platform from the Releases page (Linux / macOS / Windows), then put it on your PATH.

Usage

monketype

The typing test starts immediately. Just type.

Keys

Key Action
type enter characters
Backspace delete (can cross back into previous words)
Tab restart / start the next test
Ctrl+K open the command palette (mode, value, theme…)
Esc open palette (in a test) / go back (in results)
Enter next test (on the results screen)
Ctrl+C quit

In zen mode, press Esc, Tab, or Enter to finish.

Modes

  • time — type for a fixed number of seconds; words keep coming.
  • words — type a fixed number of words; finish to see your result.
  • quote — type a real quote, filterable by length (short / medium / long / all); the source is shown in your results.
  • zen — no target text and no clock pressure: type whatever you want and end the test yourself (reports WPM and characters only).

Theming

monketype uses role-based themes (TOML files mapping semantic roles — background, text, accent, error, caret… — to colors). Switch themes from the command palette (Ctrl+K).

Add your own by dropping a .toml file into your themes directory:

~/.config/monketype/themes/my-theme.toml
name        = "my-theme"
bg          = "#1e1e2e"
sub         = "#6c7086"
sub_alt     = "#313244"
text        = "#cdd6f4"
accent      = "#f5c2e7"
error       = "#f38ba8"
error_extra = "#7d3c4a"
caret       = "#f5c2e7"

Themes use 24-bit (truecolor) RGB; use a truecolor-capable terminal for accurate colors.

Files & data

Purpose Location
Config ~/.config/monketype/config.toml
Test history ~/.local/share/monketype/history.jsonl
User themes ~/.config/monketype/themes/*.toml

(Exact paths follow your platform's XDG conventions.)

Development

cargo run           # run the app
cargo test          # run the test suite (core logic is fully unit-tested)
cargo build --release

The codebase is split into a pure core/ layer (model, generation, input engine, metrics, config, persistence, theming — no TUI dependencies, fully unit-tested) and a tui/ layer (event loop, screens, widgets). See SPEC.md for the full architecture and roadmap.

Acknowledgements

monketype is heavily inspired by monkeytype by Miodec and contributors, and vendors monkeytype's wordlists and quotes from its open-source repository. All credit for that data and for the original concept goes to the monkeytype project. monketype is an independent, non-commercial clone and is not affiliated with or endorsed by monkeytype.

License

GPL-3.0. Because monketype includes data from the GPL-3.0-licensed monkeytype project, it is distributed under the same terms: you're free to use, modify, and redistribute it, provided derivative works remain under GPL-3.0 and share their source.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages