T.T. TUI - A Terminal Typing Test
T.T. TUI is a fast, lightweight, and feature-rich typing test application that runs entirely in your terminal. Inspired by the clean aesthetic and core functionality of Monkeytype, tttui provides a focused, distraction-free environment to practice your typing skills, track your progress, and compete against your own personal bests.
Features
- Multiple Test Modes: Practice with different challenges.
- Time: Type as much as you can in a set amount of time (15, 30, 60, 120 seconds).
- Words: Complete a specific number of words (10, 25, 50, 100).
- Quote: Type out a quote from the collection.
- High-Fidelity WPM Graph: Get a detailed, high-resolution line graph of your WPM over the course of the test, rendered beautifully with Unicode Braille.
- Personal Best Tracking:
tttuiautomatically saves your best score for every test combination (mode, duration, and language) and shows you how your current run compares. - Detailed Performance Stats: The results screen provides a clean, organized breakdown of your performance, including Net WPM, Raw WPM, accuracy, consistency, and character stats.
- Customization:
- Themes: Choose from a selection of built-in themes or easily create your own.
- Languages: Add new languages and wordlists simply by creating text files.
- Persistent Configuration: Your chosen theme, language, and all your personal bests are saved locally, so your experience is consistent every time you launch the app.
- Minimalist UI: A keyboard-driven, distraction-free interface that keeps you focused on the text.
Showcase
The Typing Interface
A clean and focused interface shows only what you need while typing. The text is displayed centrally, with minimal status information at the top.
https://github.com/user-attachments/assets/7af94392-fe44-4bfa-91f0-76f3f410ca1c
The Results Screen
After each test, you're presented with a detailed breakdown of your performance and a beautiful WPM graph. If you set a new record, you'll be celebrated!
Installation
tttui is designed to be simple to install and run.
Prerequisites
- Python 3
1. Clone the Repository
First, clone this repository to your local machine.
git clone https://github.com/reidoboss/tttui.git
cd tttui
2. Make the Script Executable
Give the launch script execute permissions.
chmod +x bin/tttui.sh
3. Run It!
You can now run the application directly.
./bin/tttui.sh
4. (Recommended) Install System-Wide
For the best experience, move the executable to a directory in your system's PATH. This allows you to run tttui from any terminal, anywhere on your system.
sudo mv bin/tttui.sh /usr/local/bin/tttui
Now you can simply open a terminal and type tttui to launch the application.
Usage
tttui is controlled entirely with the keyboard.
- Menu Navigation: Use the
UPandDOWNarrow keys orK/J(case-insensitive) to navigate menus andENTERto select. - Go Back: Press
TABto return to the main menu from a sub-menu. - In-Test Commands: During a test, press
TABto switch focus from the text area to the command bar at the bottom. Use the arrow keys andENTERtoresetthe test or return to themenu. - Quit: Press
qfrom the main menu or the results screen to quit the application.
Customization
You can easily add your own themes and languages.
Adding a Theme
-
Open
tttui/config.py. -
Add a new dictionary entry to the
THEMESdictionary. Follow the existing structure. You can use standard color names ("red","blue", etc.) or 256-color codes (integers0-255)."my_cool_theme": { "text_correct": ("green", -1), # (foreground, background) "text_incorrect": ("red", -1), "text_untyped": (244, -1), "caret": ("black", "white"), "menu_highlight": ("black", "cyan"), "menu_title": ("cyan", -1), },
A value of
-1for the background means it will be transparent. -
Launch
tttuiand select your new theme from the theme menu.
Adding a Language / Wordlist
- Find the
tttuiconfiguration directory on your system. The application will create it automatically on first run at~/.config/tttui/. - Inside that directory, you will find a
languagesfolder. - Simply add a new
.txtfile to this folder (e.g.,german.txt). The file should contain words separated by newlines. - The new language will automatically appear in the
languagemenu in the app.
Project Structure
tttui/
├── bin/
│ └── tttui.sh # The main executable launch script.
├── tttui/
│ ├── __init__.py # Main application loop and state management.
│ ├── __main__.py # Entry point for running as a module.
│ ├── config.py # Stores default themes and directory paths.
│ ├── game.py # Core game logic, state resets, and result calculations.
│ ├── menu.py # Handles menu navigation and logic.
│ ├── storage.py # Manages loading/saving of configs, PBs, and language files.
│ └── ui.py # All rendering logic (menus, test screen, results, graph).
└── README.md
License
This project is licensed under the MIT License.
Metadata
Release files for tttui 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tttui-1.0.3.tar.gz | 18.4 kB | Without provenance | Details for tttui-1.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tttui-1.0.3-py3-none-any.whl | Python 3 | none | any | Details for tttui-1.0.3-py3-none-any.whl |
Total release size: 36.4 kB
Release files / tttui-1.0.3.tar.gz
| Download URL | tttui-1.0.3.tar.gz |
|---|---|
| Size | 18.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f5140e4f228a935658366404804e9df04e91d2b5d67ca0b8fd85ea3bc656972
|
|
BLAKE2b-256 checksum How to use checksums |
90e1e9fbf6a504594e241483f2bd1d6e39e912f9bbff1b9162550d913c4c32ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / tttui-1.0.3-py3-none-any.whl
| Download URL | tttui-1.0.3-py3-none-any.whl |
|---|---|
| Size | 18.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aafae3cd85c09e263864952f45d01706ec0eb1bbecd36b6b517eac503e7f4e56
|
|
BLAKE2b-256 checksum How to use checksums |
0eff8c14da92690d98c41d5b5a06f9e2dae1af09092195cfdaebc066c4fc412e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Security for tttui 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.