termitype

Crates.iotermitype
lib.rstermitype
version0.0.11
created_at2025-02-17 18:57:26.662799+00
updated_at2025-11-09 19:25:44.542843+00
descriptionTerminal-based typing test inspired by a certain typing test you might know.
homepagehttps://github.com/emanuel2718/termitype
repositoryhttps://github.com/emanuel2718/termitype.git
max_upload_size
id1559241
size806,104
Emanuel Ram铆rez (emanuel2718)

documentation

README

馃 termitype

Crates.io Build Status License: GPL-3

Feature-rich terminal typing test

Heavily inspired by a certain typing test you might know.
InstallationUsageMappingsOptionsDevelopmentContributingRoadmapAcknowledgments


Termitype demo

Installation

Quick Install

Install the latest pre-built binary for your platform (recommended):

curl -sSL https://raw.githubusercontent.com/emanuel2718/termitype/main/scripts/install.sh | bash

Binaries are available on the GitHub releases page.

Homebrew

brew tap emanuel2718/termitype
brew install termitype

Arch Linux (AUR)

yay -S termitype

From Crates.io

cargo install termitype

From Source

cargo install --git https://github.com/emanuel2718/termitype.git termitype

Usage

Basic Usage

# Start typing
termitype

# See available CLI arg options (all options can also be configured via the in-game menu)
termitype --help

Mappings

Mapping Mode Action
<C-Space> Global Toggle Menu
<C-c> Global Quit Application
<C-z> Global Quit Application
<C-o> Global Toggle Command Palette
<C-l> Global Toggle Leaderboard Screen
<C-t> Global Randomize Theme
<Esc> Global Toggle Menu
<S-N> Results Restart
<S-R> Results Redo last test
q Results Quit Application
m Results Switch to Minimal Variant
n Results Switch to Neofetch Variant
g Results Switch to Graph Variant
<Up> Results Cycle to next ASCII Art
<Down> Results Cycle to previous ASCII Art
<Esc> Menu Go back
/ Menu Start Search
<C-y>/<CR> Menu Confirm selection
<Space> Menu Toggle selection (if toggable item)
<C-n>/<Down> Menu Next item
<C-p>/<Up> Menu Previous item
j/k Menu Next/previous (in normal mode)

Options

Option Description
-t, --time <SECONDS> Test duration in seconds. Enforces Time mode
-w, --words <"WORD1 .."> Custom words for the test. Enforces Word mode
-c, --count <COUNT> Number (count) of words to type
-n, --use-numbers Include numbers in the test word pool
-s, --use-symbols Include symbols in the test word pool
-p, --use-punctuation Include punctuation in the test word pool
-l, --language <LANG> Language dictionary the test will use
--theme <THEME> The theme of the application
--ascii <ASCII> The ASCII art used in the Neofetch results
--cursor <STYLE> Cursor style variant: beam, block, underline, blinking-beam, blinking-block, blinking-underline
--results <STYLE> Results style variant: minimal, neofetch, graph
--lines <COUNT> Number of visible text lines [default: 3]
--hide-live-wpm Hide live WPM counter
--hide-notifications Hide notifications
--no-save Do not save tests results
--reset Resets everything back to default state

Examples

# All of the options below can also be changed at runtime via the menu.
termitype -t 60                        # Run a 60-second typing test
termitype -c 100                       # Test will contain exactly 100 random words
termitype --theme "catppuccin-mocha"   # Use catppuccin-mocha theme
termitype -l spanish                   # Use Spanish test words
termitype -spn                         # Enable symbols, punctuation, and numbers
termitype --results neofetch           # Use neofetch inspired results
termitype --no-save                    # Do not save tests results
termitype --hide-notifications         # Do not show notifications

Development

Prerequisites

  • Rust 1.87+
  • Cargo

Quick Start

  1. Clone the repository:
git clone https://github.com/emanuel2718/termitype.git
cd termitype
  1. Run the application:
# Development build
cargo run

# Release build
cargo run --release

Themes

Termitype includes a curated collection of themes sourced from the iTerm2 Ghostty Color Schemes Repo repository. Themes can be previewed and changed in real-time.

Contributing

[!Warning] TODO: write out the contribution guideline just in the case there's one person interested in this.

Roadmap

Upcoming Features

  • Package Distribution: Release on Homebrew, AUR, nixpkgs, etc.
  • User config file: Have a user editable config file in $XDG_CONFIG_HOME/termitype/config.toml
  • Configurable Mappings: Custom mappings
  • Custom ASCII arts: Allow usage of custom ASCII arts
  • Custom theme: Allow setting custom themes with names
  • Wordlist Improvements: Improve the quality and distribution of words
  • Multiplayer: Race other people in realtime with private rooms of sort (will use websockets for this)
  • Local Results Tracking: Track test results over time (best use case is to track highest WPM on specific modes) with opt-out option

License

This project is licensed under the GPL-3.0 license - see LICENSE for details.

Acknowledgments

Commit count: 0

cargo fmt