A tiny, futuristic now-playing overlay for Windows. One widget controls everything — YouTube & Spotify in your browser, VLC, Windows Media Player, and more.
Most "now playing" widgets only work with one app. This one reads Windows System Media Transport Controls (SMTC) — the same layer the OS uses for its taskbar media flyout — so it shows and controls whatever you're playing, from any app, with a single tiny window. It also adds its own built-in YouTube audio player (search & play without opening a browser).
- 🪶 Lightweight — ~85 MB working set, single small
.exe, no heavy frameworks. - 🌐 Bilingual UI — English by default with a compact
ID/ENtoggle saved between sessions. - 📰 Auto-scrolling track text — long titles and artist names scroll smoothly from right to left so the full text remains readable.
- 🎛️ Universal control — prev / play-pause / next + live progress bar for any source.
- 🔊 Hideable widget volume slider — adjust the widget-owned local/YouTube player volume safely, then hide it to keep the overlay minimal.
- 📁 Broad local media support — play common audio/video containers (
mp3,mp4,mkv,webm,flac,ogg, and more) by extracting audio when needed. - 🔎 YouTube search & play (audio only) — no browser needed, with clean music-template previews and a hideable results/history list.
- 🕘 History — past searches autocomplete; played tracks are saved and replayable.
▶️ Play all — queue an entire result list or your history (auto-advances).- 🔁 Repeat & Loop — replay the last track, or loop the current one forever.
- 🗑️ One-tap delete — remove any history item with its little ✕.
- 🚀 Auto-start + optional auto-show — runs at boot and appears when music plays, unless you manually Hide it.
- 🙈 Manual Hide / Unhide + window controls — Hide suppresses media-triggered popups until tray/shortcut Unhide; Minimize and Maximize/Restore are built in.
- 🔔 Update notifications — checks GitHub Releases and notifies when a new app version is available.
| Compact widget | YouTube search & results | Volume + template preview |
|---|---|---|
![]() |
![]() |
![]() |
- Play music anywhere — YouTube in Chrome/Edge, Spotify, VLC, Windows Media Player. The widget pops up at the bottom-right with the title, artist, artwork, and working controls.
- Open local media — click the file button and choose common audio/video media (
mp3,mp4,mkv,webm,flac,ogg, etc.). Video containers are played as audio. - Search YouTube — click 🔎, type a song, press Enter. Pick a result to play its audio right inside the widget (no browser).
- Use volume safely — click the volume icon only when needed, move the Vol slider, then hide it again for a compact widget.
- Read long tracks — long titles and artist names automatically marquee from right to left when they do not fit.
- Play all — hit ▶ Play all to queue the whole list; it auto-advances track to track.
- History — open the search box: empty can show recently played tracks; use List to show/hide the list, and switch tabs with Results / History.
- Repeat / Loop — 🔁 replays the last track; the loop button repeats the current one endlessly.
- Hide / Unhide — click ✕ to hide the widget and stop automatic popups while media keeps playing. Use the tray icon or launch shortcut again to Unhide.
- Minimize / Maximize — use
_for temporary minimize-to-tray, and the maximize button to toggle a wider widget layout. - Switch language — click the tiny
ID/ENbutton to switch between English and Indonesian. - Delete — click the small ✕ on any history row to remove it.
For normal users: Windows 10/11. The release installer is self-contained and does not require a separate .NET install.
For YouTube playback: install yt-dlp and ffmpeg from trusted package managers:
winget install yt-dlp.yt-dlp Gyan.FFmpegFor developers: install the .NET 8 SDK:
winget install Microsoft.DotNet.SDK.8Download MusicWidgetSetup-*-win-x64.exe from Releases, run it, then launch Music Widget from the Start Menu.
Release installers are self-contained for Windows x64, so users do not need to install the .NET Desktop Runtime separately. The installer is per-user (no admin required), adds a Start Menu shortcut, supports uninstall from Windows Settings, and can optionally add Desktop/Startup shortcuts when built with Inno Setup.
Verify downloads with the SHA256SUMS.txt file attached to each release.
Note: builds are currently unsigned until a code-signing certificate is available, so Windows SmartScreen may show a warning.
git clone https://github.com/Wayan123/Simple-Music-Widget.git
cd Simple-Music-Widget
powershell -ExecutionPolicy Bypass -File install.ps1install.ps1 stops any old running widget first, builds the app, adds a Startup shortcut (auto-run at boot), a Start Menu shortcut (right-click → Pin to taskbar), and launches it.
powershell -ExecutionPolicy Bypass -File scripts/build-installer.ps1 -SelfContainedThis publishes the app, copies LICENSE/README.md into the payload, creates a portable ZIP, builds an installer .exe, and writes a SHA256 checksum file. If Inno Setup is unavailable locally, the script falls back to a no-admin IExpress installer.
dotnet run -c ReleaseIt does not talk to YouTube/Spotify directly for control. It reads SMTC (Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager), the central layer every modern media app reports to. For its own YouTube player, yt-dlp resolves the audio stream and ffmpeg bridges it into a local file that WPF MediaPlayer plays (WPF can't open googlevideo URLs directly).
⚠️ Playing YouTube audio outside a browser is against YouTube's ToS and can break when YouTube changes. Keepyt-dlpandffmpegupdated through your package manager, for examplewinget upgrade yt-dlp.yt-dlp Gyan.FFmpeg.
Music Widget stores lightweight local preferences/history only on your machine:
- YouTube search history and played-track history:
%AppData%\\MusicWidget - Language preference:
%AppData%\\MusicWidget\\language.txt - Installed app files, when using the installer:
%LocalAppData%\\Programs\\MusicWidget
The app does not upload history to any service. YouTube search/playback uses your locally installed yt-dlp executable.
| File | Role |
|---|---|
MediaService.cs |
SMTC wrapper: read active session, snapshot, prev/play/next |
LocalPlayer.cs |
MediaPlayer for local files & YouTube (ffmpeg bridge), loop, queue events |
YouTubeService.cs |
yt-dlp search + audio-URL resolve; yt-dlp/ffmpeg path resolve |
HistoryStore.cs |
JSON persistence for searches & played tracks |
UpdateService.cs |
GitHub Releases version checker |
TrayIcon.cs |
System-tray icon (hide / unhide / exit) |
App.xaml.cs |
Single-instance entry point (summons running instance) |
MainWindow.xaml(.cs) |
UI overlay, search/history, queue, repeat/loop, auto show-hide |
install.ps1 |
Developer publish + Startup/Start-Menu shortcuts + yt-dlp update |
scripts/build-installer.ps1 |
Release artifact builder: portable ZIP + installer .exe |
scripts/regression-window-controls.ps1 |
UI Automation smoke test for Hide/Unhide, Minimize, and Maximize/Restore |
installer/MusicWidget.iss |
Inno Setup installer definition |
.github/workflows/ci.yml |
PR/main build and publish smoke test |
.github/workflows/windows-release.yml |
CI workflow for installer artifacts and tag releases |
make_icon.py |
Generates the futuristic 3D icon |
- Bump
<Version>inMusicWidget.csproj. - Open a PR and verify CI passes.
- Merge, tag, and push. The tag must match the project version:
git tag -a vX.Y.Z -m "vX.Y.Z" git push origin vX.Y.Z
- GitHub Actions builds
MusicWidgetSetup-*-win-x64.exe, the portable ZIP, andSHA256SUMS.txt, then attaches them to the GitHub Release. - Running widgets detect the new release and show a tray notification.
Not yet. The widget is built on Windows-only tech (SMTC + WPF). A Linux version would need a separate app (MPRIS/D-Bus + GTK/Qt) and is planned as a future, separate project.
MIT — free to use, modify, and share.

