Skip to main content

ttyping ⌨️

A minimal, monkeytype-inspired terminal typing test for English and Korean, built with Python and Textual.

ttyping provides a clean and focused typing practice environment directly in your terminal. It tracks speed (WPM) and accuracy, saving results locally for history viewing.

✨ Features

  • Multi-language Support: Practice English (Qwerty, Dvorak, Colemak) and Korean (2-set, 3-set).
  • Finger Practice: Target specific finger groups to improve muscle memory.
  • Accuracy Focused: Optional target accuracy mode that restarts on mistakes.
  • Local History: Keep track of your speed (WPM) and accuracy over time.

🚀 Installation

Install using uv (recommended):

uv tool install ttyping

🎮 Usage

Run the app without arguments to start English practice:

uvx ttyping

⌨️ Keybindings

Key Action
e, k, w, h, o, q Main Menu shortcuts (English, Korean, Weak, History, Options, Quit)
Tab Restart the test
Esc Go back to previous menu
Ctrl+C Quit the application
Space Proceed to the next word
Enter Select menu option or complete word

🗺️ Changelog Highlights (v1.1.2 – v1.1.16)

All planned roadmap features have shipped:

Practice Modes

  • Quote Mode: Full English/Korean quotes with real punctuation and capitalization.
  • Zen Mode: Unlimited free typing — words stream in; end with Ctrl+D.
  • Time Presets: Quick-select 15s / 30s / 60s / 120s from the Options menu.
  • Daily Challenge: A date-seeded word set that changes once a day (d).

Feedback & Statistics

  • Live WPM Graph: Real-time speed curve rendered while typing.
  • Consistency Score: Keystroke rhythm stability shown on results & history.
  • Personal Bests: Record WPM per language with a "new personal best!" badge.
  • Keyboard Heatmap: Layout map of cumulative error stats in Weakness Analysis.

UX & Customization

  • Custom Themes: Five accent color presets persisted in config.
  • Keypress Sound: Optional terminal bell on typing errors.
  • History Export: Export results to CSV (x) or JSON (j).
  • Configurable Keybindings: Alternative restart (F2) / back (F4) shortcuts.

Content

  • More Code Languages: Go, C, TypeScript snippets.
  • Remote Word Lists: Load practice text from an HTTP(S) URL (--url).
  • Additional Languages: Japanese (romaji) word lists.

🛠️ Tech Stack

  • Language: Python 3.10+
  • TUI Framework: Textual
  • Styling: Rich
  • Data storage: ~/.ttyping/results.json

📄 License

Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ttyping-1.1.16.tar.gz (470.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttyping-1.1.16-py3-none-any.whl (97.5 kB view details)

Uploaded Python 3

File details

Details for the file ttyping-1.1.16.tar.gz.

File metadata

  • Download URL: ttyping-1.1.16.tar.gz
  • Upload date:
  • Size: 470.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ttyping-1.1.16.tar.gz
Algorithm Hash digest
SHA256 41e4b7102be80f2ac44b506d36ef2635f6b79045bddb26d3e052d44b39a57ca8
MD5 c62e9daed32b13e0e663966eead87191
BLAKE2b-256 61854765afa7bddbfaace5a23c128031757e442d634d2e3d203815905bb9726e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttyping-1.1.16.tar.gz:

Publisher: pypi.yml on partrita/ttyping

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ttyping-1.1.16-py3-none-any.whl.

File metadata

  • Download URL: ttyping-1.1.16-py3-none-any.whl
  • Upload date:
  • Size: 97.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ttyping-1.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 0ccd99afe6d71a70ea04bd593eba2258df4c665d7709862f1a2651943ed0a2a4
MD5 e85790f1378234b549044dc9e18fa079
BLAKE2b-256 a665c5032f099fe5ab3caa4427eb97d87f098f7950cf52085803f0d955a241e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttyping-1.1.16-py3-none-any.whl:

Publisher: pypi.yml on partrita/ttyping

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.2.0

2 files

This release

1.1.16 This release

2 files

1.1.3

2 files

1.1.1

2 files

1.1.0

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page