{"id":50108746,"url":"https://github.com/andrestubbe/fastnotification","last_synced_at":"2026-05-23T12:02:37.469Z","repository":{"id":352084795,"uuid":"1213784301","full_name":"andrestubbe/FastNotification","owner":"andrestubbe","description":"Native Java notifications for Windows 11. Replaces ugly SystemTray with real OS Toasts — custom icons, action buttons, progress bars. No Java coffee cup. JNI-powered.","archived":false,"fork":false,"pushed_at":"2026-04-17T20:16:51.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T21:09:55.604Z","etag":null,"topics":["cross-platform","desktop","java","java-ui","jni","native","notifications","system-tray-alternative","windows-toast","winrt"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrestubbe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T18:58:35.000Z","updated_at":"2026-04-17T20:16:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrestubbe/FastNotification","commit_stats":null,"previous_names":["andrestubbe/fastnotification"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/andrestubbe/FastNotification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastNotification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastNotification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastNotification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastNotification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrestubbe","download_url":"https://codeload.github.com/andrestubbe/FastNotification/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastNotification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33394672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","desktop","java","java-ui","jni","native","notifications","system-tray-alternative","windows-toast","winrt"],"created_at":"2026-05-23T12:02:32.299Z","updated_at":"2026-05-23T12:02:37.449Z","avatar_url":"https://github.com/andrestubbe.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FastNotification — Native Windows toast notifications for Java\r [ALPHA] - v0.1.0\n**⚡ Ultra-fast native Java notifications — Replace ugly Java SystemTray with real OS-native Toasts**\r\n\r\n[![Build](https://img.shields.io/badge/build-passing-brightgreen.svg)]()\r\n[![Java](https://img.shields.io/badge/Java-17+-blue.svg)](https://www.java.com)\r\n[![Platform](https://img.shields.io/badge/Platform-Windows%2010%2B-lightgrey.svg)]()\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![JitPack](https://jitpack.io/v/andrestubbe/FastNotification.svg)](https://jitpack.io/#andrestubbe/FastNotification)\r\n[![GitHub stars](https://img.shields.io/github/stars/andrestubbe/FastNotification.svg)](https://github.com/andrestubbe/FastNotification/stargazers)\r\n\r\n```java\r\n// Quick Start — Native Windows 11 Toast\r\nFastNotifications.notify(\"Build finished\", \"FastImage compiled in 42ms\");\r\n\r\n// Full control — Custom icon, action buttons, urgency\r\nFastNotifications.builder()\r\n    .title(\"Download complete\")\r\n    .message(\"File saved to /downloads\")\r\n    .icon(\"fastjava.png\")           // Your app icon, not Java coffee cup\r\n    .urgency(Urgency.HIGH)\r\n    .action(\"Open\", this::openFile)\r\n    .action(\"Dismiss\", null)\r\n    .timeout(Duration.seconds(5))\r\n    .show();\r\n```\r\n\r\n**FastNotifications** is a **high-performance native notification library for Java** that replaces the ugly, limited `java.awt.SystemTray` with **real OS-native notifications**. Built for **Windows 11 native WinRT Toasts** with full customization.\r\n\r\n\u003e **Powered by FastCore** — Part of the FastJava ecosystem for native JVM acceleration.\r\n\r\n**Keywords:** java notifications, windows toast java, java system tray alternative, native notifications java, winrt toast java, jni notifications, cross platform notifications java, java desktop notifications, java notification library\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n- [Why FastNotifications?](#why-fastnotifications)\r\n- [Key Features](#key-features)\r\n- [FastNotifications vs SystemTray](#fastnotifications-vs-systemtray)\r\n- [Installation](#installation)\r\n- [Quick Start](#quick-start)\r\n- [API Reference](#api-reference)\r\n- [Integrations](#integrations)\r\n- [Build from Source](#build-from-source)\r\n- [Platform Support](#platform-support)\r\n- [Project Structure](#project-structure)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## Why FastNotifications?\r\n\r\n`java.awt.SystemTray` notifications are:\r\n- **Ugly** — Always shows the Java coffee cup icon\r\n- **Limited** — No action buttons, no progress bars, no priorities\r\n- **Deprecated** — Uses old balloon API on Windows\r\n- **Inconsistent** — Looks different on every OS\r\n\r\n**Plus:** Windows 10/11 requires app registration for modern notifications — FastNotifications handles this with **3 integration levels**:\r\n\r\n| Level | Effort | Result |\r\n|-------|--------|--------|\r\n| **Level 1** (5 min) | Build DLL → Run | Basic notifications (Balloon) |\r\n| **Level 2** (2 hrs) | + Sparse Package | Full WinRT Toasts (like Teams) |\r\n| **Level 3** (3-10 days) | + MSIX + Store | Store distribution |\r\n\r\nFastNotifications solves this with:\r\n- **Flexible integration** — Choose your setup level\r\n- **Native OS integration** — Real Windows 11 WinRT Toasts (Level 2+)\r\n- **Custom app icons** — Your logo, not Java's\r\n- **Rich features** — Action buttons, progress bars, urgency levels (Level 2+)\r\n- **JNI-powered** — Direct OS API access, zero Java UI overhead\r\n\r\n---\r\n\r\n## Key Features\r\n\r\n- **Windows 11 Native Toasts** — WinRT XML-based with full customization\r\n- **Custom App Icons** — Replace the ugly Java coffee cup\r\n- **Action Buttons** — \"Open\", \"Dismiss\", custom callbacks\r\n- **Progress Notifications** — Download/install progress bars\r\n- **Urgency Levels** — Low, Normal, High, Critical\r\n- **Zero Dependencies** — Pure JNI, no JavaFX, no Swing, no AWT\r\n\r\n---\r\n\r\n## FastNotifications vs SystemTray\r\n\r\n| Feature | SystemTray | FastNotifications |\r\n|---------|------------|-------------------|\r\n| Icon | ❌ Java coffee cup | ✅ Your custom icon |\r\n| Windows 11 style | ❌ Deprecated balloon | ✅ Native WinRT Toast |\r\n| Action buttons | ❌ None | ✅ Custom buttons |\r\n| Progress bars | ❌ None | ✅ Native progress |\r\n| Urgency/Priority | ❌ None | ✅ High, Critical |\r\n\r\n---\r\n\r\n## Installation\r\n\r\n### Maven\r\n\r\n```xml\r\n\u003crepositories\u003e\r\n    \u003crepository\u003e\r\n        \u003cid\u003ejitpack.io\u003c/id\u003e\r\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\r\n    \u003c/repository\u003e\r\n\u003c/repositories\u003e\r\n\r\n\u003cdependency\u003e\r\n    \u003cgroupId\u003ecom.github.andrestubbe\u003c/groupId\u003e\r\n    \u003cartifactId\u003efastnotification\u003c/artifactId\u003e\r\n    \u003cversion\u003ev1.0.0\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n### Gradle\r\n\r\n```groovy\r\nrepositories {\r\n    maven { url 'https://jitpack.io' }\r\n}\r\n\r\ndependencies {\r\n    implementation 'com.github.andrestubbe:fastnotification:v1.0.0'\r\n}\r\n```\r\n\r\n---\r\n\r\n## Quick Start — Choose Your Setup Level\r\n\r\nFastNotification offers **3 integration levels** for different needs:\r\n\r\n| Level | Setup Time | Features | Best For |\r\n|-------|-----------|----------|----------|\r\n| **Level 1** | 5 minutes | Basic notifications (Balloon style) | Testing, internal tools |\r\n| **Level 2** | 2 hours | Full Windows 11 Toasts with actions | Production apps |\r\n| **Level 3** | 3-10 days | Microsoft Store integration | Store distribution |\r\n\r\n### Level 1 — Quick Test (5 min)\r\n\r\n```bash\r\n# 1. Build native DLL\r [ALPHA] - v0.1.0\ncompile.bat\r\n\r\n# 2. Compile Java\r [ALPHA] - v0.1.0\nmvn compile\r\n\r\n# 3. Run demo\r [ALPHA] - v0.1.0\njava --% -cp \"target\\classes\" -Djava.library.path=\"native\" --enable-native-access=ALL-UNNAMED fastnotifications.Demo\r\n```\r\n\r\n```java\r\n// Simple code\r\nFastNotifications.notify(\"Hello\", \"From Java!\");\r\n```\r\n\r\n\u003e ⚠️ **Note:** Windows 10/11 may hide balloon notifications. This is Microsoft's design, not a bug. See [Level 2](#level-2--production-setup) for full toasts.\r\n\r\n### Level 2 — Production Setup (2 hours)\r\n\r\nFor **modern WinRT Toasts** (like Outlook/Teams):\r\n\r\n1. **Create identity package** (one-time setup)\r\n   ```powershell\r\n   cd installer\r\n   .\\create-package.ps1 -SelfSigned\r\n   .\\register-sparse.ps1 -InstallPath \"C:\\Program Files\\YourApp\"\r\n   ```\r\n\r\n2. **Build WinRT DLL**\r\n   ```bash\r\n   # Edit compile.bat: uncomment WinRT lines\r\n   compile.bat\r\n   ```\r\n\r\n3. **Use full features**\r\n   ```java\r\n   FastNotifications.builder()\r\n       .title(\"Download complete\")\r\n       .message(\"Ready to install\")\r\n       .icon(\"app.png\")\r\n       .action(\"Install\", this::install)\r\n       .action(\"Later\", null)\r\n       .show();\r\n   ```\r\n\r\n📖 **Details:** See `installer/WINDOWS_NOTIFICATION_GUIDE.md`\r\n\r\n### Level 3 — Microsoft Store\r\n\r\nFor Store distribution with auto-updates:\r\n\r\n- Full MSIX packaging required\r\n- Code-signing certificate needed\r\n- Store submission process\r\n\r\n📖 **Details:** See Microsoft Store developer documentation\r\n\r\n---\r\n\r\n## Basic Usage Examples\r\n\r\n### Simple Notification\r\n\r\n```java\r\nimport fastnotifications.FastNotifications;\r\n\r\n// Level 1 \u0026 2: Works with both DLLs\r\nFastNotifications.notify(\"Build finished\", \"Completed in 42ms\");\r\n```\r\n\r\n### Tagged Notifications (Updates Existing)\r\n\r\n```java\r\n// Show progress that updates in place\r\nFastNotifications.notifyTagged(\"download-1\", \"Downloading\", \"50%...\");\r\nThread.sleep(2000);\r\nFastNotifications.notifyTagged(\"download-1\", \"Downloading\", \"100% - Done!\");\r\n```\r\n\r\n### Builder API (Level 2+)\r\n\r\n```java\r\nFastNotifications.builder()\r\n    .title(\"Task Completed\")\r\n    .message(\"Backup finished successfully\")\r\n    .icon(\"myapp.png\")\r\n    .urgency(Urgency.NORMAL)\r\n    .action(\"View Results\", () -\u003e openResults())\r\n    .action(\"Close\", null)\r\n    .timeout(Duration.seconds(10))\r\n    .show();\r\n```\r\n\r\n### Progress Notification (Level 2+)\r\n\r\n```java\r\nProgressNotification progress = FastNotifications.progress(\r\n    \"Installing\", \r\n    \"FastCore 1.2.0\"\r\n);\r\n\r\nfor (int i = 0; i \u003c= 100; i += 10) {\r\n    progress.update(i);\r\n    Thread.sleep(100);\r\n}\r\n\r\nprogress.complete(\"Installation finished\");\r\n```\r\n\r\n---\r\n\r\n## API Reference\r\n\r\n### Core Methods\r\n\r\n| Method | Description | Status |\r\n|--------|-------------|--------|\r\n| `notify(title, message)` | Simple toast notification | ✅ Working |\r\n| `notify(title, message, icon)` | Toast with custom icon | ✅ Working |\r\n| `notifyTagged(tag, title, message)` | Tagged notification (replaces existing) | ✅ Working |\r\n| `notifyTagged(tag, title, message, icon)` | Tagged with icon | ✅ Working |\r\n| `builder()` | Create advanced notification | ✅ Working |\r\n| `progress(title, message)` | Progress notification | 🚧 Planned |\r\n\r\n### NotificationBuilder\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `tag(String id)` | Unique identifier (replaces existing with same tag) |\r\n| `title(String text)` | Notification title |\r\n| `message(String text)` | Body text |\r\n| `icon(String path)` | PNG icon path (replaces Java coffee cup) |\r\n| `urgency(Urgency)` | LOW, NORMAL, HIGH, CRITICAL |\r\n| `timeout(Duration)` | Auto-dismiss timeout |\r\n| `action(String, Runnable)` | Add button with callback |\r\n| `show()` | Display notification |\r\n\r\n### Urgency Levels\r\n\r\n| Level | Windows Behavior |\r\n|-------|-----------------|\r\n| `LOW` | Quiet notification, no sound |\r\n| `NORMAL` | Standard toast |\r\n| `HIGH` | Persistent, shows on lock screen |\r\n| `CRITICAL` | Forces immediate attention |\r\n\r\n---\r\n\r\n## Integrations\r\n\r\n### FastRobot Debug Mode\r\n\r\nEnable real-time toast notifications for bot actions:\r\n\r\n```java\r\nimport fastnotifications.integrations.FastRobotDebug;\r\n\r\n// Enable debug notifications\r\nFastRobotDebug.enable();\r\n\r\n// Now all FastRobot actions show toast:\r\n// - \"🖱️ Click #1 at (500, 300)\"\r\n// - \"⌨️ Key #5: Pressed: ENTER\"\r\n// - \"📸 Screen Capture: 1920x1080 in 12ms\"\r\n\r\n// Show session summary\r\nFastRobotDebug.showSummary();\r\n```\r\n\r\nSee [FastRobotDebug.java](src/main/java/fastnotifications/integrations/FastRobotDebug.java) for full API.\r\n\r\n---\r\n\r\n## Build from Source\r\n\r\nSee [COMPILE.md](COMPILE.md) for detailed build instructions.\r\n\r\n---\r\n\r\n## Platform Support\r\n\r\n| Platform | Version | Status | Notes |\r\n|----------|---------|--------|-------|\r\n| Windows 11 | v1.0 | ✅ Full support | WinRT Toast XML, all features |\r\n| Windows 10 | v1.0 | ⚠️ Partial | Requires v1903+, some features limited |\r\n| macOS | — | ❌ Not planned | Use native macOS notifications |\r\n| Linux | — | ❌ Not planned | Use DBus directly |\r\n\r\n**Windows-only by design** — We focus on maximum performance on the most common platform.\r\n\r\n---\r\n\r\n## Architecture\r\n\r\n```\r\nfastnotifications (Java API)\r\n    ↓ JNI\r\nnative/FastNotification.dll (C++/WinRT)\r\n    ↓ Windows Runtime\r\nWindows.UI.Notifications (WinRT)\r\n    ↓\r\nWindows 11 Notification Center\r\n```\r\n\r\n**Key Technologies:**\r\n- **JNI** — Java-to-native bridge\r\n- **WinRT** — Windows Runtime API for Toasts\r\n- **FastCore** — Native library loading (optional dependency)\r\n\r\n---\r\n\r\n## Project Structure\r\n\r\n```\r\nFastNotification/\r\n├── native/\r\n│   ├── FastNotification.cpp         # WinRT implementation (Level 2+)\r\n│   ├── FastNotification_COM.cpp     # COM implementation (Level 1)\r\n│   ├── FastNotification.h           # C++ header\r\n│   ├── FastNotification.def         # JNI exports (REQUIRED!)\r\n│   └── FastNotification.dll         # Built native library\r\n├── src/main/java/fastnotifications/\r\n│   ├── FastNotifications.java       # Main API\r\n│   ├── ProgressNotification.java    # Progress toasts\r\n│   ├── Demo.java                    # Example usage\r\n│   └── integrations/\r\n│       └── FastRobotDebug.java      # FastRobot integration\r\n├── installer/\r\n│   ├── WINDOWS_NOTIFICATION_GUIDE.md  # Windows architecture guide\r\n│   ├── sparse-manifest.xml            # Sparse package template\r\n│   ├── create-package.ps1             # Package builder script\r\n│   ├── register-sparse.ps1            # Registration script\r\n│   ├── register-app.reg               # Registry entries\r\n│   └── install.ps1                    # Setup automation\r\n├── compile.bat                      # Native build script\r\n├── GETTING_STARTED.md               # Quick start guide\r\n├── REACTION.md                      # Developer notes\r\n├── pom.xml                          # Maven config\r\n└── README.md                        # This file\r\n```\r\n\r\n---\r\n\r\n## Documentation\r\n\r\n| Document | Purpose |\r\n|----------|---------|\r\n| [`GETTING_STARTED.md`](GETTING_STARTED.md) | Quick setup guide with 3 integration levels |\r\n| [`installer/WINDOWS_NOTIFICATION_GUIDE.md`](installer/WINDOWS_NOTIFICATION_GUIDE.md) | Windows notification architecture \u0026 decision guide |\r\n\r\n**Quick Navigation:**\r\n- Just want to test? → [Level 1 in GETTING_STARTED.md](GETTING_STARTED.md#level-1--quick-test-5-min)\r\n- Building for production? → [Level 2 in GETTING_STARTED.md](GETTING_STARTED.md#level-2--production-setup-2-hours)\r\n- Understanding Windows quirks? → [WINDOWS_NOTIFICATION_GUIDE.md](installer/WINDOWS_NOTIFICATION_GUIDE.md)\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT License — See [LICENSE](LICENSE) for details.\r\n\r\n---\r\n\r\n**FastNotifications** — *Part of the FastJava Ecosystem*  \r\n- [FastCore](https://github.com/andrestubbe/FastCore) — JNI loader  \r\n- [FastRobot](https://github.com/andrestubbe/FastRobot) — Ultra-fast automation  \r\n- More at [github.com/andrestubbe](https://github.com/andrestubbe)\r\n\r\n---\r\n\r\n## Related Projects\r\n\r\n- [FastRobot](https://github.com/andrestubbe/FastRobot) — Ultra-fast screen capture \u0026 automation\r\n- [FastTheme](https://github.com/andrestubbe/FastTheme) — OS-aware theme detection\r\n- [FastHotkey](https://github.com/andrestubbe/FastHotkey) — Global system hotkeys\r\n- [FastClipboard](https://github.com/andrestubbe/FastClipboard) — Native clipboard access\r\n\r\n---\r\n\r\n## Keywords\r\n\r\n**SEO Tags:** java notifications, windows toast java, java system tray alternative, native notifications java, winrt toast java, jni notifications, java desktop notifications, java notification library, java windows 11 toast, java winrt notifications\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrestubbe%2Ffastnotification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrestubbe%2Ffastnotification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrestubbe%2Ffastnotification/lists"}