Termtyper is a TUI typing application that provides you a great feel with typing with a lot of options to tweak

Overview

Termtyper

Termtyper is a TUI (Text User Interface) typing application that provides you a great feel with typing with a lot of options to tweak!
It is highly inspired by monkeytype
It is built on top of textual which provides the UI for the application

Installation

Note: Termtype needs python version ^3.10
Note: Termtype should run just fine on Linux and Mac.
There might be some issues on Windows though

One Liner

python -m pip install git+https://github.com/kraanzu/termtyper.git

Or if you prefer Manual Installation

git clone https://github.com/kraanzu/termtyper.git
cd termtyper
pip install .

Usage

You should be able to run termtyper by just typing it's name in your terminal
Once entered, you can always come back to the main menu using Escape key
And navigate the settings using left and right arrow keys
And configure the options using your mouse scroll
The options are saved automatically on changing!

Demo Video

demo.mp4

Contribution

Always open to PRs :)

Comments
  • [BUG] ModuleNotFoundError: No module named 'preferredsoundplayer'

    [BUG] ModuleNotFoundError: No module named 'preferredsoundplayer'

    Describe the bug πŸ› I've installed termtpye via the AUR. I had to choose between the repository or the AUR package for python-playsound and chose the repository version. When starting termtype I get the following error:

    Traceback (most recent call last):
      File "/usr/bin/termtyper", line 5, in <module>
        from termtyper.__init__ import main
      File "/usr/lib/python3.10/site-packages/termtyper/__init__.py", line 1, in <module>
        from .ui import TermTyper
      File "/usr/lib/python3.10/site-packages/termtyper/ui/__init__.py", line 1, in <module>
        from .tui import TermTyper
      File "/usr/lib/python3.10/site-packages/termtyper/ui/tui.py", line 12, in <module>
        from termtyper.ui.settings_options import MenuSlide
      File "/usr/lib/python3.10/site-packages/termtyper/ui/settings_options.py", line 11, in <module>
        from termtyper.ui.widgets import banners
      File "/usr/lib/python3.10/site-packages/termtyper/ui/widgets/__init__.py", line 2, in <module>
        from .race_hud import RaceHUD
      File "/usr/lib/python3.10/site-packages/termtyper/ui/widgets/race_hud.py", line 10, in <module>
        from ...utils import Parser
      File "/usr/lib/python3.10/site-packages/termtyper/utils/__init__.py", line 3, in <module>
        from .play_keysound import play_keysound, play_failed
      File "/usr/lib/python3.10/site-packages/termtyper/utils/play_keysound.py", line 2, in <module>
        from preferredsoundplayer import playsound
    ModuleNotFoundError: No module named 'preferredsoundplayer'
    
    

    To Reproduce 🐣 See bug description.

    Expected behavior πŸ€” It should work after installing the package.

    Screenshots 🧐 If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information): πŸ€–

    • OS: Manjaro

    Additional context πŸ“ Add any other context about the problem here.

    bug 
    opened by bttger 13
  • πŸ’‘ Add live typing stats

    πŸ’‘ Add live typing stats

    Live typing stats πŸ’‘

    I think it would be beneficial if the user can get an idea of their current performance while typing. This can be done by implementing a small dashboard below the typing section of the GUI. (See mockup diagram)

    This dashboard could illustrate some typing statistics such as:

    • The number of words that have been typed (e.g. "Words typed: 34")
    • The number of words left in the paragraph (e.g. "Words left: 43")
    • Elapsed time (e.g. "Time: 45s")

    Mockup diagram 🧐 This mockup is what the first design iteration of the dashboard may look like. mockup drawio

    enhancement 
    opened by alec-kr 7
  • [BUG] punctuation can cause too many space inputs

    [BUG] punctuation can cause too many space inputs

    When punctuation is enabled and currently being asked for typing a space instead jumps to the start of the next word inserting 2 spaces with a single press and trains bad backspace muscle memory.

    bug 
    opened by drjaska 4
  • I can't install it with python3.9

    I can't install it with python3.9

    Describe the bug πŸ› terminal run :

    pip3.9 install .
    

    result :

    Processing /Users/powerless/Documents/python_space/termtyper
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Collecting textual<0.2.0,>=0.1.15
      Using cached textual-0.1.18-py3-none-any.whl (89 kB)
    ERROR: Package 'termtyper' requires a different Python: 3.9.13 not in '<4.0,>=3.10'
    WARNING: There was an error checking the latest version of pip.
    

    Desktop (please complete the following information): πŸ€–

    • OS: [mac m1]
    • Version [macos 12]
    bug 
    opened by powerless520 4
  • [BUG] AUR package is seriously broken

    [BUG] AUR package is seriously broken

    Describe the bug πŸ› The AUR package (termtyper-git) that you maintain for this project is seriously broken. It does the a pip install into the user's home (a serious problem, as it leaves left over files when uninstalled, and also means it will have to be installed via pip for other users anyway) and fails to list all the needed dependencies (pip).

    To Reproduce 🐣 Steps to reproduce the behavior:

    1. Try and install the package from the AUR
    2. WTF
    3. Audit the PKGBUILD
    4. Die

    Expected behavior πŸ€”

    1. Try and install the package from the AUR
    2. :)

    Desktop (please complete the following information): πŸ€–

    • OS: Arch Linux

    Additional context πŸ“ If you need any help fixing the PKGBUILD, feel free to ask as I maintain a few AUR packages myself.

    bug 
    opened by rhysperry111 4
  • πŸ› Keypress sound not working

    πŸ› Keypress sound not working

    Describe the bug πŸ› When pressing a key, instead of a sound coming, it shows an error at the bottom of the screen

    To Reproduce 🐣 Steps to reproduce the behavior:

    1. Enable the sound option
    2. Type some text
    3. See error

    Expected behavior πŸ€” It should play the keypress sound

    Screenshots 🧐 gif A still image of the error (from the gif) image

    Desktop (please complete the following information): πŸ€–

    • OS: Windows 11
    • Version 22H2 (22581.200)

    Additional context πŸ“ It seems like the file path being passed to playsound is from the python 3.9 directory instead of being in the python 3.10 one where I installed termtyper. I've uninstalled playsound and termtyper from python 3.9, I only have them in python 3.10 but this still occurs. image

    File Tree

    Python 3.10
    Contains the sounds required image

    Python 3.9
    Doesn't even have the termtyper directory image

    This line seems to be the problem

    https://github.com/kraanzu/termtyper/blob/9da5010f8349bd8bf487b5b48042d769c8e79c17/src/termtyper/utils/parser.py#L26-L35

    This assumes the pip command is always going to be from the python interpreter termtyper is installed in. In my case, I have the pip command set to python 3.9, so the rich location shown by pip show rich is the one from that, for python 3.9 it would need to run py -3.10 -m pip show rich, but why does it even need to run these commands? just to get the path where termtyper is installed? for that you can just use the following snippet:

    import os.path
    
    sounds = os.path.join(os.path.dirname(__file__), "sounds", "mech.wav")
    

    This is what I use in my pypi-command-line package and it works great.

    I just realized that I can set sounds_loc in my config but it should set the location automatically though

    bug 
    opened by wasi-master 4
  • Update Parser calls (Issue #41)

    Update Parser calls (Issue #41)

    Initialize Parser class only once to prevent other files from not being synchronized after a particular change to the config file. The config of all files will refer to MAIN_PARSER from Parser.py.

    Fix Issue #41.

    opened by somenothing 3
  • Install termtyper without python

    Install termtyper without python

    It seems a stupid way to go... I found it difficult to dynamically read words.txt after packaging, so I replaced it with words.py.

    But it works! Now we can find executable files that doesn't require Python to run in Actions, on push or pull request according to .github/workflows/app.yml. Here is an example in my repo.

    I have successfully run it on Windows and Ubuntu, but macOS has not been verified yet (hope no problems). Can someone test it?

    If there are no bugs, I'll add introductions into README.md.

    opened by somenothing 3
  • [BUG]  ERROR: Package 'termtyper' requires a different Python: 3.8.8 not in '<4.0,>=3.10'

    [BUG] ERROR: Package 'termtyper' requires a different Python: 3.8.8 not in '<4.0,>=3.10'

    Describe the bug πŸ› I don't know Python so I need some help I use git clone newest code and install python3.8.8. There are some problems to pip3 install .

    Screenshots 🧐 image

    image

    Desktop (please complete the following information): πŸ€– windows

    bug 
    opened by WQZ0712 2
  • πŸ’‘ [FEAT] Add unit testing/automated testing for devs

    πŸ’‘ [FEAT] Add unit testing/automated testing for devs

    Is your feature request related to a problem? 😒 Please describe. Add unit testing/automated testing

    Describe the solution you'd like πŸ€” Add unit testing/automated testing via PyTest/PyUnit/similar dependency to allow open source devs to work remotely and asynchronously while maintaining the quality of code and ability to build this project without bugs. This can be automated easily with GitHub Actions and a build workflow that is required to pass before a PR will be merged.

    Describe alternatives you've considered 🧐 Every dev could have their own independent testing procedures in their local environment but this would lead to great repetition of work, opportunities for new bugs to be added to different dev's builds and/or test code, and general lack of cohesion in the project.

    Additional context πŸ“ I want to be able to test things without breaking what is already there. I saw in the .gitignore file to ignor a /test folder but if anyone does have any test code available I would really appreciate and think it is a good idea to merge that in.

    enhancement 
    opened by ponderstine 2
  • [BUG] Capitalization mode doesn't seem to work?

    [BUG] Capitalization mode doesn't seem to work?

    I just installed it from AUR.

    Under Settings > Capitalization Mode, I tried both "on" and "max" settings. But I didn't see any capitalized letters when I entered "Start Typing!".

    Perhaps I should activate it somehow?

    Note: I don't know why this post doesn't have the "bug" label. And I don't know how to edit it in.

    opened by vymague 2
  • [BUG] NumberScroll issue on Mac

    [BUG] NumberScroll issue on Mac

    Describe the bug πŸ› I am not able to change the values of a NumberScroll in settings. I have tried scrolling with my MacBook Air trackpad and my Logitech bluetooth mouse which did nothing. When I pressed 'J' or 'K' or Up or Down it or Shift+Up or Shift+Down it would change the highlighted setting to the next setting but would not actually toggle/alter the values of any of the settings themself.

    To Reproduce 🐣 Steps to reproduce the behavior:

    1. On Python 3.10, Mac OS 10.15.3
    2. Go to settings page
    3. Try to change value in number scroll with scrollwheel, 'J' and 'K' keys

    Expected behavior πŸ€” The value in the NumberScroll for the setting should change up or down.

    Screenshots 🧐 If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information): πŸ€–

    • OS: Mac OSx 10.15.3
    • Python 10.3

    Additional context πŸ“ Need the NumberScrolls to be working so I can test adding a new NumberScroll for a different feature :)

    bug 
    opened by ponderstine 4
  • Don't highlight the current typing letter and add

    Don't highlight the current typing letter and add " | " cursor styleπŸ’‘ [FEAT]

    There is no need to highlight current typing letter , it may cause distraction or just add this option and please add " | " cursor style as monkeytype shown below :

    monkeytype

    enhancement 
    opened by bickman 2
  • No click sound and can't use underline caret style in Windows Terminal [BUG]

    No click sound and can't use underline caret style in Windows Terminal [BUG]

    OS: Windows 11 Terminal: Windows Terminal Shell: Power shell Python Version: 3.10 Issue: No sound when typing, I have set keypress sound on, and no underline caret sytle. I tested in cmd ,still no sound but underline caret display normally. Feature request: Normal vertical line caret style and it is better for typing.

    bug 
    opened by bickman 4
  • πŸ’‘ [FEAT] Shortcut or button to reset settings back to their default values

    πŸ’‘ [FEAT] Shortcut or button to reset settings back to their default values

    Is your feature request related to a problem? 😒 Please describe. As far as I'm aware, there is currently no easy way to reset the settings back to their default values without doing so manually. This can make it quite tedious to mess with and keep track off many modified settings.

    Describe the solution you'd like πŸ€” I propose to either add a shortcut (such as ctrl+r) stated in the help menu, or a button to each menu within settings to reset all the settings back to their default values. If there are better ways of doing this, then I would love to hear alternative suggestions.

    enhancement 
    opened by IliyaFrolov 2
  • [BUG] 'Min Burst:' setting disappears when opening and closing the help menu

    [BUG] 'Min Burst:' setting disappears when opening and closing the help menu

    Describe the bug πŸ› The 'Min Burst:' setting within the 'Push Your Limits' menu disappears when toggling the help menu from a different settings menu. The missing setting can be made to reappear by toggling the help menu once again but from the 'Push Your Limits' menu itself.

    To Reproduce 🐣 Steps to reproduce the behaviour:

    1. Within 'Settings', go to any menu other than the 'Push your Limits' menu.
    2. Press 'ctrl+h' twice to open and close the help menu.
    3. Go to the 'Push your Limits' menu. By this point, the setting 'Min Burst:' should be gone.
    4. Repeat step (2.). The setting should reappear.

    Expected behaviour πŸ€” The settings should not disappear and reappear when opening and closing the help menu.

    Screenshots 🧐 If applicable, add screenshots to help explain your problem. Before: https://user-images.githubusercontent.com/68474507/180227692-93727a56-67a5-40c5-ac46-b163cda21380.png After: https://user-images.githubusercontent.com/68474507/180227924-bd8a5cde-5cd0-4b01-811d-0dc014b6b715.png

    Desktop (please complete the following information): πŸ€–

    • OS: Windows 11

    Additional context πŸ“ Add any other context about the problem here.

    bug 
    opened by IliyaFrolov 11
