mahlquistj
octotype
Rust

A WIP TUI typing trainer inspired by monkeytype with a focus on customization

Last updated Jul 5, 2026
96
Stars
1
Forks
6
Issues
0
Stars/day
Attention Score
41
Language breakdown
Rust 95.9%
Nix 3.2%
Just 0.8%
Shell 0.1%
โ–ธ Files click to expand
README

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]][Crate] [![Discord Badge]][Discord]

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

[Monkeytype]: https://monkeytype.com/ [Ratatui]: https://ratatui.rs/ [Docs]: https://mahlquistj.github.io/octotype/ [ZSA Moonlander]: https://www.zsa.io/moonlander [Gladius]: https://github.com/mahlquistj/gladius [Crate]: https://crates.io/crates/octotype [Crate Badge]: https://img.shields.io/crates/v/octotype [Discord]: https://discord.gg/zk4SXvdUxj [Discord Badge]: https://img.shields.io/discord/1416561228561776724?logo=discord&label=Discord

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท mahlquistj/octotype ยท Updated daily from GitHub