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 simple CLI tool for converting logs from Poker Now games to other formats

πŸ‚‘ Poker Now Log Converter πŸ‚‘ A command line utility for converting logs from Poker Now games to other formats. Introduction Poker Now is a free onlin

6 Dec 23, 2022
Run an FFmpeg command and see the percentage progress and ETA.

Run an FFmpeg command and see the percentage progress and ETA.

25 Dec 22, 2022
Wordle - Wordle solver with python

wordle what is wordle? https://www.powerlanguage.co.uk/wordle/ preparing $ pip i

shidocchi 0 Jan 24, 2022
A Python-based Wordle solver and CLI player

Wordle A Python-based Wordle solver and CLI player This was created using Python 3.9.7. SPOILER ALERT: the data directory contains spoilers for upcomi

Will Fitzgerald 1 Jul 24, 2022
ServX | Bash Command as a Service

ServX | Bash Command as a Service Screenshots Instructions for running Run python3 servx.py. COMPATIBILITY TESTED ON ARCHLINUX(x64) & DEBIAN(x64) ONLY

ARPSyndicate 2 Mar 11, 2022
:computer: tmux session manager. built on libtmux

tmuxp, tmux session manager. built on libtmux. We need help! tmuxp is a trusted session manager for tmux. If you could lend your time to helping answe

python utilities for tmux 3.6k Jan 01, 2023
Tncli - TON smart contract command line interface

Tncli TON smart contract command line interface State Not working, in active dev

Disintar IO 100 Dec 18, 2022
nbcommands bring the goodness of Unix commands to Jupyter notebooks.

nbcommands nbcommands bring the goodness of Unix commands to Jupyter notebooks. Installation You can simply use pip to install nbcommands: $ pip insta

Vinayak Mehta 181 Dec 23, 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
A minimal todo list for your terminal.

todo A minimal todo list for your terminal. Installation Run the following command. pip install git+https://github.com/piero-vic/todo.git Usage todo

Piero Lescano 7 Aug 08, 2022
CLI utility for updating the EVE Online static data export in a postgres database

EVE SDE Postgres updater CLI utility for updating the EVE Online static data export postgres database. This has been tested with the Fuzzwork postgres

Markus Juopperi 1 Oct 29, 2021
frogtrade9000 - a command-line Rich client for the freqtrade REST API

frogtrade9000 - a command-line Rich client for the freqtrade REST API I found FreqUI too cumbersome and slow on my Raspberry Pi 400 when running multi

Robert Davey 79 Dec 02, 2022
🎈 A Mini CLI-based Operating System simulator

Mini OS Simulator Summary 🎈 A Mini CLI-based Operating System simulator, well, not really. It simulates a file system with songs and movies and stuff

Jaiyank S. 3 Feb 14, 2022
Key-control - A tool for add keys to your Termux app

Key-Control Is a tool for add keys to your Termux app. Cara Penginstalan $ pkg u

Beereva.id 1 Feb 14, 2022
Lets you view, edit and execute Jupyter Notebooks in the terminal.

Lets you view, edit and execute Jupyter Notebooks in the terminal.

David Brochart 684 Dec 28, 2022
asciinema - Terminal session recorder πŸ“Ή

asciinema - Terminal session recorder πŸ“Ή

asciinema 11.1k Dec 27, 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
CmdTube is a Python CLI library for searching, downloading, and watching YouTube tutorials

CmdTube is a Python CLI library for searching, downloading, and watching YouTube tutorials. This library was made with programmers in mind and it's dedicated to every programmer who watches YouTube v

Samuel Ayomide Ogunleke 2 Aug 22, 2022
A cd command that learns - easily navigate directories from the command line

NAME autojump - a faster way to navigate your filesystem DESCRIPTION autojump is a faster way to navigate your filesystem. It works by maintaining a d

William Ting 14.5k Jan 03, 2023
Command Line Manager + Interactive Shell for Python Projects

Manage Command Line Manager + Interactive Shell for Python Projects

Python Manage 123 Aug 28, 2022