Releases(v2.0.0)
Owner
Noob Coder
I like to try stufff
Noob Coder
Spongebob-cli - Watch classic spongebob from the terminal

spongebob-cli Watch classic spongebob from the terminal! Thanks to everyone that

523 Jan 02, 2023
Python library and command line tool for interacting with Bugzilla

python-bugzilla This package provides two bits: bugzilla python module for talking to a Bugzilla instance over XMLRPC or REST /usr/bin/bugzilla comman

Python Bugzilla Project 112 Nov 05, 2022
🐍The nx-python plugin allows users to create a basic python application using nx commands.

🐍 NxPy: Nx Python plugin This project was generated using Nx. The nx-python plugin allows users to create a basic python application using nx command

StandUP Communications 74 Aug 31, 2022
A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool

Privateer A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool How

Shreyash Chavan 2 Apr 04, 2022
Because sometimes you need to do it live

doitlive doitlive is a tool for live presentations in the terminal. It reads a file of shell commands and replays the commands in a fake terminal sess

Steven Loria 3.2k Jan 09, 2023
A command line tool to remove background from video and image

A command line tool to remove background from video and image, brought to you by BackgroundRemover.app which is an app made by nadermx powered by this tool

Johnathan Nader 1.7k Jan 01, 2023
A very simple OpenContest command line client written in Python

