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
Very nice SMS & Mail Bomber for Termux and Linux.

Very nice SMS & Mail Bomber for Termux and Linux. Coded with love)))

nordbearbot.dev 5 Nov 06, 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
ddgr is a cmdline utility to search DuckDuckGo (html version) from the terminal

ddgr is a cmdline utility to search DuckDuckGo (html version) from the terminal. While googler is extremely popular among cmdline users, in many forums the need of a similar utility for privacy-aware

PiΓ±a Colada 2.5k Dec 25, 2022
Gamestonk Terminal is an awesome stock and crypto market terminal

Gamestonk Terminal is an awesome stock and crypto market terminal. A FOSS alternative to Bloomberg Terminal.

Gamestonk Terminal 18.6k Jan 03, 2023
TermPair lets developers securely share and control terminals in real timeπŸ”’

View and control terminals from your browser with end-to-end encryption πŸ”’

Chad Smith 1.5k Jan 05, 2023
command line tool for frequent nmigen tasks (generate sources, show design)

nmigen-tool command line tool for frequent nmigen tasks (generate sources, show design) Usage: generate verilog: nmigen generate verilog nmigen_librar

Hans Baier 8 Nov 27, 2022
CLI tool that helps manage shell libraries.

shmgr CLI tool that helps manage shell libraries. Badges πŸ“› project status badges: version badges: tools / frameworks used by test suite (i.e. used by

Bryan Bugyi 0 Dec 15, 2021
Tstock - Check stocks from the terminal

tstock - Check stocks from the terminal! πŸ“ˆ tstock is a tool to easily generate stock charts from the command line. Just type tstock aapl to get a 3 m

Gabe Banks 502 Dec 30, 2022
xonsh is a Python-powered, cross-platform, Unix-gazing shell

xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt.

xonsh 6.7k Dec 31, 2022
organize your books on the command line

organize your books on the command line

Ben Winston 19 Jan 21, 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
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
Get COVID-19 vaccination schedules from booking.moh.gov.ge in the CLI

vaccination.py Get COVID-19 vaccination schedules from booking.moh.gov.ge in the CLI. Installation $ pip install vaccination Usage Make sure the Pytho

Temuri Takalandze 11 Dec 08, 2021
A simple discord slash command handler for for discord.py.

A simple discord slash command handler for discord.py About β¦Ώ Installation β¦Ώ Disclaimer β¦Ώ Examples β¦Ώ Documentation β¦Ώ Discussions Note that master bran

641 Jan 03, 2023
Voidlx is a terminal cli apps launcher made in python

Voidlx is a terminal cli apps launcher made in python

2 Nov 13, 2021
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
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
Free and Open-Source Command Line tool for Text Replacement

Sniplet Free and Open Source Text Replacement Tool Description: Sniplet is a work in progress CLI tool which can do text replacement globally in Linux

Veeraraghavan Narasimhan 13 Nov 28, 2022
Make tree planting a part of your daily workflow. 🌳

Continuous Reforestation Make tree planting a part of your daily workflow. 🌳 A GitHub Action for planting trees within your development workflow usin

protontypes 168 Dec 22, 2022
Lexeme - CLI to play a word-guessing game like Wordle

What is this? Python program to play a word-guessing game like Wordle, but… More addictive because you can play it over and over and over, not just on

Dan Lenski 6 Oct 26, 2022