▗▖   █  ▐▌█  ▄ ▗▞▀▚▖     ▗▖  ▗▖▗▞▀▜▌▄▄▄▄  
▐▌   ▀▄▄▞▘█▄▀  ▐▛▀▀▘     ▐▌  ▐▌▝▚▄▟▌█   █ 
▐▌        █ ▀▄ ▝▚▄▄▖     ▐▌  ▐▌     █   █ 
▐▙▄▄▖     █  █            ▝▚▞▘            
HomePages

Making Pomodorini.nvim

I am the type of person who can sit down at their computer to "quickly test something" after seeing a YouTube video, and then 4 hours later, realized they have spiraled into madness, with 17 docs pages open and a new repo with 12 commits.

So this time, instead of getting up from my computer, I thought I should make a little pomodoro timer to keep me in check. I figured, as with all projects, the first thing to do is to set myself some constraints, to stop the scope creeping more and more.

The rules

  • a neovim plugin
  • unobtrusive
  • allow some customization

Each of these things came with their own set of problems, the first of which, how the hell do I make a Neovim plugin? I got digging, and found a lot of help in watching TJ De Vries' "Neovim Plugin from Scratch" series. These videos helped me get a grip on how to interface with Neovim, but I still had more digging to do to learn how to get my ideas into lua.

The concept was fairly simple. I wanted a little pop-up in the corner that showed the timer, maybe a color, and a little line for quirky quotes to remind me to focus.

Now I just needed to find out:

  • how do I make a floating window in neovim
  • how do I make a timer in lua
  • how do I set lines in a buffer
  • how do I customize highlighting in a buffer
  • how do I persist state
  • how do I pass custom options to a plugin

More digging to be had, and I found answers to a lot of my questions. After noodling with it and tweaking the ideas, I got to a point where I can now say I have a v1.0.

Even after only being half done, I have found myself using it a lot, to stop me getting completely tunnel visioned with what I am working on. Hell, I am using it right now to write this, because I know I should probably get off the couch and get into bed.

You can already use it, if you want. All the information is in the readme on the GitHub page.

You have made it to the bottom.


▄▄▄▄  ▗▞▀▜▌█  ▄ ▗▞▀▚▖     ▄▄▄  ▄▄▄  ▄▄▄▄  ▗▞▀▚▖   ■  ▐▌   ▄ ▄▄▄▄    
█ █ █ ▝▚▄▟▌█▄▀  ▐▛▀▀▘    ▀▄▄  █   █ █ █ █ ▐▛▀▀▘▗▄▟▙▄▖▐▌   ▄ █   █   
█   █      █ ▀▄ ▝▚▄▄▖    ▄▄▄▀ ▀▄▄▄▀ █   █ ▝▚▄▄▖  ▐▌  ▐▛▀▚▖█ █   █   
           █  █                                  ▐▌  ▐▌ ▐▌█     ▗▄▖ 
                                                 ▐▌            ▐▌ ▐▌
                                                                ▝▀▜▌
                                                               ▐▙▄▞▘

Copyright (c) 2025 Luke Van. All Rights Reserved.