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
A Tempmail Tool for Terminal and Termux.

A Tempmail Tool for Terminal and Termux.

MAO-COMMUNITY 8 Oct 19, 2022
A Telegram Bot Written In Python To Upload Medias To telegra.ph

Telegraph-Uploader A Telegram Bot Written In Python To Upload Medias To telegra.ph DEPLOY YOU CAN SIMPLY DEPLOY ON HEROKU BY CLICKING THE BUTTON BELOW

Rithunand 31 Dec 03, 2022
Simple command-line implementation of minesweeper

minesweeper This is a Python implementation of 2-D Minesweeper! Check out the tutorial here: https://youtu.be/Fjw7Lc9zlyU You start a game by running

Kylie 49 Dec 10, 2022
Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.

Baselining, on steroids! Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems. The proje

Nelson 4 Dec 09, 2022
An open-source CLI tool for backing up RDS(PostgreSQL) Locally or to Amazon S3 bucket

An open-source CLI tool for backing up RDS(PostgreSQL) Locally or to Amazon S3 bucket

1 Oct 30, 2021
This is an app for creating your own color scheme for Termux!

Termux Terminal Theme Creator [WIP] If you need help on how to use the program, you can either create a GitHub issue or join this temporary Discord se

asxlvm 3 Dec 31, 2022
Basic python tools to generate shellcode runner in vba

vba_bin_runner Basic python tools to generate shellcode runner in vba. The stub use ZwAllocateVirtualMemory to allocate memory, RtlMoveMemory to write

4 Aug 24, 2021
A simple command line dumper written in Python 3.

A simple command line dumper written in Python 3.

ImFatF1sh 1 Oct 10, 2021
A python Ethereum utilities command-line tool.

peth-cli A python Ethereum utilities command-line tool. After wasting the all day trying to install seth and failed, I took another day to write this.

Moon 55 Nov 15, 2022
argofloats: Simple CLI for ArgoVis and Argofloats

argofloats: Simple CLI for ArgoVis and Argofloats Argo is an international program that collects information from inside the ocean using a fleet of ro

Samapriya Roy 2 Feb 13, 2022
touch command for Windows

Touch touch command for Windows Setup: Clone the repository git clone https://github.com/g-paras/touch.git cd touch Install touch module python setup.

Paras Gupta 5 Jan 04, 2022
OneDriveExplorer - A command line and GUI based application for reconstructing the folder structure of OneDrive from the UserCid.dat file

OneDriveExplorer - A command line and GUI based application for reconstructing the folder structure of OneDrive from the UserCid.dat file

Brian Maloney 100 Dec 13, 2022
Fylm is a wonderful automated command line app for organizing your film media.

Overview Fylm is a wonderful automated command line app for organizing your film media. You can pronounce it Film or File 'em, whichever you like! It

Brandon Shelley 30 Dec 05, 2022
An anime command-line system information tool written in python.

Animefetch - v0.0.3 An anime command-line system information tool written in python. Description Animefetch is an anime command-line system informatio

Thadeuks 6 Jun 17, 2022
CLI tool to develop StarkNet projects written in Cairo

β›΅ Nile Navigate your StarkNet projects written in Cairo. Installation pip install cairo-nile Usage Install Cairo Use nile to install a given version o

MartΓ­n Triay 305 Dec 30, 2022
Fetch is use to get information about anything on the shell using Wikipedia.

Fetch Search wikipedia article on command line [Why This?] [Support the Project] [Installation] [Configuration] Why this? Fetch helps you to quickly l

Yash Singh 340 Dec 18, 2022
LSD (Linux Spotify Downloader) is a command line tool for downloading or rather recording content on Spotify.

LSD (Linux Spotify Downloader) is a command line tool for downloading or rather recording content on Spotify.

Jannis Zahn 7 Jun 21, 2022
Zero-config CLI for TypeScript package development

Despite all the recent hype, setting up a new TypeScript (x React) library can be tough. Between Rollup, Jest, tsconfig, Yarn resolutions, ESLint, and

Jared Palmer 10.5k Jan 08, 2023
Hurry is a CLI tool to speed setting up MoniGoMani HyperStrategy & co. #freqtrade #hyperopting #trading #strategy

Hurry is a CLI tool to speed setting up MoniGoMani HyperStrategy & co. #freqtrade #hyperopting #trading #strategy

10 Dec 29, 2022
Stream comments, submissions from subreddits and users across reddit right in your terminal

reddit_from_terminal stream comments, submissions from subreddits and users across reddit right in your terminal Alert! : Can't watch media contents(p

Pritam Dhara 2 Dec 30, 2021