Gentle reminders to rest your eyes — built for Linux.
Desktop companion that nudges you away from the screen with soft overlays, following the 20-20-20 rule. Runs quietly in the tray, respects your focus, and never gets in the way.
- 👁️ 20-20-20 rule — short breaks every 20 minutes, long breaks every hour
- 🪟 Soft overlay — translucent break window with a circular countdown, not a screen takeover
- 💤 Smart idle detection — timer auto-resets when you step away, no wasted breaks
- 🔕 Snooze & Skip — one click to postpone or skip when you're in the zone
- 📊 Activity stats — track work time, completed breaks, and skip rate over 7 days
- 🌗 Light & dark themes — follows your system appearance
- 🔔 Native notifications — D-Bus integration with action buttons as a fallback
- 🎨 Tray-first UX — no main window, just a quiet icon in your system tray
- 🦀 Tiny footprint — under 50 MB RAM, 0% CPU when idle
Blinkly is a Linux-first application, built and tested on modern desktop environments.
| Distribution | Status |
|---|---|
| Ubuntu 22.04 / 24.04 LTS | ✅ Supported |
| Fedora 39+ | ✅ Supported |
| Arch Linux (rolling) | ✅ Supported |
| Debian 12+ | ✅ Supported |
| openSUSE Tumbleweed | ✅ Should work |
| DE | Wayland | X11 |
|---|---|---|
| GNOME 45+ | ✅ Primary target | ✅ Supported |
| KDE Plasma 6+ | ✅ Supported | ✅ Supported |
| Other DEs with system tray | ✅ Should work |
- Wayland — primary target, uses
ext_idle_notify_v1for idle detection - X11 — full fallback support via
XScreenSaverQueryInfo
| Component | Minimum |
|---|---|
| Kernel | Linux 5.15+ |
| glibc | 2.31+ |
| RAM | 128 MB free |
| Disk | 50 MB |
| Runtime | libwebkit2gtk-4.1, libgtk-3, D-Bus session bus |
macOS and Windows are not supported in v1.0 — they are planned for v2.0.
Download all Linux builds from the GitHub Releases page.
| Your system | What to download | Notes |
|---|---|---|
| Ubuntu / Debian | .deb |
Native package install |
| Fedora | .rpm |
Native package install |
| Not sure / want auto-updates | AppImage |
Recommended fallback |
AppImage is the easiest portable build and the only Linux format that supports Blinkly's in-place auto-updates.
chmod +x blinkly_0.1.0_amd64.AppImage
./blinkly_0.1.0_amd64.AppImageIf FUSE is unavailable on your system, use the extraction fallback:
./blinkly_0.1.0_amd64.AppImage --appimage-extract-and-runsudo dpkg -i blinkly_0.1.0_amd64.deb
sudo apt-get install -fsudo dnf install ./blinkly-0.1.0-1.x86_64.rpmAppImageusers get automatic in-place updates from within Blinkly..deband.rpmusers get a native notification plus a download prompt in Settings that opens the latest release page.
- Launch Blinkly — it lives in your system tray, not as a window.
- Right-click the tray icon for the menu: pause, break now, settings, stats, quit.
- Every 20 minutes, a soft overlay appears with a 20-second countdown.
- Click Skip or Snooze if you need to — Blinkly never forces anything.
- Configure intervals, sound, theme, and autostart from the Settings panel.
The tray icon changes color to reflect state:
- 🟢 Green eye — working, timer is ticking
- 🟡 Yellow eye — on break
- ⚪ Gray eye — paused
Blinkly is built with Tauri 2, Rust, React 19, TypeScript, and Tailwind CSS.
- Rust (stable) — rustup.rs
- Node.js 20+ and npm
- Linux build dependencies:
libwebkit2gtk-4.1-dev,libgtk-3-dev,libayatana-appindicator3-dev,librsvg2-dev
npm install
npm run tauri devnpm ci
npm run tauri build -- --bundles appimage,deb,rpmArtifacts end up in src-tauri/target/release/bundle/.
If you want updater signatures locally, export your signing key first:
export TAURI_SIGNING_PRIVATE_KEY="$(cat "$HOME/.tauri/blinkly.key")"
npm run tauri build -- --bundles appimage,deb,rpmOn newer Fedora-like systems, AppImage bundling may also need NO_STRIP=1 because the cached linuxdeploy tool can choke on modern .relr.dyn sections:
NO_STRIP=1 npm run tauri build -- --bundles appimage,deb,rpmcargo clippy -- -D warnings
npm run build
npm run lint
npm run typecheck
cargo test --all-targetsBlinkly follows a three-layer architecture with strict separation of concerns:
┌──────────────────────────────────┐
│ Rust Backend (Tauri 2) │ Scheduler FSM · Activity Tracker
│ │ Notifications · Config · Stats
└──────────────┬───────────────────┘
│ Tauri IPC
┌──────────────▼───────────────────┐
│ React + TypeScript + Zustand │ Overlay · Settings · Stats
└──────────────┬───────────────────┘
│
┌──────────────▼───────────────────┐
│ SQLite │ config · breaks · sessions
└──────────────────────────────────┘
See .claude/rules/architecture.md for the full design document.
MIT — see LICENSE for details.
Made with 🦀 and care for tired eyes.