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.
- 🎭 Custom Modes
- 🖊️ Custom Sources
- 🎨 Custom theming
- 📈 Pretty graphs
- 🪶 Lightweight (~2MB)
- 🔥 Blazingly fast (Sorry, i had to.. 🦀)
- .. And more to come!
Installing octotype can be done with the following methods:
cargo install octotype
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.
| 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 |
Check out the Docs for configuration options.
A nix flake dev-shell is provided to run with nix develop.
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 😄
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.

