A little focus. A little rest.
A project by MiuBitz.
A quiet Windows Pomodoro app built with Tauri 2 and Rust. Choose one task, start the timer, and let focus sessions and breaks follow a simple rhythm.
Download for Windows · How to use · Build from source
- Configurable focus sessions, breaks, and cycle count.
- Pause, resume, reset, and a clear completion message.
- Single-click tray opening and optional hidden startup with Windows.
- Independent notification and sound preferences.
- Live Light/Dark and Blue, Violet, Sage, or Amber previews.
- Local SVG icons and bundled Inter typography, matching DailyJournal's style.
- Rust owns the countdown, even while the window is hidden.
- Offline use with local settings; no account or cloud sync.
- Download
PomodoroTimer.exeor usedist/PomodoroTimer.exefrom this repository. - Put it in a folder you want to keep, then run it. Exit an older build from the tray before replacing it.
- Open Settings to choose your routine and appearance.
The app is for Windows x64 and requires Microsoft Edge WebView2 Runtime. Node.js is not needed to use or build the app.
- Choose your focus cycle count.
- Click Start focus. Defaults are 25 minutes of focus and 5 minutes of rest.
- Use Pause and Resume when you need to step away.
- Breaks and the next focus session start automatically.
- After the final break, the completion message stays visible. Choose Start again for another run or Reset to return to ready.
Each cycle includes a focus session and a break, including the final cycle. Reset ends the current run.
Closing the window keeps the timer running when Close to system tray is enabled. Click the tray icon once to reopen; right-click for Open Pomodoro and Exit. Exit, or closing with close-to-tray disabled, ends the run. Sessions are not restored after quitting.
| Setting | Behavior |
|---|---|
| Focus minutes | 1–180 minutes; default 25. |
| Break minutes | 1–60 minutes; default 5. |
| Cycles | 1–99 focus/break cycles; default 4. |
| Theme and color | Preview immediately. Save keeps the choice; Cancel, close, or Escape restores the saved look. |
| Start with Windows | Launch hidden to the tray; off by default for a fresh installation. |
| Desktop notifications | Announce phase changes and completion. Windows notification settings may suppress alerts. |
| Play a sound | Controlled separately from desktop notifications. |
| Close to system tray | Keep the timer running when the window closes. |
Duration and cycle edits apply to the next run. An active run keeps its original values.
Portable notifications use Windows' built-in PowerShell notification host, which may appear as the sender. Keep the executable in a stable location for startup; re-save Settings if you move it.
Preferences are stored at %APPDATA%\PomodoroTimer\settings.json. Valid settings from the previous C# version are accepted.
Monotonic deadlines prevent changes to the system clock from shifting a session. Delayed ticks catch up from scheduled boundaries rather than extending the run; only the latest transition is announced. Pausing preserves remaining time.
Requires Rust with the Windows MSVC toolchain, Microsoft C++ Build Tools with the Desktop development with C++ workload and Windows SDK, and WebView2 to run the app.
build_windows.batThe script builds locked dependencies and copies the release executable to dist/PomodoroTimer.exe. It respects CARGO_TARGET_DIR when set. The first build downloads Rust dependencies.
Development and checks:
cargo run --locked
cargo fmt --check
cargo test --lockedOptional browser checks require Node.js, Playwright, and Microsoft Edge:
node tests/frontend.cjs
node tests/native.cjs dist/PomodoroTimer.exe
node tests/website.cjsInstall Playwright locally or set POMODORO_NODE_MODULES to a directory containing it. Native checks use isolated settings under target. The website check serves its own temporary local preview.
The Windows GitHub Actions workflow checks formatting, runs Rust tests, builds the executable, and uploads a downloadable build artifact. To create an installer, compile Installer/PomodoroTimer.iss with Inno Setup after building.
src/ Rust timer, settings, startup, and tray
ui/ App interface, local SVGs, and Inter font
Assets/ Windows application icon
capabilities/ Tauri permissions
dist/ Final PomodoroTimer.exe, included for direct downloads
docs/ Project webpage adapted from DailyJournal
tests/ Interface, native app, and website checks
.github/ Windows build workflow
The docs/ folder is copied from DailyJournal's website, with Pomodoro content, screenshots, and the same Font Awesome 6.5.2 CDN icons as DailyJournal. It needs no install or build step. Open docs/index.html or preview it locally:
python -m http.server 8000 --directory docsPublishing checklist:
- Use the MiuBitz/PomodoroTimer repository. Download and source links point here.
- Push this folder's source and
dist/PomodoroTimer.exeto themainbranch. If you choose a different owner or repository name, update links in this README anddocs/index.html. - In Settings → Pages, choose Deploy from a branch, main, and /docs. See GitHub's publishing-source guide.
- For a tagged release, attach
dist/PomodoroTimer.exeas the Windows download.
The repository and website are prepared locally. They have not been uploaded or published by this task.
See THIRD_PARTY_NOTICES.md. Inter's SIL Open Font License is included alongside the app and website fonts.

