Skip to main content

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

  1. Launch the app in your terminal
  2. Enter how many words you want to practice
  3. Type the displayed text — your speed and stats will be tracked
  4. 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


Download files

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

Source Distribution

ntypo-1.0.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

ntypo-1.0.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file ntypo-1.0.0.tar.gz.

File metadata

  • Download URL: ntypo-1.0.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ntypo-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b7c71026fedfdbd2aafa469cc53b9dc7f9ea42476440fefb61f1b08d68c47ed4
MD5 188f0ed030ac8cb20e963706644aa1f3
BLAKE2b-256 03020de172e41b84b8c2e6d70ca788f2f0a19957385e86311acacda71a6e7517

See more details on using hashes here.

File details

Details for the file ntypo-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ntypo-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ntypo-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a2c192977155d84398bfdf57b94e558164c3eb6e4396b9cf5f7147aa4a509b7
MD5 962601e69e39e2985bbc84ce6d288c0a
BLAKE2b-256 08a7745f06eca2ca54a606c62a8c640571cb222812f96182d67e53c529da5b99

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page