Show what's playing on your Windows taskbar. Works with Spotify, YouTube, Chrome, Edge, VLC — any app that uses Windows media controls.
No browser extension. No background. Just text on the taskbar.
- Zero setup — detects media from any app automatically
- Notification reader — shows system toasts (WhatsApp, Teams, etc.) with slide animation
- Native look — transparent overlay, text floats directly on the taskbar
- No browser extension — uses built-in Windows APIs
- Centered taskbar — detects Windows 11 centered layout, positions correctly
- Auto-scroll — long titles scroll smoothly
- Customizable — font, colors, opacity, chroma key via Settings dialog
- Right-click tray — customize, toggle notifications, enable auto-start, exit
- Download
NowOnTaskbar.exefrom Releases - Run it — no install needed
- Play something — title appears on your taskbar
git clone https://github.com/yaffalhakim1/nowplaying-windows.git
cd nowplaying-windows
dotnet build -c Release
.\bin\Release\net9.0-windows10.0.19041.0\NowOnTaskbar.exeNotifications require package identity. Run once:
.\register-sparse.ps1This creates a self-signed certificate and registers a sparse MSIX package. Windows will ask "Let NowOnTaskbar read your notifications?" — click Allow.
Run the exe from the same folder where you ran
register-sparse.ps1. The package identity is path-dependent.
- Windows 10 1809+ or Windows 11
- .NET 9 Desktop Runtime — click "Download x64" under "Run desktop apps". The regular .NET Runtime will not work.
| Action | How |
|---|---|
| Start | Run NowOnTaskbar.exe |
| Use | Play anything — title appears on taskbar |
| Silence notifications | Right-click tray icon, uncheck Notifications |
| Auto-start | Right-click tray icon, click Auto-start |
| Customize | Right-click tray icon, click Settings |
| Exit | Right-click tray icon, click Exit |
Media detection:
GlobalSystemMediaTransportControlsSessionManagermonitors all media sessions system-wide- When a session changes, reads
Title+Artist - Renders text via GDI
TextRendereron a transparent overlay
Notification display:
UserNotificationListenerreads system toast notifications- Extracts sender + message from toast XML
- Media text slides up, notification slides in from below
- Holds 5 seconds, slides back out — 125fps, cubic ease-out
Taskbar positioning:
- Finds
Shell_TrayWndviaFindWindow - Enumerates children, filters system windows
- Positions overlay left of the tray area
- Re-checks every 100ms + bumps Z-order
Program.cs Entry point + media/notification listeners
TaskbarOverlayForm.cs Transparent GDI overlay + scroll + slide animation
NowOnTaskbar.csproj .NET 9 WinForms + WinRT (net9.0-windows10.0.19041.0)
Package.appxmanifest Sparse package identity for notification access
register-sparse.ps1 One-time notification setup script
Built entirely in C# WinForms — but if you come from JS/TS, see JS-DEVELOPER-GUIDE.md for a crash course in how the code works.
| Layer | Tech |
|---|---|
| Framework | .NET 9 WinForms |
| Media | Windows.Media.Control (WinRT SMTC) |
| Notifications | Windows.UI.Notifications.Management |
| Rendering | GDI TextRenderer + ClearType |
| Transparency | Color-key (TransparencyKey = Black) |
| Animation | System.Threading.Timer @ 8ms + Stopwatch |
| Taskbar position | Win32 P/Invoke (FindWindow, SetWindowPos) |
MIT
