mahlquistj/octotype
A WIP TUI typing trainer inspired by monkeytype with a focus on customization
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 π
OctoType is a TUI typing trainer made with Ratatui, and powered by Gladius -
Heavily inspired by Monkeytype, with a focus on customizability
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.

