<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mugheez Asif</title>
    <description>The latest articles on DEV Community by Mugheez Asif (@mugheez_asif_6c2b23f2ec2d).</description>
    <link>https://dev.to/mugheez_asif_6c2b23f2ec2d</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4240778%2F26887253-8cac-45ac-a414-79a0e80046d2.png</url>
      <title>DEV Community: Mugheez Asif</title>
      <link>https://dev.to/mugheez_asif_6c2b23f2ec2d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mugheez_asif_6c2b23f2ec2d"/>
    <language>en</language>
    <item>
      <title>I built a liquid-glass Spotify mini player for Windows</title>
      <dc:creator>Mugheez Asif</dc:creator>
      <pubDate>Sun, 15 Nov 2026 09:21:20 +0000</pubDate>
      <link>https://dev.to/mugheez_asif_6c2b23f2ec2d/i-built-a-liquid-glass-spotify-mini-player-for-windows-59np</link>
      <guid>https://dev.to/mugheez_asif_6c2b23f2ec2d/i-built-a-liquid-glass-spotify-mini-player-for-windows-59np</guid>
      <description>&lt;p&gt;I wanted a Spotify controller on my desktop that I'd actually enjoy looking at. Not another flat grey box, but something closer to Apple's liquid glass: clear, soft, a little bit alive. So I built one for Windows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5kouj331jlq4a6iwc98.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5kouj331jlq4a6iwc98.gif" alt="Glass Player: the card appears, play is pressed, the record slides out of its sleeve and starts spinning" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glass Player&lt;/strong&gt; is a small widget that floats on your desktop, shows what's playing, and gives you play/pause, previous/next, shuffle, seek and "always on top". It appears when Spotify opens and leaves when Spotify closes. It's written in C# with WPF on .NET 8, and it's open source.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MugheezAsif" rel="noopener noreferrer"&gt;
        MugheezAsif
      &lt;/a&gt; / &lt;a href="https://github.com/MugheezAsif/glass-player" rel="noopener noreferrer"&gt;
        glass-player
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Glass Player&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A liquid-glass mini player for Spotify on Windows.&lt;/strong&gt;
Late-night vinyl, under glass: a tiny desktop widget that takes its colour from whatever you're listening to.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/69212209cd3546ee7d0ade1c9f041cc53b4a358966d072122c4cc2d5174b53af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d313025323025374325323031312d3042334244313f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/69212209cd3546ee7d0ade1c9f041cc53b4a358966d072122c4cc2d5174b53af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d313025323025374325323031312d3042334244313f7374796c653d666c61742d737175617265" alt="Windows 10 / 11"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fb1b90c4658019847c8d6c0bb641eb423a1afb28db055f908002588309803f2c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d382d3531324244343f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/fb1b90c4658019847c8d6c0bb641eb423a1afb28db055f908002588309803f2c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d382d3531324244343f7374796c653d666c61742d737175617265" alt=".NET 8"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b2c8c2e0b5a3bf42e3d175f4fd5a25c3312572f9caf8f625fe1fa15779d2bf9d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f55492d5750462d3145384342453f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/b2c8c2e0b5a3bf42e3d175f4fd5a25c3312572f9caf8f625fe1fa15779d2bf9d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f55492d5750462d3145384342453f7374796c653d666c61742d737175617265" alt="WPF"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1328115e56d60087dfb2f8dc029bdfd19d8d4acd29cd6bf0f3c7254f6d289054/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3245413434463f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/1328115e56d60087dfb2f8dc029bdfd19d8d4acd29cd6bf0f3c7254f6d289054/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3245413434463f7374796c653d666c61742d737175617265" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/MugheezAsif/glass-player/docs/media/preview.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2FMugheezAsif%2Fglass-player%2FHEAD%2Fdocs%2Fmedia%2Fpreview.gif" alt="Glass Player: the card appears, play is pressed, the record slides out of its sleeve and starts spinning" width="600"&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Highlights&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real frosted glass.&lt;/strong&gt; The widget blurs whatever sits behind it with its own blur engine: clean 30 px corners, a thick bright rim, a soft lens ring and a faint pink/cyan refraction fringe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cover sets the mood.&lt;/strong&gt; One accent colour is pulled from each album cover and carried through the play button, progress line, glow and dots. Every song re-themes the card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A record that plays.&lt;/strong&gt; A vinyl disc (the cover is its label) slides out of the sleeve and spins while music plays, and tucks back in when you pause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Considered typography.&lt;/strong&gt; Editorial serif for the title, a DIN face for the artist, editor-mono numerals for time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestrated motion.&lt;/strong&gt; One staggered entrance (sleeve, record, titles, progress line, controls) instead of…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MugheezAsif/glass-player" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  The design: late-night vinyl, under glass
&lt;/h2&gt;

