A terminal typing speed test built with ncurses
Project description
Ntypo - Yet Another Typing Test
Ntypo is a minimal terminal-based typing speed test built with Python and ncurses.
It lets you challenge yourself to type a custom number of randomly selected words from a list, no distractions, no GUI fluff. Just you, your keyboard, and the clock.
Features
- Choose how many words you want to type (e.g. 30, 50, 100…)
- Loads words from an external file (
words.txt) - Measures WPM (Words Per Minute)
- Tracks accuracy, correct and incorrect keystrokes
- ESC to quit anytime (with confirmation)
- Saves session logs to CSV (
ntypo.csv) - Adaptive layout with top/bottom bars
- Fully keyboard-driven and terminal-native
Installation
Install via pip:
pip install ntypo
Then run the app:
ntypo
To install from source:
git clone https://github.com/bearenbey/ntypo.git
cd ntypo
pip install .
Dependencies:
- Python 3.8 or higher
- A terminal that supports ncurses
Usage
- Launch the app in your terminal
- Enter how many words you want to practice
- Type the displayed text — your speed and stats will be tracked
- Press ESC anytime to quit (confirmation popup included)
Keybindings:
- Type normally: your input is tracked in real time
- Backspace: delete last character
- ESC: open quit confirmation
- Any key: dismiss the end-of-test message
The app adjusts to terminal size and wraps text dynamically. All results are saved to ntypo.csv.
Words File
The app uses a simple plaintext file (words.txt) where each line is a word:
apple
orange
keyboard
syntax
...
You can modify this list or swap it out for your own vocabulary.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
© 2025 Eren Öğrül — termapp@pm.me
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 ntypo-2.1.0.tar.gz.
File metadata
- Download URL: ntypo-2.1.0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e6589720ac67994ba987e4a854d74faa0b22510889ebec7ddea8b4b139ae590
|
|
| MD5 |
0972abf796036ec2fb4db248817b88e8
|
|
| BLAKE2b-256 |
bc15deaeaea2642a499f43500a1b8fa72a9432a3e4151e8e0f606747b7440dcb
|
File details
Details for the file ntypo-2.1.0-py3-none-any.whl.
File metadata
- Download URL: ntypo-2.1.0-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74c1825387babf3fe53614a5237233aa5f77d4771c135a388f7dca9a01671a4b
|
|
| MD5 |
c90676fe83720e8ee4cc84a7e2174c07
|
|
| BLAKE2b-256 |
804f1b6389023e992ddfa48f2121547ff89e5d1e5a40bd9253eb5baebe02828e
|