GitHunt
MA

mahlquistj/octotype

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

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
mahlquistj/octotype | GitHunt