Take a real break. See your day without turning it into a score.
Unfocus is a local-first desktop app that reminds you to look away from the screen and gives you a calm, observe-only picture of how your day went. Breaks cover every monitor, reflection stays on your device, and there are no streaks, badges, accounts, or mascots competing for your attention.
Download · Install guide · Changelog · Report a bug · Request a feature
A screen-break reminder should help you look away, not give you another interface to watch. When a break is due, Unfocus places the same calm, static landscape across every monitor and asks you to focus on something far away. As the break ends, a warm amber light signals that it is time to return.
The dashboard then reflects the rhythm of your day using presence and break outcomes. It does not grade your productivity, gamify consistency, or use that history to control the reminder timer.
- Covers every monitor with a synchronized full-screen break
- Uses a bundled, first-party landscape that stays still throughout the break
- Selects one cool-biased palette from local device time and holds it across every display; amber light signals that the break is nearly complete
- Defaults to a 20-minute work interval and a 20-second break, configurable from 1–120 minutes and 3–30 seconds
- Supports a fixed 30-minute pause, immediate breaks, break previews, and early exit with Escape or End break
- Uses idle and fullscreen signals where supported to avoid interrupting you while you are already away or presenting
- Keeps the timer running if a platform probe is unavailable or fails
- Your day shows a rolling 24-hour view of active and away time
- History shows the newest 90 local days in a compact activity calendar, with hourly activity and break outcomes for a selected day
- Break outcomes distinguish shown breaks, natural rest, manual rest, and breaks held for fullscreen
- Presence comes only from keyboard and mouse idle signals; Unfocus never records which keys you press
- Reflection is observe-only: it never pauses, skips, or advances the timer
- No account, telemetry, cloud dependency, or packaged-app runtime network calls
- Settings, activity history, and break outcomes stay on your device
- The scene and typeface are bundled with the app; there are no asset or font downloads
- Developer mode exposes platform signals, connected displays, and probe errors when you need to troubleshoot
Selecting the linked author name is the only action that asks the operating
system to open a web address (https://abhik.ai) in your default browser.
Unfocus itself does not make that request over the network.
Unfocus is beta software. Linux X11 is the only qualified platform today; macOS and Windows builds are available for early testing.
The preferred Linux installation is the signed public APT repository:
curl -fsSL https://apt.abhik.ai/public-key.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/unfocus-archive-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/unfocus-archive-keyring.gpg] https://apt.abhik.ai beta main' \
| sudo tee /etc/apt/sources.list.d/unfocus-beta.list
sudo apt update
sudo apt install unfocusConfirm that echo $XDG_SESSION_TYPE prints x11. On Ubuntu GNOME, choose
Ubuntu on Xorg at login if necessary and enable the Ubuntu AppIndicators
extension if the tray icon is missing.
Existing alpha installs stay on the frozen alpha channel. To migrate, replace the alpha source with the beta source before upgrading; the exact commands are in the install guide.
Install the beta from the public Homebrew tap:
brew install --cask abhiksark/unfocus/unfocus@betaExisting Homebrew alpha installs also stay pinned. Migrate without --zap so
local application data is preserved:
brew uninstall --cask abhiksark/unfocus/unfocus@alpha
brew install --cask abhiksark/unfocus/unfocus@betaThe macOS 11+ build is ad-hoc signed but not Developer ID-signed or notarized. On first launch, right-click Unfocus and select Open. While running, Unfocus is intentionally available from the menu-bar icon without a Dock icon or application menu.
GitHub Releases provides
.deb, .rpm, AppImage, Windows, and macOS packages. Verify downloaded assets
against SHA256SUMS before installing them. The
full install guide covers package selection, verification,
first launch, updates, troubleshooting, and uninstalling.
Platform labels describe tested behavior, not just whether a package can be built.
| Platform | Status | Notes |
|---|---|---|
| Linux X11 | Qualified | Synchronized multi-monitor overlays, idle detection, fullscreen detection, and AppIndicator tray support. Ubuntu is the primary test environment. |
| macOS 11+ | Preview | Idle and fullscreen probes work interactively. Physical multi-monitor acceptance is not complete. |
| Windows x64 | Early build | Idle and fullscreen probes are implemented. Interactive multi-monitor qualification is pending. |
| Linux Wayland | Unsupported | Default packages do not provide Wayland probes. |
APT repository metadata is signed with the archive OpenPGP key; the beta packages themselves remain application-unsigned. The macOS app is ad-hoc signed but not Developer ID-signed or notarized, and Windows installers are not code-signed, so platform warnings may appear. Unfocus does not auto-update; install updates through APT, Homebrew, or a newer release package.
- Open the dashboard and choose your work interval and break duration.
- Leave Unfocus running in the tray. You can pause reminders, resume them, take a break immediately, preview the overlay, or reopen the dashboard from the tray menu.
- Open Your day for the current rhythm or History for earlier local activity and break outcomes.
Closing the dashboard normally leaves the reminder running in the tray. Starting Unfocus again reveals the existing dashboard instead of starting a second tray or timer. If tray setup fails, the dashboard reports the problem and closing it exits the app so no unreachable process is left running.
Install the Tauri prerequisites
for your platform, Bun 1.3.5, and Rust 1.98.0. The repository pins both
toolchains in .bun-version and rust-toolchain.toml. The app is built with
Tauri 2, Rust, SvelteKit 2, and Svelte 5.
git clone https://github.com/abhiksark/unfocus.git
cd unfocus
bun install --frozen-lockfile
bun run tauri devBefore submitting application changes, run the local frontend and Rust gates:
bun run test
bun run check
bun run build
cargo fmt --check --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets --all-features --locked -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml --all-targets --all-features --lockedVersion, dependency, release, and generated-asset changes have additional
named checks in package.json.
Bug reports and focused pull requests are welcome. Normal development targets
dev; create a short-lived branch from current dev and open the pull request
back into dev. The protected main branch is reserved for releasable
promotions.
Please report suspected vulnerabilities privately through the security policy, not in a public issue.
- Unfocus source code and first-party break-scene artwork: MIT
- Vendored Newsreader font: SIL Open Font License 1.1
- Dependency licenses and notices: THIRD_PARTY_NOTICES.txt

