tpt-focus

Rust

Unified notification & focus center for Windows and Linux — a Rust core engine with rule-based batching and context-aware muting (e.g. mute Slack when your IDE is fullscreen), a searchable history, and a native tray/popup GUI. Dual-licensed MIT/Apache-2.0.

0 stars0 forks0 watchersApache License 2.0

Languages

Rust96.9%Shell1.6%PowerShell1.5%
README

tpt-focus

Unified Notification & Focus Center — a granular, rule-based notification manager that batches alerts, mutes specific apps based on context (e.g. "mute Slack when my IDE is fullscreen"), and gives you a searchable notification history.

Notifications are chaotic across every platform. Apps spam users, and OS-level "Focus"/"Do Not Disturb" modes are usually far too blunt — they block everything or nothing. tpt-focus sits between apps and your screen as a single, capability-gated notification sink: every alert is ingested, evaluated against your rules, then allowed, muted, or batched.

Platform support

Platformv1 statusHow it works
Windows 10/11SupportedWinRT UserNotificationListener (requires package identity), plus foreground/fullscreen context signals
Linux (X11/Wayland)SupportedBecomes the org.freedesktop.Notifications D-Bus daemon, aggregating the freedesktop notification standard into one history center
ArchonDesign onlyNotifications passed via secure tpt-archon-bridge IPC; rules enforced natively at the kernel IPC level — apps physically cannot bypass the sink

Archon reference: https://github.com/tpt-solutions/tpt-archon

Repository layout

tpt-focus/
├── core/       # Engine: data model, rule pipeline, profiles, storage
├── cli/        # `tpt-focus` command-line tool (rules, profiles, history)
├── tray-app/   # Tray icon + popup UI, platform notification sink host
└── docs/       # Design docs, user guide, Archon design

Building

Requires Rust 1.85+ (pinned in rust-toolchain.toml).

cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all -- --check

Configuration

Rules, focus profiles and schedules live in a TOML file; notification history is kept in a local SQLite database with an FTS5 index for full-text search.

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.