A terminal-based typing speed test using python.
Project description
Pytype - Terminal Typing Speed Test
A fast, minimal terminal-based typing speed test written in Python. Test your typing speed and accuracy right from your terminal.
Features
- Real-time typing test with live WPM and accuracy feedback
- Color-coded visual feedback - Green for correct characters, red for mistakes
- Customizable test duration (default 60 seconds)
- Simple terminal UI using Python's curses library
- Cross-platform support (Linux, macOS, Windows with WSL)
- Multiple test prompts to prevent memorization
Installation
From Source
git clone https://github.com/basanta-bhandari/Pytype.git
cd Pytype
pip install -e .
Quick Start
Run the typing test directly:
python3 main.py
How to Use
- Start the application - You'll see a welcome screen with instructions
- Press 's' to begin a 60-second typing test
- Type the displayed text as quickly and accurately as you can
- Use Backspace to correct any mistakes
- Test ends when you complete the text or time runs out
- View your results - See your WPM, accuracy percentage, and character count
- Press 'r' to retry or 'q' to quit
Controls
| Key | Action |
|---|---|
s |
Start test |
q |
Quit application |
Backspace |
Delete last character |
Enter |
Finish typing (optional) |
r |
Retry after results |
ESC |
Exit test |
Metrics
- WPM (Words Per Minute) - Calculated as characters typed / 5 / minutes elapsed
- Accuracy - Percentage of correctly typed characters
- Typed - Total characters typed
Requirements
- Python 3.7 or higher
cursesmodule (included on Linux/macOS)windows-curses(automatically installed on Windows)
Installation by OS
Linux / macOS
python3 -m pip install -e .
typing-test
Windows
pip install windows-curses
python3 main.py
Dependencies
- windows-curses (Windows only) - Terminal control library for Windows
Development
To contribute or modify the code:
- Clone the repository
- Make your changes
- Test with
python3 main.py - Submit a pull request
Known Limitations
- Curses library behavior may vary slightly across different terminal emulators
- Windows support requires WSL or the windows-curses package
- Custom test durations are not yet available via CLI arguments
Troubleshooting
"The curses module is required" error on Windows:
pip install windows-curses
Terminal display issues:
- Try resizing your terminal window
- Ensure your terminal supports color output
- Use a modern terminal emulator (iTerm2, Windows Terminal, GNOME Terminal, etc.)
No text appearing:
- Check that your terminal width is at least 60 characters
- Verify curses is properly installed
Feedback
Found a bug? Have a feature request? Open an issue on GitHub.
Future Enhancements
- Custom test duration via CLI arguments
- Difficulty levels (easy, medium, hard)
- Score history tracking
- Theme customization
- Using Pypi for convinience
Project details
Release history Release notifications | RSS feed
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 pytype_b1-0.1.0.tar.gz.
File metadata
- Download URL: pytype_b1-0.1.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dd7b37be51afa3554df9356ba21177c7fbc922522d64c899dff9e333e771667
|
|
| MD5 |
c3384b79a5a911ca0962e012d628e0f6
|
|
| BLAKE2b-256 |
dffaf50f68f7e182def1899f6d8778a4353e4aed5945f558b46999461596d035
|
File details
Details for the file pytype_b1-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pytype_b1-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a093fd8d3c260cbf7f187965450e627282857c23ada84d14e3c6cbfe1691873a
|
|
| MD5 |
c29aa68d061e8b70d4dc1325b1b813e7
|
|
| BLAKE2b-256 |
afcc080e609ca5ed8315fa4852ccadbfd0698be0bb035ea8e9c20444032cacdb
|