
> 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 ð
[](https://ratatui.rs/)
[![Crate Badge]][Crate]
[![Discord Badge]][Discord]
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](https://mahlquistj.github.io/octotype/docs/configuration/modes)
- ðïļ Custom [Sources](https://mahlquistj.github.io/octotype/docs/configuration/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:
```nix
{
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 ` | `--config ` | 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](https://mahlquistj.github.io/octotype/docs/contributing/development/environment#nix-devshell) 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
[Monkeytype]: https://monkeytype.com/
[Ratatui]: https://ratatui.rs/
[Docs]: https://mahlquistj.github.io/octotype/
[ZSA Moonlander]: https://www.zsa.io/moonlander
[Gladius]: https://github.com/mahlquistj/gladius
[Crate]: https://crates.io/crates/octotype
[Crate Badge]: https://img.shields.io/crates/v/octotype
[Discord]: https://discord.gg/zk4SXvdUxj
[Discord Badge]: https://img.shields.io/discord/1416561228561776724?logo=discord&label=Discord