A beautiful CLI typing test to practice your typing speed
Project description
⌨️ typing-cli
A beautiful and fast CLI typing test — right from your terminal.
Practice your typing speed with real-time WPM tracking, accuracy stats, animated pixel-art F1 car, multiple languages, and color themes.
__ _ ___
/ /___ ______ (_)___ ____ _ ____/ (_)
/ __/ / / / __ \/ / __ \/ __ `/ ____ / __/ / /
/ /_/ /_/ / /_/ / / / / / /_/ / /___// /_/ / /
\__/\__, / .___/_/_/ /_/\__, / \__/_/_/
/____/_/ /____/
🚀 Installation
pip install typing-cli
That's it. Works on Windows, macOS, and Linux.
From source
git clone https://github.com/lecoffre/typing-cli.git
cd typing-cli
pip install -e .
▶️ Usage
typing-cli
The app launches in your terminal. Start typing!
🔄 Update
pip install --upgrade typing-cli
⌨️ Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Tab |
Restart test |
Escape |
Back / Quit |
Ctrl+T |
Change theme |
Ctrl+L |
Change language |
Ctrl+M |
Switch mode (words/code) |
Ctrl+H |
View score history |
Ctrl++/- |
Zoom in/out |
Ctrl+Q |
Quit |
🌍 Languages
Built-in:
- 🇬🇧 English (200 most common words)
- 🇫🇷 French (200 most common words)
🎨 Themes
- Midnight — deep dark blues (default)
- Forest — earthy greens
- Sunset — warm amber tones
- Ocean — cool cyan palette
- Mono — minimal grayscale
📊 Features
- Real-time WPM & accuracy tracking
- Per-character coloring (correct / incorrect / cursor)
- Animated pixel-art F1 car reflecting your speed
- Gamification: streak, combo, milestones, rank system
- Code typing mode
- Score history with date, WPM, accuracy
- Multiple languages & themes
- Splash screen with ASCII art
- Clean, extensible architecture
🛠️ Development
git clone https://github.com/lecoffre/typing-cli.git
cd typing-cli
pip install -e .
# Run directly
python -m typingtest
🤝 Contributing
Contributions are welcome! Feel free to open issues and pull requests.
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file typing_cli-0.1.0.tar.gz.
File metadata
- Download URL: typing_cli-0.1.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc2a99c97d8a91c4443e999e760dce0eb068d74ca8208ee8f9b061cba68285cf
|
|
| MD5 |
3391cd54b660331308d01d68d26bfc65
|
|
| BLAKE2b-256 |
abfdcd12794c39b76e863b14e1a27af21226f4847c5d07824211a63027ba3192
|
Provenance
The following attestation bundles were made for typing_cli-0.1.0.tar.gz:
Publisher:
publish.yml on lecoffre/typing-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
typing_cli-0.1.0.tar.gz -
Subject digest:
fc2a99c97d8a91c4443e999e760dce0eb068d74ca8208ee8f9b061cba68285cf - Sigstore transparency entry: 937093296
- Sigstore integration time:
-
Permalink:
lecoffre/typing-cli@e5f453b43c19800c58a2ed494323fc68c217da53 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lecoffre
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5f453b43c19800c58a2ed494323fc68c217da53 -
Trigger Event:
release
-
Statement type:
File details
Details for the file typing_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: typing_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cabd377586f50787e1a63d7cecf5ccd186e6e56b3abcc70d2854b91654bd5266
|
|
| MD5 |
60263e24d96395462f56b3cd2cd20fa3
|
|
| BLAKE2b-256 |
5757eaaf207a05d22b5723068da12a32cb6af49f038b603df1b46624d062a720
|
Provenance
The following attestation bundles were made for typing_cli-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on lecoffre/typing-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
typing_cli-0.1.0-py3-none-any.whl -
Subject digest:
cabd377586f50787e1a63d7cecf5ccd186e6e56b3abcc70d2854b91654bd5266 - Sigstore transparency entry: 937093298
- Sigstore integration time:
-
Permalink:
lecoffre/typing-cli@e5f453b43c19800c58a2ed494323fc68c217da53 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lecoffre
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5f453b43c19800c58a2ed494323fc68c217da53 -
Trigger Event:
release
-
Statement type: