Now Playing Module
The Now Playing module detects media playing on your system in real time, lets you design OBS browser overlays inside the built-in OBS Overlay Studio, and exports Snaz-compatible text and JSON files.
How it Works
The background daemon polls native OS media sessions every second:
- Windows: Uses C++/WinRT Global System Media Transport Controls (GSMTC). Automatically detects Spotify, Apple Music, web browsers (YouTube, Twitch), VLC, and other Windows media apps.
- Linux: Uses direct libdbus-1 MPRIS (
org.mpris.MediaPlayer2.*), preferring the active playing player.
Album artwork is only read, downloaded (file:// / http(s)://), and Base64-encoded when the active song changes, minimizing CPU and memory overhead.
OBS Overlay Studio & Previews
- Enable this module (
nowPlayingEnabled): When turned off, deletesshared/current_song.json,shared/current_song.js, andtrack-info.jsonso browser overlays hide cleanly, while emptyingPlayingNow.txtandTrack*.txtwithout deleting them so OBS Text sources stay bound. - Live Previews: View updates live inside the embedded Live OBS Stage Preview in Now Playing (
OBS Checker/Dark/Lightstage andLive Track/Demo Track), or click Browser Preview (shared/preview.html) for a browser test page (Checker/Dark/LightandDemo / Idle). - Presets & Style:
- Includes 7 built-in presets (
classicClassic Dark,glassFrosted Glass,neonNeon Cyber,compactCompact Pill,vinylVinyl Studio,minimalMinimal Clean,bannerLower-Third) plus Reset to Defaults. - Customize background gradients, border width/color, accent color, title/artist/album text colors, backdrop blur, shadow intensity, outer glow, and 3 Album color target modes (
card,accent,subtleexposing--osmv-album-hue/--osmv-album-rgb). - Manage Saved Presets (Multi-Scene OBS) with Save Preset, Update, Delete, and Scene URL (
?preset=<Name>).
- Includes 7 built-in presets (
- Layout & Content:
- Configure 5 positions (
bottom-right,bottom-left,top-right,top-left,center), 4 layouts (horizontal,horizontal-right,vertical,compact), width, padding, item gap, border radius, and album artwork size/radius (including Vinyl spin while playing). - Customize title, artist, album, and badge formats using
$song,$artist,$album,$player,$status, and uppercase*_uppertokens. - Adjust fonts (built-in or Load via Google Fonts), sizes/weight/align, drop shadow, marquee scrolling & speed, 5 show/hide transitions (
fade,slide-up,slide-left,zoom,none), and hide-when-idle timeout / placeholder text.
- Configure 5 positions (
- Visualizer:
- Choose from 5 styles (
bars,mirrored,dots,wave,blocks), 3 placements (top,bottom,background), and 3 color modes (album,customgradient,rainbow), with configurable bar count (8..48), height, gap, and energy/speed.
- Choose from 5 styles (
- Custom CSS:
- Syntax-highlighted monospace CSS editor with line numbers,
Ln/Colcursor tracking, Load Studio CSS into Editor, Copy Generated CSS, Clear, and clickable CSS snippets (+.widget-container,+.album-art,+.track-title,+.track-badge). - Toggle Enable custom CSS for layered overrides on top of Studio styles, or Raw CSS only (disable generated Studio styles) for complete manual control (for example,
.obs-stack { gap: 0; }removes spacing between a top/bottom visualizer and the widget card).
- Syntax-highlighted monospace CSS editor with line numbers,
Snaz-Style Text & JSON Exports
All text exports are written inside shared/dynamic_text/ (or your configured output directory):
- Separate Text Files: Writes
TrackArtist.txt,TrackSong.txt, andTrackAlbum.txt. - Formatted Text File (
PlayingNow.txt): Formats the active track using template codes:$artist,$song,$album$artist_upper,$song_upper,$album_upper(UTF-8 uppercase)- Example:
$artist - '$song'->Bryan Adams - 'Summer Of '69'
- Snaz JSON (
track-info.json): Outputs{ mediaplayer, artist, song, album, status }. - Clear on Stop/Pause: Optionally clears text files or writes a custom fallback message when playback is inactive.
Last updated on