&lt;p&gt;I gave myself one rule: &lt;strong&gt;the card is glass and white, and the album decides the only loud colour.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Playing&lt;/th&gt;
&lt;th&gt;Paused&lt;/th&gt;
&lt;th&gt;Shuffle on&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F90ni81g59v00x3eqzypp.png" alt="Playing, cyan accent" width="800" height="463"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F762yzk3otljx2pz5a74n.png" alt="Paused, orange accent" width="800" height="463"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvfwrnqk0segbqkmtv3u.png" alt="Shuffle on, green accent" width="800" height="463"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Colour from the cover.&lt;/strong&gt; The widget finds the most vivid pixel of the album art, pushes it into a usable range of saturation and brightness, and uses it for the play button, the progress line, the glow and the little dots. Every song re-themes the whole card. Grey covers fall back to a warm paper white.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type with character.&lt;/strong&gt; The title is set in &lt;em&gt;Sitka Banner&lt;/em&gt;, a high-contrast editorial serif. The artist is in &lt;em&gt;Bahnschrift&lt;/em&gt;, a DIN face. The time and the &lt;code&gt;NOW PLAYING&lt;/code&gt; label are in &lt;em&gt;Cascadia Mono&lt;/em&gt;. All three ship with Windows, so there's nothing to install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A record that plays.&lt;/strong&gt; Behind the cover sits a vinyl disc, with the cover art as its label. When music plays it slides out of the sleeve with a small overshoot and starts spinning. Pause, and it tucks back in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One entrance, not ten.&lt;/strong&gt; When the widget appears, everything arrives in a staggered sequence: sleeve, record, titles, progress line, then the buttons. One orchestrated moment feels better than lots of random micro-animations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The hard parts
&lt;/h2&gt;

&lt;p&gt;The look was the fun part. Making it &lt;em&gt;work&lt;/em&gt; on Windows was where I learned the most.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Talking to Spotify without the Spotify API
&lt;/h3&gt;

&lt;p&gt;I didn't want OAuth, API keys or a Premium requirement. Windows already knows what's playing: the same system media controls you see when you press a volume key. In .NET that's &lt;code&gt;GlobalSystemMediaTransportControlsSessionManager&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;manager&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nc"&gt;GlobalSystemMediaTransportControlsSessionManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;RequestAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;spotify&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetSessions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FirstOrDefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SourceAppUserModelId&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"spotify"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;StringComparison&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OrdinalIgnoreCase&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;spotify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TryGetMediaPropertiesAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;// title, artist, cover thumbnail&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;spotify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TryTogglePlayPauseAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                 &lt;span class="c1"&gt;// controls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You get the title, artist, cover, play state, shuffle and the timeline, plus controls, with no login at all.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. The grey box behind the rounded corners
&lt;/h3&gt;

&lt;p&gt;My first glass version used Windows' built-in "blur behind" effect. It looked great, except for a grey square peeking out of every rounded corner. Windows blurs the window's whole rectangle and ignores its rounded shape. I tried three different APIs and none of them respected the curve.&lt;/p&gt;

&lt;p&gt;So I wrote my own glass. The trick is one call:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="nc"&gt;SetWindowDisplayAffinity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hwnd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;WDA_EXCLUDEFROMCAPTURE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This hides the window from screen capture, and that includes captures made by the app itself. So the widget can grab the part of the screen &lt;em&gt;directly behind itself&lt;/em&gt;. It shrinks that to a third of the size, runs a three-pass box blur (which looks almost exactly like a Gaussian blur), boosts the colour a little, and draws it inside a properly anti-aliased rounded card with its own soft shadow. A quick hash skips all the work when nothing behind it has changed.&lt;/p&gt;

&lt;p&gt;The trade-off: the widget doesn't show up in screenshots or screen shares. That's also why the images in this post come from a "showcase mode" I added. The app renders itself over generated wallpapers, with made-up tracks and generated cover art.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. "It doesn't look HD"
&lt;/h3&gt;

&lt;p&gt;At one point the widget looked soft, and it took some digging to find out why. Three things were going on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The whole layout scales with the window size, which puts lines and images on half-pixels.&lt;/li&gt;
&lt;li&gt;Some layers were cached as bitmaps and then stretched.&lt;/li&gt;
&lt;li&gt;The text had a drop-shadow effect on it, which slightly blurs the letters themselves.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fixes: the 1-pixel glass edges and the cover art are now drawn &lt;em&gt;outside&lt;/em&gt; the scaled layout, snapped to whole pixels. The text shadow is a separate blurred copy sitting behind sharp text. The difference is obvious side by side.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Keeping a spinning record cheap
&lt;/h3&gt;

