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-2.1.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

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

ntypo-2.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

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

Hashes for ntypo-2.1.0.tar.gz
Algorithm Hash digest
SHA256 9e6589720ac67994ba987e4a854d74faa0b22510889ebec7ddea8b4b139ae590
MD5 0972abf796036ec2fb4db248817b88e8
BLAKE2b-256 bc15deaeaea2642a499f43500a1b8fa72a9432a3e4151e8e0f606747b7440dcb

See more details on using hashes here.

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

Hashes for ntypo-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74c1825387babf3fe53614a5237233aa5f77d4771c135a388f7dca9a01671a4b
MD5 c90676fe83720e8ee4cc84a7e2174c07
BLAKE2b-256 804f1b6389023e992ddfa48f2121547ff89e5d1e5a40bd9253eb5baebe02828e

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