DeskBreak Timer
Reminds you, inside VS Code, to stand up and take a break every X minutes.
Configurable, with pause/resume and a "Snooze 5 min" button right in the
notification.
Settings
Open Settings (Ctrl+,) and search "DeskBreak", or edit your
settings.json directly:
{
"deskbreakTimer.intervalMinutes": 45,
"deskbreakTimer.autoStart": true,
"deskbreakTimer.message": "🧍 Stand up, stretch, drink some water.",
"deskbreakTimer.overdueRenotifyMinutes": 1
}
| Setting |
Default |
What it does |
intervalMinutes |
30 |
Minutes between reminders |
autoStart |
false |
Start automatically when VS Code opens |
message |
"🧍 Stand up..." |
Text shown in the notification |
overdueRenotifyMinutes |
1 |
Re-shows the notification every N minutes if you haven't acknowledged it. 0 disables re-nagging |
Commands
Open the Command Palette (Ctrl+Shift+P) and search "DeskBreak":
| Command |
What it does |
| DeskBreak: Start timer |
Starts (or restarts) the countdown |
| DeskBreak: Stop timer |
Turns it off completely |
| DeskBreak: Pause / Resume |
Pauses without losing remaining time (also works by clicking the status bar) |
| DeskBreak: Change interval (minutes) |
Prompts for a number and updates the setting |
| DeskBreak: Test notification now |
Fires the popup without waiting |
How it behaves when the time's up
When the countdown hits 0, it does not silently restart. It shows a
notification with three actions — "Done, restart", "Snooze 5 min", "Stop
timer" — and if you dismiss or ignore it, the status bar turns to a warning
color and keeps counting into negative time (e.g. +02:15 overdue) until
you acknowledge it. This is intentional: it should be obvious you haven't
actually taken the break yet, instead of the timer quietly starting a fresh
cycle as if you had.
Clicking the status bar while it's in the "overdue" state acknowledges it
and restarts the cycle, same as clicking "Done, restart" in the
notification. Clicking it in any other state toggles pause/resume.
Known limitations
- Changing
intervalMinutes while the timer is running applies starting on
the next full cycle, not the one currently in progress. Run "DeskBreak:
Start timer" again if you want it to apply immediately.
- There's no cap on how long the overdue counter runs — if you step away
for a long meeting and ignore it, it'll just keep counting up
(
+183:42 overdue). Not a bug, just something to be aware of.
- State (running/paused/overdue) is not persisted across VS Code sessions —
it starts stopped every time you open VS Code unless
autoStart is on.
Found a bug or want a feature?
Open an issue on the repository linked on this page, or check
CONTRIBUTING.md in the source if you want to run it locally and submit
a change yourself.