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
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
A command-line utility that, given a markdown file, checks whether all its links work.

A command-line utility written in Python that checks validity of links in a markdown file.

Teclado 2 Dec 08, 2021
A set of libraries and functions for simplifying automating Cisco devices through SecureCRT.

This is a set of libraries for automating Cisco devices (and to a lesser extent, bash prompts) over ssh/telnet in SecureCRT.

Matthew Spangler 7 Mar 30, 2022
Easily handle day to day CLI operation via Python instead of regular Bash programs.

pz Ever wished to use Python in Bash? Would you choose the Python syntax over sed, awk, ...? Should you exactly know what command would you use in Pyt

CZ.NIC 697 Jan 03, 2023
RSS reader client for CLI (Command Line Interface),

rReader is RSS reader client for CLI(Command Line Interface)

Lee JunHaeng 10 Dec 24, 2022
A CLI application that downloads your AC submissions from OJ's like Atcoder,Codeforces,CodeChef and distil it into beautiful Submission HeatMap.

Yoda A CLI that takes away the hassle of managing your submission files on different online-judges by automating the entire process of collecting and organizing your code submissions in one single Di

Nikhar Manchanda 1 Jul 28, 2022
ctree - command line christmas tree

ctree ctree - command line christmas tree It is small python script that prints a christmas tree in terminal. It is colourful and always gives you a d

15 Aug 15, 2022
Play videos in the terminal.

Termvideo Play videos in the terminal (stdout). python main.py /path/to/video.mp4 Terminal size: -x output_width, -y output_height. Default autodetect

Patrick 11 Jun 13, 2022
command line interface to manage VALORANT skins

A PROPER RELEASE IS COMING SOON, IF YOU KNOW HOW TO USE PYTHON YOU CAN USE IT NOW! valorant skin manager command line interface simple command line in

colinh 131 Dec 25, 2022
A terminal tool for git. When we use git, do you feel very uncomfortable with too long commands

PIGIT A terminal tool for git. When we use git, do you feel very uncomfortable with too long commands. For example: git status --short, this project c

Zachary 1 Apr 09, 2022
Convert markdown to HTML using the GitHub API and some additional tweaks with Python.

Convert markdown to HTML using the GitHub API and some additional tweaks with Python. Comes with full formula support and image compression.

phseiff 70 Dec 23, 2022
Commandline Python app to Autodownload mediafire folders and files.

Commandline Python app to Autodownload mediafire folders and files.

Tharuk Renuja 3 May 12, 2022
A minimal and ridiculously good looking command-line-interface toolkit.

Pyceo Pyceo is a Python package for creating beautiful, composable, and ridiculously good looking command-line-user-interfaces without having to write

Juan-Pablo Scaletti 21 Mar 25, 2022
Double Pendulum visualised with fetching system information in Python.

Show off your terminal, in style. A nice relaxing double pendulum simulation using ASCII, able to simulate multiple pendulums at once, and provide tra

Nekurone 62 Dec 14, 2022
This is the public repo for the VS Code Extension AT&T i386/IA32 UIUC-ECE391 Syntax Highlighting

AT&T i386 IA32 UIUC ECE391 GCC Highlighter & Snippet & Linter This is the VS Code Extension for UIUC ECE 391, MIT 6.828, and all other AT&T-based i386

Jackgetup 1 Feb 05, 2022
Python API and CLI for the ikea IDΓ…SEN desk.

idasen This is a heavily modified fork of rhyst/idasen-controller. The IDΓ…SEN is an electric sitting standing desk with a Linak controller sold by ike

Alex 79 Dec 14, 2022
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
A 3D engine powered by ASCII art

3D engine powered by ASCII art

Lingdong Huang 48 Nov 16, 2022
Kattis shell for getting examples, testing and submitting.

Kattis shell for getting examples, testing and submitting.

Simon Green Kristensen 15 Sep 30, 2022
A command line connect 4 game against a minimax agent.

A command line connect 4 game against a minimax agent.

1 Oct 17, 2021