&lt;p&gt;A transparent window like this has to re-upload its whole image every time anything moves, so a spinning record could quietly eat CPU. The answers were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bake every static layer (the glass, the edges, the cover, the buttons) into a cached image.&lt;/li&gt;
&lt;li&gt;Avoid live effects on anything that updates often.&lt;/li&gt;
&lt;li&gt;Spin at 15 fps. The grooves are circular, so it still reads as smooth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While the record spins it uses roughly 5–10% of one CPU core, which is well under 1% of a modern multi-core CPU. And if you'd rather it sat perfectly still, the spin can be switched off from the tray.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Constraints make the design.&lt;/strong&gt; "One accent colour, taken from the cover" did more for the look than any extra effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Know when to stop fighting the platform.&lt;/strong&gt; I tried three ways to make Windows' blur respect rounded corners. Writing my own blur took less time than that, and it does exactly what I need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure before optimising.&lt;/strong&gt; I was sure the spinning record was the expensive part. A quick profile showed it was a glow effect being redrawn four times a second.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;It's on GitHub with build steps, a full write-up of the design and engineering, and an MIT license:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MugheezAsif" rel="noopener noreferrer"&gt;
        MugheezAsif
      &lt;/a&gt; / &lt;a href="https://github.com/MugheezAsif/glass-player" rel="noopener noreferrer"&gt;
        glass-player
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Glass Player&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;A liquid-glass mini player for Spotify on Windows.&lt;/strong&gt;
Late-night vinyl, under glass: a tiny desktop widget that takes its colour from whatever you're listening to.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/69212209cd3546ee7d0ade1c9f041cc53b4a358966d072122c4cc2d5174b53af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d313025323025374325323031312d3042334244313f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/69212209cd3546ee7d0ade1c9f041cc53b4a358966d072122c4cc2d5174b53af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d313025323025374325323031312d3042334244313f7374796c653d666c61742d737175617265" alt="Windows 10 / 11"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fb1b90c4658019847c8d6c0bb641eb423a1afb28db055f908002588309803f2c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d382d3531324244343f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/fb1b90c4658019847c8d6c0bb641eb423a1afb28db055f908002588309803f2c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2e4e45542d382d3531324244343f7374796c653d666c61742d737175617265" alt=".NET 8"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b2c8c2e0b5a3bf42e3d175f4fd5a25c3312572f9caf8f625fe1fa15779d2bf9d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f55492d5750462d3145384342453f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/b2c8c2e0b5a3bf42e3d175f4fd5a25c3312572f9caf8f625fe1fa15779d2bf9d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f55492d5750462d3145384342453f7374796c653d666c61742d737175617265" alt="WPF"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1328115e56d60087dfb2f8dc029bdfd19d8d4acd29cd6bf0f3c7254f6d289054/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3245413434463f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/1328115e56d60087dfb2f8dc029bdfd19d8d4acd29cd6bf0f3c7254f6d289054/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3245413434463f7374796c653d666c61742d737175617265" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/MugheezAsif/glass-player/docs/media/preview.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2FMugheezAsif%2Fglass-player%2FHEAD%2Fdocs%2Fmedia%2Fpreview.gif" alt="Glass Player: the card appears, play is pressed, the record slides out of its sleeve and starts spinning" width="600"&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Highlights&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real frosted glass.&lt;/strong&gt; The widget blurs whatever sits behind it with its own blur engine: clean 30 px corners, a thick bright rim, a soft lens ring and a faint pink/cyan refraction fringe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cover sets the mood.&lt;/strong&gt; One accent colour is pulled from each album cover and carried through the play button, progress line, glow and dots. Every song re-themes the card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A record that plays.&lt;/strong&gt; A vinyl disc (the cover is its label) slides out of the sleeve and spins while music plays, and tucks back in when you pause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Considered typography.&lt;/strong&gt; Editorial serif for the title, a DIN face for the artist, editor-mono numerals for time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestrated motion.&lt;/strong&gt; One staggered entrance (sleeve, record, titles, progress line, controls) instead of…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MugheezAsif/glass-player" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you build it, I'd love to see a screenshot of it over your wallpaper. And I'm curious: &lt;strong&gt;what would you add to a desktop music widget?&lt;/strong&gt; Lyrics, a mini visualiser, keyboard shortcuts? Let me know in the comments. 👇&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>ai</category>
      <category>dotnet</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
