# Terminal Typing Test

A terminal-based typing speed test application inspired by [monkeytype.com](https://monkeytype.com), built with Python using Textual and Rich.

## Features

- **Multiple Test Modes**: Words (10, 25, 50, 100) and Time (15s, 30s, 60s, 120s)
- **Real-time Statistics**: Live WPM, accuracy, and consistency tracking
- **Performance Graphs**: ASCII-based WPM over time visualization
- **Personal Bests**: Track your best performances by mode
- **Test History**: View and analyze past test results
- **Difficulty Levels**: Normal, Expert (100% word accuracy), Master (100% character accuracy)
- **Fully Offline**: Works without internet connection
- **Cross-Platform**: Windows and Linux compatible

## Installation

### From Source

```bash
# Clone the repository
cd c:\Users\Mihir Katoch\OneDrive\Desktop\TuxType

# Install dependencies
pip install -r requirements.txt

# Run the application
python tuxtype.py
```

## Usage

### Starting the Application

```bash
# Start with default settings (50 words)
python tuxtype.py

# Quick start with specific mode
python tuxtype.py --mode words --count 100

# Time-based test
python tuxtype.py --mode time --time 60

# With punctuation
python tuxtype.py --punctuation

# Programming keywords
python tuxtype.py --language programming
```

### Command Line Options

| Option | Short | Description |
|--------|-------|-------------|
| `--mode` | `-m` | Test mode: `words` or `time` |
| `--count` | `-c` | Word count (10, 25, 50, 100) |
| `--time` | `-t` | Time limit in seconds |
| `--language` | `-l` | Language: `english` or `programming` |
| `--difficulty` | `-d` | Difficulty: `normal`, `expert`, `master` |
| `--punctuation` | `-p` | Include punctuation |
| `--numbers` | `-n` | Include numbers |

### Keyboard Shortcuts

| Key | Action |
|-----|--------|
| `Tab` | Restart test |
| `Esc` | Return to menu |
| `Ctrl+C` | Quit application |
| `1-7` | Menu navigation |

## Statistics

- **WPM**: Words per minute (correct characters / 5 / minutes)
- **Raw WPM**: Total characters / 5 / minutes (includes errors)
- **Accuracy**: Percentage of correct characters
- **Consistency**: Based on speed variation between words

## Project Structure

```
TuxType/
├── tuxtype.py            # Main entry point
├── src/
│   ├── main.py           # CLI setup
│   ├── app.py            # Main Textual app
│   ├── core/             # Core logic
│   ├── database/         # SQLite operations
│   ├── screens/          # UI screens
│   ├── widgets/          # Custom widgets
│   └── utils/            # Utilities
├── data/
│   ├── wordlists/        # Word lists
│   ├── quotes/           # Quote files
│   └── database.db       # SQLite database
├── requirements.txt
└── README.md
```

## License

MIT License
