Thanks to visit codestin.com
Credit goes to lib.rs

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

#1537 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–33MB
~491K SLoC