10 releases (5 breaking)

Uses new Rust 2024

0.8.0 Nov 3, 2025
0.7.0 Oct 31, 2025
0.6.1 Oct 28, 2025
0.5.0 Oct 11, 2025
0.3.2 Sep 14, 2025

#1683 in Command line utilities

MIT and LGPL-3.0-or-later

1.5MB
5K SLoC

Header

The above mascot is Squibbles (Scribbles) - He is generated by ChatGPT. If anyone wants to create a proper mascot, feel free to submit an issue 😄

Built With Ratatui Crate Badge Discord Badge

OctoType is a TUI typing trainer made with Ratatui, and powered by Gladius - Heavily inspired by Monkeytype, with a focus on customizability

Demo

[!WARNING]

This is still a work in progress. Breaking changes to Modes, Sources and the configuration might occur.

ðŸ’Ą Features

  • 🎭 Custom Modes
  • 🖊ïļ Custom Sources
  • ðŸŽĻ Custom theming
  • 📈 Pretty graphs
  • ðŸŠķ Lightweight (~2MB)
  • ðŸ”Ĩ Blazingly fast (Sorry, i had to.. ðŸĶ€)
  • .. And more to come!

ðŸ”― Installation

Installing octotype can be done with the following methods:

Cargo

cargo install octotype

Nix

You can add OctoType as a Flake:

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    octotype.url = "github:mahlquistj/octotype/main";
  };
  
  outputs = { self, nixpkgs, rio }: {
    nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            octotype.packages.${pkgs.system}.octotype
          ];
        })
      ];
    };
  };
}

[!NOTE] No package exists in nixpkgs yet.

🔖 Arguments

Short Long Description
--print-config Prints the current settings, modes, and source
-p --print-settings Prints the current settings
-c <path> --config <path> Overrides the default config location
-h --help Shows a help page with the list of arguments

⚙ïļ Configuration

Check out the Docs for configuration options.

ðŸ’ŧ Development

A nix flake dev-shell is provided to run with nix develop.

⭐ Contributing

If you have an idea, bug-report or alike, feel free to open an issue or a PR - It's more than welcome!

[!NOTE] I'm only developing this in my spare time, so don't expect immidiate replies 😄

❓ Why another typing-trainer?

It all started as a fun side-project to learn typing on my new ZSA Moonlander keyboard. I was inspired by using Monkeytype a lot, but found that i was missing more customizability when it came to what modes and words i could get.

🌠 Star History

Star History Chart

Dependencies

~17–32MB
~483K SLoC