Case Study: A Custom Windows Notification Overlay for Operational Awareness

Summary
In busy operational environments, critical information is often delivered via transient Windows toast notifications. These are easily missed on large or multi-monitor setups, creating a visibility gap for users who rely on at-a-glance information, from developers monitoring build alerts to users with specific accessibility needs. This project delivered a privacy-focused desktop application to capture these events and present them in a persistent, controllable, and accessible overlay.
Challenge
The primary challenge was to reliably capture notifications from a wide array of modern and legacy Windows applications without using intrusive hooks or compromising user privacy. The solution needed to handle different notification technologies, manage a high volume of events from sources like build tools and social media clients, and present the information in a highly configurable but unobtrusive overlay suitable for continuous monitoring or screen-sharing scenarios. A core design requirement was that the overlay should be a passive, readable surface, not a clickable action surface, to maintain focus and security.
Objectives
- Develop a standalone .NET desktop utility to capture Windows toast notifications in real-time.
- Display captured notifications in a persistent, always-on-top overlay with extensive user control over appearance, layout, and positioning.
- Provide deep per-app customisation for filtering, sounds, icons, and narration behaviour.
- Implement a robust accessibility feature set, including spoken notifications, high-contrast support, and compatibility with screen readers and Windows Voice Access.
- Enforce a strict privacy-by-design model where sensitive notification content is never persisted to disk by default.
- Package the application for simple, reliable installation and startup integration using MSIX.
Approach and Delivery
A feature-rich desktop utility was developed using .NET 8 and WPF, following a Model-View-ViewModel (MVVM) design pattern. The application was delivered as a complete product, managed from a system tray icon and configured via a comprehensive settings interface split into twelve sections. The architecture was built around distinct service components for notification capture, in-memory queue management, theming, and accessibility services. This resulted in a maintainable and extensible application, available to download and install from its public GitHub repository.
Technical Implementation
A dual-mode capture strategy ensures broad compatibility. The primary path uses the modern WinRT UserNotificationListener API, with a fallback to the Windows UI Automation framework (SetWinEventHook) for legacy and unpackaged applications. Captured notifications are dispatched to a debounced, in-memory queue that handles filtering, deduplication, and timed expiry. The technology stack consists of C# on .NET 8, WPF for the UI, and a dedicated xUnit test project for validation. Settings, themes, and profiles are managed as portable JSON files, with managed asset references to avoid leaking machine-specific paths. The project is documented and available at github.com/lwytch/Notifications-Pro.
Outcome
The result is a robust and highly configurable desktop utility that successfully makes transient Windows notifications persistent, readable, and accessible. It directly supports workflows for developers, streamers, and community operators by giving users full control over how notifications are displayed. The application’s privacy-first design ensures that all notification content remains transient by default, providing powerful operator control without creating a data security risk. The tool is available as a signed .msix package from the project’s releases page.
Risks, Controls and Governance
The principal risk—exposure of sensitive notification content—was mitigated through a documented privacy-by-design model. All notification text is processed exclusively in-memory and is never written to disk, logs, or telemetry services. The application makes no outbound network calls. Persistent storage is strictly limited to user settings and optional local theme assets within the user’s AppData directory, with validation and size limits applied to prevent abuse. To further reduce risk, URLs found in notifications are rendered as inert plain text rather than clickable hyperlinks.
Key Lessons
- Combining modern WinRT APIs with a UI Automation fallback provides a resilient strategy for interacting with the diverse Windows desktop ecosystem.
- A strict, RAM-only default for handling user content is essential for any desktop utility that intercepts potentially sensitive information.
- Treating internal tools with a full product mindset—including a deep settings UI, portable theming, accessibility features, automated testing, and MSIX packaging—results in a more stable, maintainable, and user-friendly asset.
- Providing portable configuration (JSON import/export for settings and themes) and managed asset references is key to creating a distributable tool that works reliably across different machines.
Related Services
- Windows Desktop Application Development
Build and modernise Windows desktop applications with secure identity integration, controlled packaging, and deployment models suited to enterprise environments. - UI/UX Design for Applications
Application UI and UX design producing build ready prototypes, tested journeys, and accessible interfaces aligned to real user workflows. - Custom Application Development
Build bespoke applications with clear requirements, secure foundations, and maintainable code that integrates cleanly with your existing platforms. - API & System Integrations
Design and implement API integrations connecting business systems with secure authentication, retries, logging, and supportable middleware patterns operations.
Written by

