/speedtyper.nvim

⏩ Practise typing in Neovim ⏩

Primary LanguageLuaMIT LicenseMIT

⌨️ Speedtyper

Practise typing while bored.

📺 Showcase

⌛ Countdown game mode

2023-08-25.19-31-47.mp4

🌧️ Rain game mode

Screencast.from.09-22-2023.01.30.02.PM.webm

⚡️ Features

  • Different game modes:

    • Countdown :
      • Objective: Type as much words as possible before the time runs out.
      • Customize Game Duration
      • Feedback: Receive instant updates on your words per minute (WPM) and accuracy.
    • Stopwatch :
      • Objective: Type an entire page of text as fast and as accurate as possible.
      • Feedback: Receive instant updates on your words per minute (WPM) and accuracy.
    • Rain :
      • Objective: Words fall from the top of the screen, type them before they hit the bottom.
      • Choose the number of lives
      • Customize rain speed

    Coming soon: code snippets: Enhance your coding speed and accuracy by typing various code snippets.

  • Languages: Currently only supports English and Serbian.

  • Play Offline: No need to connect to the internet.

  • Distraction-Free Typing: Temporarily disable cmp to focus on the game.

✨ Recommended

📋 Installation

lazy:

{
    "NStefan002/speedtyper.nvim",
    cmd = "Speedtyper",
    opts = {
    -- your config
    }
}

packer:

use {
    "NStefan002/speedtyper.nvim",
    config = function()
        require('speedtyper').setup({
            -- your config
        })
    end
}

⚙ Default configuration

Full list of options with their default values
{
    window = {
        height = 5, -- integer >= 5 | float in range (0, 1)
        width = 0.55, -- integer | float in range (0, 1)
        border = "rounded", -- "none" | "single" | "double" | "rounded" | "shadow" | "solid"
    },
    language = "en", -- "en" | "sr" currently only only supports English and Serbian
    game_modes = { -- prefered settings for different game modes
        -- type until time expires
        countdown = {
            time = 30,
        },
        -- type until you complete one page
        stopwatch = {
            hide_time = true, -- hide time while typing
        },
        -- NOTE: the window height will become the same as the window width
        rain = {
            initial_speed = 1.5, -- words fall down by one line every x seconds
            throttle = 7, -- increase speed every x seconds (set to -1 for constant speed)
            lives = 3,
        },
    },
}

🧰 Commands

Command Description
:Speedtyper Select the game mode and enjoy playing!

🤝 Contributing

PRs and issues are always welcome.

✅☑️ TODO

See this.

🎭 Inspiration

👀 Checkout similar projects