OpenContest Client A very simple OpenContest command line client written in Python. The only dependency is the requests library. Tested with Linux onl

Ladue Computer Science 1 May 25, 2022
Tools crack instagram + fb ayok dicoba keburu premium 😁

FITUR INSTALLASI [1] pkg update && pkg upgrade [2] pkg install git [3] pkg install python [4] pkg install python2 [5] pkg install nano [6]

Jeeck 1 Dec 11, 2021
A terminal application for managing images and artifacts in Azure Container Registry.

acr-browser acr-browser is a terminal-based user interface for managing container images and artifacts in Azure Container Registry. πŸš€ This project ow

Sam Dobson 5 Jul 30, 2022
A begginer reverse shell tool python.

A begginer reverse shell tool python. Este programa Γ© para apenas estudo e conhecimento. NΓ£o use isso em outra pessoas. NΓ£o me responsabilizo por uso

Dio brando 2 Jan 05, 2022
A mini command line tool to spellcheck text files using tadqeek.alsharekh.org

tadqeek_sakhr A mini command line tool to spellcheck text files using tadqeek.alsharekh.org Usage usage: python tadqeek_sakhr.py [-h] -i INPUT [-o OUT

Youssif Shaaban Alsager 5 Dec 11, 2022
Squirrel - A cli program to track writing progress

Squirrel Very much a WIP project squirrel is a command line program that tracks you writing progress and gives you useful information and cute and pic

3 Mar 23, 2022
A Multipurpose bot with many Commands made using Pycord

This repo has all of the commands you will ever need in a discord bot. a Multipurpose discord bot

Pogrammar 42 Dec 18, 2022
🦎 A NeoVim plugin for highlighting visual selections like in a normal document editor!

🦎 HighStr.nvim A NeoVim plugin for highlighting visual selections like in a normal document editor! Demo TL;DR HighStr.nvim is a NeoVim plugin writte

Pocco81 222 Jan 03, 2023
Professor Wordlist is a free open source command line tool written in python

Professor Wordlist is a free open source command line tool written in python, With the aim of generating custom wordlists with a variety of unique parameters and functions providing many possibilitie

γ‚ͺγƒΌγ‚―O A K Z E H γ‚ͺγƒΌγ‚― 1 Oct 28, 2021
Display Images in your terminal with python

Term-Img Display Images in your terminal with python NOTE: This project is a work in progress and not everything on here has actually been implemented

My avatar ;D 118 Jan 05, 2023
CLI tool to develop StarkNet projects written in Cairo

OpenZeppelin Nile β›΅ Navigate your StarkNet projects written in Cairo. Getting started Create a folder for your project and cd into it: mkdir myproject

OpenZeppelin 305 Dec 30, 2022
Bringing emacs' greatest feature to neovim - Tetris!

nvim-tetris Bringing emacs' greatest feature to neovim - Tetris! This plugin is written in Fennel using Olical's project Aniseed for creating the proj

129 Dec 26, 2022
A command line interface to buy things in stregsystemet

Stregsystemet-CLI This repository is the Stregsystemet CLI, to buy things in Stregsystemet, at AAU. Use of this cli-tool is at your own risk and there

F-klubben 14 Oct 18, 2022
Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python

YTSP It is a CLI movie streaming client which works on yts.mx API written in pyt

1 Feb 05, 2022