So idea is to let you continue for some time and not be intrusive and not change anything (OK, anything important at all). Suggestions like chaning fonts or graying the screen are just not that.
Besides color, what else could be done ? Here is some brainstorming from me:
1. THe more you work, the slower are keys rendered, just as when computer slows down. This allows for some continuation but eventually you will stop to let computer (and yourself) rest.
2. The more your work, the more random, very short, beep sound is inserted on key presses. The same benefits as above unless you turn off the volume in which case the good old BIOS beep could do. This may deconcentrate a bit tho.
3. The more you type the more mouse starts moving on its own. Eventually it just flies around like crazy (until you use it, then when you don't it starts again). Yes you can still continue working like nothing happens.
4. The windows border colors start changing, the more you work, the more frequent it gets. It can be less distracting then mouse flying around.
All of above wont change a thing in your workflow which is important here as you want to allow some continuation and you don't actually want to change anything for user (screen size, font size, brightness changes, etc. are all intrusive and can change word ordering, syntax coloring etc. something you may depend a lot upon ( I do ).
That is not the point here tho. The point was to reinvent it with something more subtle :)
I don't see why you would interrupt that, it takes awhile to get zoned back in.
Go walk around after you have a good session. This seems really annoying.
I currently use Time Out on Mac and every X minutes it slowly greys out the entire screen. The hardest scenario is if I'm in "the zone" and super focused on fixing a bug, etc. and the notification pops up. I end up feeling antagonistic towards the break reminder.
This looks like it's a good balance.
Edit: But I really like the idea of this VS Code extension and will definitely try out. As I type this, I just got lost in editor for like 2 hours and a VS Code extension like this would have helped.
[0] - https://palerdot.in/remindoro/ [1] - https://github.com/palerdot/remindoro
I also question the wisdom of breaks at specific intervals. Do I really want to get knocked out of flow because a timer expired? I take my breaks when I complete a task. Sometimes that is after 10 minutes, sometimes it is after 2 hours.
If I were in your position, I'd look for a different metric than just time. Maybe measure the rate of activity across all running apps, and provide a notice of, "Your typing speed has dropped, and you are taking more time between mouse movements - if you are slowing down, maybe it is time for a break?"