octotype

Crates.iooctotype
lib.rsoctotype
version0.8.0
created_at2025-09-14 00:36:38.053085+00
updated_at2025-11-03 14:37:40.936104+00
descriptionA typing trainer for your terminal
homepage
repositoryhttps://github.com/mahlquistj/octotype
max_upload_size
id1838273
size1,466,273
Mads Ahlquist Jensen (mahlquistj)

documentation

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 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
Commit count: 138

cargo fmt