{"id":13496630,"url":"https://github.com/jrnxf/thokr","last_synced_at":"2025-04-04T17:10:30.117Z","repository":{"id":37564461,"uuid":"467419041","full_name":"jrnxf/thokr","owner":"jrnxf","description":"✨ sleek typing tui with visualized results and historical logging","archived":false,"fork":false,"pushed_at":"2024-06-15T18:40:50.000Z","size":2716,"stargazers_count":549,"open_issues_count":7,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-29T08:51:56.115Z","etag":null,"topics":["cli","monkeytype","rust","terminal","tui","typing","typing-game","typing-practice"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrnxf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-08T08:08:03.000Z","updated_at":"2025-03-17T03:57:32.000Z","dependencies_parsed_at":"2024-07-31T21:57:16.551Z","dependency_job_id":"e4f1e3e9-5f0f-4e2e-a25d-201dea590346","html_url":"https://github.com/jrnxf/thokr","commit_stats":{"total_commits":56,"total_committers":6,"mean_commits":9.333333333333334,"dds":0.1964285714285714,"last_synced_commit":"09375efb2e7c7adc1af169c7ee491a443461cefc"},"previous_names":["thatvegandev/thokr"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrnxf%2Fthokr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrnxf%2Fthokr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrnxf%2Fthokr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrnxf%2Fthokr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrnxf","download_url":"https://codeload.github.com/jrnxf/thokr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217222,"owners_count":20903009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","monkeytype","rust","terminal","tui","typing","typing-game","typing-practice"],"created_at":"2024-07-31T19:01:53.638Z","updated_at":"2025-04-04T17:10:30.092Z","avatar_url":"https://github.com/jrnxf.png","language":"Rust","funding_links":[],"categories":["Rust","\u003ca name=\"typing\"\u003e\u003c/a\u003eTyping test and practice"],"sub_categories":[],"readme":"# thokr\n✨ sleek typing tui with visualized results and historical logging\n\n[![GitHub Build Workflow](https://github.com/thatvegandev/thokr/actions/workflows/build.yml/badge.svg)](https://github.com/thatvegandev/thokr/actions/workflows/build.yml)\n[![GitHub Deploy Workflow](https://github.com/thatvegandev/thokr/actions/workflows/deploy.yml/badge.svg)](https://github.com/thatvegandev/thokr/actions/workflows/deploy.yml)\n[![License](https://img.shields.io/badge/License-MIT-default.svg)](./LICENSE.md)\n[![Crate Version](https://img.shields.io/crates/v/thokr)](https://crates.io/crates/thokr)\n[![Github Stars](https://img.shields.io/github/stars/thatvegandev/thokr)](https://github.com/thatvegandev/thokr/stargazers)\n\n![demo](https://github.com/thatvegandev/assets/raw/main/thokr/demo.gif)\n\n## Usage\n\nFor detailed usage run `thokr -h`.\n\n```\nthokr 0.4.1\nsleek typing tui with visualized results and historical logging\n\nUSAGE:\n    thokr [OPTIONS]\n\nOPTIONS:\n    -f, --full-sentences \u003cNUMBER_OF_SENTENCES\u003e\n            number of sentences to use in test\n\n    -h, --help\n            Print help information\n\n    -l, --supported-language \u003cSUPPORTED_LANGUAGE\u003e\n            language to pull words from [default: english] [possible values: english, english1k,\n            english10k]\n\n    -p, --prompt \u003cPROMPT\u003e\n            custom prompt to use\n\n    -s, --number-of-secs \u003cNUMBER_OF_SECS\u003e\n            number of seconds to run test\n\n    -V, --version\n            Print version information\n\n    -w, --number-of-words \u003cNUMBER_OF_WORDS\u003e\n            number of words to use in test [default: 15]\n\n```\n\n\n## Installation\n\n### Cargo\n\n```sh\n$ cargo install thokr\n```\n\n### Docker\n\n```sh\n$ docker run -it thatvegandev/thokr\n```\n\n### Arch Linux\n\nInstall `thokr-git` from the AUR\n\n## Usage\n\nFor detailed usage run `thokr -h`.\n\n### Examples\n\n| command                     |                                                    test contents |\n|:----------------------------|-----------------------------------------------------------------:|\n| `thokr`                     |                          50 of the 200 most common english words |\n| `thokr -w 100`              |                         100 of the 200 most common English words |\n| `thokr -w 100 -l english1k` |                        100 of the 1000 most common English words |\n| `thokr -w 10 -s 5`          | 10 of the 200 most common English words (hard stop at 5 seconds) |\n| `thokr -p \"$(cat foo.txt)\"` |                   custom prompt with the output of `cat foo.txt` |\n| `thokr -f 4`                | 4 grammatical sentences with full stops; overrides word settings |\n\n_During a test you can press ← to start over or → to see a new prompt (assuming\nyou didn't supply a custom one)_\n\n## Supported Languages\n\nThe following languages are available by default:\n\n| name         |                     description |\n| :----------- | ------------------------------: |\n| `english`    |   200 most common English words |\n| `english1k`  |  1000 most common English words |\n| `english10k` | 10000 most common English words |\n\n## Logging\n\nUpon completion of a test, a row outlining your results is appended to the\n`log.csv` file found in the following platform-specific folders. This way you\ncan easily track your progress over time.\n\n| platform | value                                                            |                                        example |\n| :------- | ---------------------------------------------------------------- | ---------------------------------------------: |\n| Linux    | $XDG*CONFIG_HOME/\\_project_path* or $HOME/.config/_project_path_ |                      /home/colby/.config/thokr |\n| macOS    | $HOME/Library/Application Support/_project_path_                 | /Users/Colby/Library/Application Support/thokr |\n| Windows  | {FOLDERID*RoamingAppData}\\_project_path*\\config                  |    C:\\Users\\Colby\\AppData\\Roaming\\thokr\\config |\n\n## Roadmap\n\n- [ ] ⚡️ Performance\n  - Right now there are known performance issues surrounding the rendering of\n    the tui at each tick interval and/or key press. Ideally each render uses the\n    prior render as a base and only makes the necessary adjustments (possibly\n    using\n    [StatefulWidget](https://docs.rs/tui/0.10.0/tui/widgets/trait.StatefulWidget.html)),\n    but I haven't been able to figure that out yet.\n- [ ] 🔠 Multi-language support\n  - I decided not to launch thokr with languages besides english because of some\n    odd rendering issues I was experiencing when trying to input characters with\n    accents. It's as though I'm not able to properly input the character in [raw\n    mode](https://docs.rs/crossterm/0.3.0/crossterm/raw/index.html). I'd love to\n    have that figure out before shipping other languages because I personally\n    felt the experience was a bit jarring. I'll open an bug report for it with\n    more details and replication steps -- would love more eyes on that problem!\n- [ ] 🧪 Tests\n  - I've only written a small amount of tests at this point. I haven't sat down\n    to really think through what tests look like when the output is dependent on\n    the users terminal size, font size, etc. If you have any ideas for this please\n    open up an issue and start the discussion!\n\n## Contributing\n\nAll contributions are **greatly appreciated**.\n\nIf you have a suggestion that would make thokr better, please fork the repo and\ncreate a [pull request](https://github.com/thatvegandev/thokr/pulls). You can\nalso simply open an issue and select `Feature Request`\n\n1. Fork the repo\n2. Create your feature branch (`git checkout -b [your_username]/xyz`)\n3. Commit your changes (`git commit -m 'add some xyz'`)\n4. Rebase off main (`git fetch --all \u0026\u0026 git rebase origin/main`)\n5. Push to your branch (`git push origin [your_username]/xyz`)\n6. Fill out pull request template\n\nSee the [open issues](https://github.com/thatvegandev/thokr/issues) for a full\nlist of proposed features (and known issues).\n\n## License\n\nDistributed under the MIT License. See [LICENSE.md](./LICENSE.md) for more\ninformation.\n\n## Acknowledgments\n\nCheck out these amazing projects that inspired thokr!\n\n- [monkeytype](https://github.com/Miodec/monkeytype)\n- [tui-rs](https://github.com/fdehau/tui-rs)\n- [ttyper](https://github.com/max-niederman/ttyper)\n\n## Follow\n\n[![github](https://img.shields.io/github/followers/thatvegandev?style=social)](https://github.com/thatvegandev)\n[![twitter](https://img.shields.io/twitter/follow/thatvegandev?color=white\u0026style=social)](https://twitter.com/thatvegandev)\n[![youtube](https://img.shields.io/youtube/channel/subscribers/UCEDfokz6igeN4bX7Whq49-g?style=social)](https://youtube.com/user/thatvegandev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrnxf%2Fthokr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrnxf%2Fthokr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrnxf%2Fthokr/lists"}