A Stream Deck plugin that displays currently playing music with album art from any media player on Windows, macOS, or Linux.
✅ Working:
- Real-time song title & artist display
- Play/pause toggle on key press
- Plugin loads and connects to Stream Deck
- Responsive updates when music changes
- Cross-platform compatible (Windows/macOS/Linux ready)
❓ Album Art: Limited support - depends on media player providing artwork through system APIs. Some players (Spotify) may provide this, others may not.
- 🎵 Real-time Updates: Automatically updates when your music changes
- 🖼️ Album Art: Displays album artwork on the Stream Deck key
- 🎮 Play/Pause Control: Press the key to toggle play/pause
- 🔄 Cross-Platform: Works with Spotify, iTunes, Windows Media Player, and other media players
- 📊 Track Info: Shows song name and artist on the key
- Stream Deck software (version 6.0 or later)
- Node.js 20+ (automatically handled by Stream Deck)
- A media player that supports system media controls
-
Clone or download this repository
git clone <repository-url> cd streamdeck-nowplaying
-
Install dependencies
npm install
-
Build the plugin
npm run build
-
Link to Stream Deck
Create a symbolic link from your Stream Deck plugins folder to this directory:
Windows (PowerShell as Administrator):
New-Item -ItemType SymbolicLink -Path "$env:APPDATA\Elgato\StreamDeck\Plugins\com.streamdeck.nowplaying.sdPlugin" -Target "$(Get-Location)"
macOS:
ln -s "$(pwd)" ~/Library/Application\ Support/com.elgato.StreamDeck/Plugins/com.streamdeck.nowplaying.sdPlugin
-
Restart Stream Deck software
- Build the plugin:
npm run build - Package as
.streamDeckPluginfile (requires Stream Deck CLI or manual packaging) - Double-click the
.streamDeckPluginfile to install
- Open Stream Deck software
- Find "Now Playing" in the Media category
- Drag it to a key on your Stream Deck
- Play some music in any supported media player
- The key will automatically update with:
- Album artwork
- Song name
- Artist name
Press the key to toggle play/pause
streamdeck-nowplaying/
├── manifest.json # Plugin manifest for Stream Deck
├── src/
│ └── plugin.js # Main plugin code
├── assets/ # Icons and images
│ ├── action.svg
│ ├── category.svg
│ └── plugin.svg
├── bin/ # Built plugin files
├── build.js # Build script
└── package.json
# Build once
npm run build
# Watch for changes and rebuild
npm run watch
# Test the plugin code directly
npm testThe plugin uses:
- node-nowplaying: A cross-platform Node.js library that monitors system media players
- @elgato/streamdeck: Official Elgato Stream Deck SDK for Node.js
The plugin subscribes to media events and updates the Stream Deck key in real-time with:
- Current track information (title, artist, album)
- Album artwork (automatically fetched as base64 thumbnail)
- Playback state (playing/paused)
Works with any player that integrates with the system media controls:
- Windows: Spotify, iTunes, Windows Media Player, Groove Music, VLC, etc.
- macOS: Spotify, Apple Music, iTunes, VLC, etc.
- Linux: Spotify, Rhythmbox, VLC, and MPRIS-compatible players
- Make sure you restarted the Stream Deck software after installation
- Check that the symbolic link was created correctly
- Verify
manifest.jsonexists in the plugin directory
- Ensure you have music playing in a supported media player
- Check the Stream Deck logs:
%APPDATA%\Elgato\StreamDeck\logs(Windows) - Try pressing play/pause in your media player to trigger an update
- Some media players may not provide album artwork through system APIs
- The plugin will still show track information even without artwork
MIT
Built with:
- node-nowplaying by JoeyEamigh
- Stream Deck SDK by Elgato