taskbar-focus
A tiny focus timer for Windows that actually silences your notifications.
Work in 25-minute stretches. While you're focused, Windows goes quiet. When you take a break, everything comes back.
A Windows application. Needs Windows 10 or 11, 64-bit.
Install
With Scoop — recommended, and updates cleanly:
scoop bucket add taskbar-focus https://github.com/yoelrosenthal/taskbar-focus
scoop install taskbar-focus
Later: scoop update taskbar-focus
With Cargo, if you have Rust:
cargo install taskbar-focus
Just the executable: download taskbar-focus.exe from the
latest release and run it. Nothing to configure — put it
wherever you like.
Windows 11 hides new tray icons. If you don't see it after starting, click the
^arrow near the clock and drag taskbar-focus onto the taskbar.
What you get
A timer that sits on your taskbar
A small window showing the countdown, sized to sit on the taskbar out of the box:
▌ Focus 23:16
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
- Drag it anywhere by its middle. Resize it from any edge.
- Make it big and it switches to a stacked layout with a large clock.
- Click it to pause or resume.
- It stays on top so you can always see it, and remembers where you put it.
Turn it on in Settings, or from the tray menu. Reset window size puts it back.
Quiet while you work
When focus starts, Windows Do Not Disturb switches on. When a break starts, it switches off. That's the whole point of the app.
Your priority apps and contacts still get through — it uses exactly the mode Windows' own "Do not disturb" button uses, and never touches your priority list.
A muted bell, because Windows will not draw one
Windows only lights its own muted icon for a change the taskbar made itself, so muting from another program usually leaves no visible trace. This app draws that trace instead — the same crossed-out bell — and it follows Do Not Disturb however it was switched on, including by you.
- a separate bell beside the clock, present only while you are muted
- a bell in the compact timer window, next to the countdown
Both are on by default and can be switched independently under Do Not Disturb
in Settings. Windows 11 files new tray icons behind the ^ arrow — drag the bell
out once and it stays where you put it.
The timer's tray icon is left alone: sixteen pixels hold a progress ring or a bell, not both.
A tray icon that shows progress
| 🔴 Red ring filling up | Focused |
| 🟢 Green ring | On a break |
| ⚪ Grey ring | Nothing running |
| Faded | Paused |
Left-click starts, pauses and resumes. Right-click for everything else.
Shortcuts
| Ctrl+Alt+F | Start, pause or resume |
| Ctrl+Alt+B | Skip to the next interval |
They work from any app, and you can change them in Settings.
How a session flows
Finish a focus session → a short break starts by itself → after a set number of sessions you get a long break instead. Four in Pomodoro 25/5, two in Deep Work 90/15, and you can change it per preset. Breaks end by going idle, so you decide when to start working again.
Don't like that? Turn the automatic sequence off and drive it by hand.
Strict focus makes stopping or skipping a running focus session ask first, so a stray click can't end it.
Presets
Three to start with — Pomodoro 25/5, Deep Work 90/15, Short 15/3 — and you can edit them or add your own with Save as new preset. Switch between them from the tray menu.
From the command line
Handy for shortcuts, stream decks, or scripts. Commands go to the running app, so you never end up with two timers.
taskbar-focus --start # start focusing
taskbar-focus --break # take a break
taskbar-focus --toggle # start / pause / resume
taskbar-focus --skip # next interval
taskbar-focus --stop # stop
taskbar-focus --preset "Deep Work 90/15" # switch preset
taskbar-focus --quit
Good to know
If your antivirus complains. It might. Muting notifications and restarting a
Windows service look, from the outside, like something suspicious — and a
brand-new unsigned program has no reputation yet. Run
taskbar-focus --explain to see precisely what it touches; it's read-only and
works without the app running. Everything it does is logged to
%APPDATA%\taskbar-focus\activity.log. On a work machine, ask IT to allow it
rather than turning off your protection. Or switch off Mute notifications
during focus and use it as a plain timer.
Windows' own muted icon usually will not appear. Notifications really are muted, but the area beside the clock is drawn by Explorer, which caches that state and does not update without being restarted. Restarting the desktop for an icon is unreasonable, so the app draws its own mark instead.
Your settings live in %APPDATA%\taskbar-focus\config.toml — plain text you
can back up, sync or edit by hand.
It handles the awkward cases. Computer sleeps mid-session? Counts the time asleep by default (or ignores it, or pauses — your choice). Changed the system clock? Ignored. Closed the app mid-session? It comes back paused, with the time you were away deducted. Explorer restarted? The tray icon reappears.
Privacy. No network access at all — there's no networking code in it. No telemetry, no accounts, no auto-update. It never needs administrator rights.
Uninstall
scoop uninstall taskbar-focus, or cargo uninstall taskbar-focus, or just
delete the .exe.
Either way, settings stay in %APPDATA%\taskbar-focus until you delete that
folder. Do Not Disturb is switched back when the app exits.
For developers
cargo build --release # target\release\taskbar-focus.exe
cargo test
cargo install --path . # install your local build
Merging a pull request into main publishes a release: GitHub Actions bumps the
version, writes the CHANGELOG.md entry, tags the commit, builds, attaches a
build provenance attestation, updates the Scoop manifest and publishes to
crates.io. How big the bump is comes from a release:major, release:minor or
release:patch label on the pull request; release:skip merges without
releasing.
Pushing a tag by hand (git tag v0.2.0 && git push origin v0.2.0) still works,
for re-cutting a release. Either way the tag must match the version in
Cargo.toml — the workflow checks this first and stops if it doesn't.
Publishing to crates.io needs a CARGO_REGISTRY_TOKEN repository secret (from
crates.io/settings/tokens). Without it that
step is skipped, and everything else still runs.
The interesting part is src/os/dnd/ — Windows has no supported
API for setting Do Not Disturb, so that module explains what it does instead,
and why.
This repository doubles as its own Scoop bucket: the manifest in
bucket/ is updated automatically on each release.
License
MIT — see LICENSE.