Motivator is a lightweight VS Code extension that shows a random, encouraging message while you work. Choose how often messages appear, replace the built-in library with your own, or turn automatic messages off whenever you want.
How to use
- Run Motivator: Start Focus Session for a timed focus period with an optional timed break.
- Install VS Code Motivator from the Extensions view.
- Open VS Code Settings and search for Motivator to choose the message interval, add your own messages, or turn automatic messages on or off.
- Open the Command Palette and run Motivator: Choose Built-In Message Categories to select the kinds of encouragement you want.
- Run Motivator: Manage Message Library to add, edit, delete, preview, import, or export personal messages without editing JSON settings.
- Run Motivator: Show a Message Now whenever you want an immediate boost.
- Run Motivator: Buy Me a Coffee to open the project's support page.
Features
- Organizes 100 default messages into Progress, Focus, Resilience, Craft, and Wellbeing categories.
- Lets you enable built-in categories independently and create named custom message packs.
- Provides an in-editor personal library flow with local, versioned JSON import and export.
- Provides configurable focus sessions with start notifications, a live status-bar countdown, pause, resume, cancel, and optional timed-break controls.
- Tracks completed focus sessions locally and shows streak, seven-day totals, and recent activity.
- Lets you choose the interval between messages, in minutes.
- Lets you turn automatic messages on or off.
- Supports weekday-aware quiet hours without replaying skipped messages.
- Delivers messages as notifications, temporary status-bar text, or silently.
- Lets you supply your own messages in VS Code Settings.
- Includes a command to display a message immediately.
- Includes an optional Buy Me a Coffee reminder, shown at most once every seven days by default.
Configuration
Open VS Code Settings and search for Motivator, or add these settings to your settings.json:
{
"motivator.enabled": true,
"motivator.intervalMinutes": 30,
"motivator.focusSessionMinutes": 25,
"motivator.focusBreakEnabled": true,
"motivator.focusBreakMinutes": 5,
"motivator.focusActionPresentation": "overlay",
"motivator.focusActionDurationSeconds": 3,
"motivator.deliveryMode": "notification",
"motivator.quietHoursEnabled": false,
"motivator.quietHoursStart": "22:00",
"motivator.quietHoursEnd": "08:00",
"motivator.quietHoursWeekdays": [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
"motivator.enabledBuiltInCategories": [
"progress", "focus", "resilience", "craft", "wellbeing"
],
"motivator.customMessagePacks": [
{
"name": "Release day",
"enabled": true,
"messages": ["Ship carefully.", "Celebrate the progress."]
}
],
"motivator.buyMeCoffeeReminderEnabled": true,
"motivator.buyMeCoffeeReminderIntervalDays": 7,
"motivator.messages": [
"Progress beats perfection.",
"Take the problem one piece at a time.",
"Your next commit can be the breakthrough."
]
}
| Setting | Type | Default | Description |
|---|---|---|---|
motivator.enabled |
boolean | true |
Enables automatic motivational messages. |
motivator.intervalMinutes |
number | 30 |
Number of minutes between messages. The minimum is one minute. |
motivator.focusSessionMinutes |
number | 25 |
Length of each focus session in minutes. The minimum is one minute. |
motivator.focusBreakEnabled |
boolean | true |
Starts an optional timed break after focus completion. |
motivator.focusBreakMinutes |
number | 5 |
Length of the optional break in minutes. The minimum is one minute. |
motivator.focusActionPresentation |
string | overlay |
Shows focus actions over the active text editor, with a native notification fallback, or always as a bottom notification. |
motivator.focusActionDurationSeconds |
number | 3 |
Number of seconds an in-editor focus action overlay remains visible, from 1 to 30. |
motivator.deliveryMode |
string | notification |
Delivers messages as notification, statusBar, or silent. Status-bar messages remain visible for 10 seconds. |
motivator.quietHoursEnabled |
boolean | false |
Suppresses automatic messages during quiet hours. The manual Show a Message Now command remains available. |
motivator.quietHoursStart |
string | 22:00 |
Local 24-hour time when quiet hours begin, in HH:mm format. |
motivator.quietHoursEnd |
string | 08:00 |
Local 24-hour time when quiet hours end, in HH:mm format. |
motivator.quietHoursWeekdays |
string array | Every weekday | Days on which quiet hours begin. Overnight schedules continue into the next morning. An empty list disables quiet periods on every day. |
motivator.enabledBuiltInCategories |
string array | All five categories | Built-in categories included in random delivery. An empty list disables built-in messages. |
motivator.customMessagePacks |
object array | [] |
Named packs with name, enabled, and messages fields. Only enabled, valid packs participate in delivery. |
motivator.messages |
string array | Legacy built-in list | Ungrouped custom messages retained for backward compatibility and included alongside enabled categories and packs when customized. |
motivator.buyMeCoffeeReminderEnabled |
boolean | true |
Enables the separate support reminder. Choosing Don't show again disables this setting without affecting Motivator. |
motivator.buyMeCoffeeReminderIntervalDays |
number | 7 |
Minimum number of days between support reminders. |
Commands
| Command | Description |
|---|---|
| Motivator: Show a Message Now | Delivers a random message from the currently enabled categories and packs. |
| Motivator: Choose Built-In Message Categories | Enables or disables the five built-in categories. |
| Motivator: Create Message Pack | Creates an enabled custom pack from pipe-separated messages. |
| Motivator: Rename Message Pack | Renames an existing custom pack. |
| Motivator: Enable or Disable Message Pack | Toggles whether a custom pack participates in delivery. |
| Motivator: Delete Message Pack | Deletes a custom pack after confirmation. |
| Motivator: Manage Message Library | Adds, edits, deletes, and previews personal messages, or imports and exports the complete category-and-pack library as local JSON. |
| Motivator: Start Focus Session | Starts a focus timer using the configured duration. |
| Motivator: Manage Active Focus Session | Opens pause or resume, end, and restart actions for the active timer. Clicking the timer in the status bar runs this command. |
| Motivator: Pause Focus Session | Pauses the active focus or break timer and preserves remaining time. |
| Motivator: Resume Focus Session | Resumes a paused focus or break timer. |
| Motivator: Cancel Focus Session | Cancels the active focus or break timer without a completion prompt. |
| Motivator: Show Focus Insights | Shows the current streak, completed sessions from the last seven days, and five most recent completions. |
| Motivator: Clear Focus History | Permanently clears all locally stored focus-session history after confirmation. |
| Motivator: Buy Me a Coffee | Opens the optional project support page. |
Starting, pausing, resuming, restarting, ending, or completing a focus session displays a temporary, three-line, 90%-opacity banner over the center of the active text editor without opening a tab or taking focus. When no text editor is active (for example, in the terminal or Settings), Motivator falls back to a standard bottom notification. Set motivator.focusActionPresentation to notification to always use bottom notifications, and adjust the overlay time with motivator.focusActionDurationSeconds. Click the live status-bar countdown to pause or resume, end, or restart the timer. Silent mode completes timers without prompts. Sessions remain local to the current VS Code window and are cancelled when the extension stops.
Motivational quotes continue to use VS Code's native bottom notifications when motivator.deliveryMode is notification. VS Code controls the size and layout of those native notification panels.
Focus history is stored only in VS Code's local extension state. Motivator does not transmit it. The current streak counts consecutive local calendar days ending today or yesterday, and weekly totals cover the current day plus the previous six days.
Library imports replace the current enabled-category selection and custom packs after the entire file passes validation. Exported files use a versioned JSON format and remain on the local filesystem unless you choose to share them.
Support the project
If Motivator makes your coding day a little better, you can buy me a coffee. Your support helps keep the extension maintained and improving.
Development
- Open this folder in VS Code.
- Run
npm install. - Press
F5to launch an Extension Development Host. - Make a change and run
npm run compile, or runnpm run watchduring development.
Packaging and publishing
Install the VS Code packaging tool and create a package:
npm install --global @vscode/vsce
vsce package
This produces a .vsix file that you can install locally or upload to the Visual Studio Marketplace.
