README.md

October 28, 2025 ยท View on GitHub

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

ShortLongDescription
--print-configPrints the current settings, modes, and source
-p--print-settingsPrints the current settings
-c <path>--config <path>Overrides the default config location
-h--helpShows 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