{"id":345140,"date":"2026-07-27T07:09:18","date_gmt":"2026-07-27T07:09:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/music-player-for-desktop-mode\/"},"modified":"2026-08-14T11:14:02","modified_gmt":"2026-08-14T11:14:02","slug":"deskbeat-for-desktop-mode","status":"publish","type":"plugin","link":"https:\/\/ms.wordpress.org\/plugins\/deskbeat-for-desktop-mode\/","author":23537894,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.1","stable_tag":"1.2.1","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Deskbeat for Desktop Mode","header_author":"Alexis Mora","header_description":"A now-playing widget for Desktop Mode that connects your Spotify account \u2014 playback controls, volume, and a browsable library, right on the desktop.","assets_banners_color":"495260","last_updated":"2026-08-14 11:14:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":114,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"alexismp","date":"2026-08-13 16:36:29"},"1.2.0":{"tag":"1.2.0","author":"alexismp","date":"2026-08-14 10:40:51"},"1.2.1":{"tag":"1.2.1","author":"alexismp","date":"2026-08-14 11:14:02"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3624075,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3624075,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3624075,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3624075,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3624075,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.2.0","1.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3647219,"resolution":"1","location":"assets","locale":"","width":823,"height":896},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3647219,"resolution":"2","location":"assets","locale":"","width":353,"height":189},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3647219,"resolution":"3","location":"assets","locale":"","width":692,"height":864},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3647219,"resolution":"4","location":"assets","locale":"","width":692,"height":956},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3647219,"resolution":"5","location":"assets","locale":"","width":722,"height":316},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3647219,"resolution":"6","location":"assets","locale":"","width":716,"height":688}},"screenshots":{"1":"The full-player window: large artwork, a seek bar with time read-outs, the full transport, volume, and your library inline.","2":"The Music widget: now playing with transport controls, shuffle\/repeat, seek, and volume.","3":"Browse your library \u2014 Queue, Liked Songs, Top tracks, Recently played, and Playlists, with infinite scroll.","4":"Search songs and artists, and play with one click.","5":"One-click \"Connect Spotify\" \u2014 end users never touch credentials.","6":"Admin setup: enter the site's Spotify app Client ID and Secret once."}},"plugin_section":[],"plugin_tags":[273425,218,444,8188,162],"plugin_category":[43,50],"plugin_contributors":[273426],"plugin_business_model":[],"class_list":["post-345140","plugin","type-plugin","status-publish","hentry","plugin_tags-desktop-mode","plugin_tags-music","plugin_tags-player","plugin_tags-spotify","plugin_tags-widget","plugin_category-customization","plugin_category-media","plugin_contributors-alexismp","plugin_committers-alexismp"],"banners":{"banner":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/banner-772x250.png?rev=3624075","banner_2x":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/banner-1544x500.png?rev=3624075","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/icon.svg?rev=3624075","icon":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/icon.svg?rev=3624075","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-1.png?rev=3647219","caption":"The full-player window: large artwork, a seek bar with time read-outs, the full transport, volume, and your library inline."},{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-2.png?rev=3647219","caption":"The Music widget: now playing with transport controls, shuffle\/repeat, seek, and volume."},{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-3.png?rev=3647219","caption":"Browse your library \u2014 Queue, Liked Songs, Top tracks, Recently played, and Playlists, with infinite scroll."},{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-4.png?rev=3647219","caption":"Search songs and artists, and play with one click."},{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-5.png?rev=3647219","caption":"One-click \"Connect Spotify\" \u2014 end users never touch credentials."},{"src":"https:\/\/ps.w.org\/deskbeat-for-desktop-mode\/assets\/screenshot-6.png?rev=3647219","caption":"Admin setup: enter the site's Spotify app Client ID and Secret once."}],"raw_content":"<!--section=description-->\n<p>Deskbeat adds a compact music widget to the <a href=\"https:\/\/wordpress.org\/plugins\/desktop-mode\/\">OpenStation<\/a> (formerly Desktop Mode) desktop. Once a site administrator connects a Spotify Developer app, each user links their own Spotify account with a single click and gets:<\/p>\n\n<ul>\n<li><strong>Now playing<\/strong> \u2014 album art, track, and artist, updating live.<\/li>\n<li><strong>Transport controls<\/strong> \u2014 play\/pause, next, previous, shuffle, repeat, seek, and volume.<\/li>\n<li><strong>In-browser playback<\/strong> \u2014 for Spotify Premium accounts, via the Spotify Web Playback SDK. Free accounts can see and control playback on their other devices.<\/li>\n<li><strong>Browse your library<\/strong> \u2014 Queue, Liked Songs, Top tracks, Recently played, and Playlists, plus a search \u2014 all inside the widget, with infinite scroll.<\/li>\n<\/ul>\n\n<p>This plugin requires the <strong>OpenStation<\/strong> plugin (formerly Desktop Mode; the WordPress.org slug is still <code>desktop-mode<\/code>) and works as a widget you add from the OpenStation widget picker.<\/p>\n\n<h4>Not affiliated with Spotify<\/h4>\n\n<p>This plugin is not affiliated with, endorsed by, or sponsored by Spotify. \"Spotify\" is a trademark of Spotify AB. It works with Spotify through the official Spotify Web API and Web Playback SDK, using credentials you provide.<\/p>\n\n<h4>Credentials stay yours<\/h4>\n\n<p>No Spotify credentials ship with this plugin. Each site connects using its <strong>own<\/strong> Spotify Developer app: an administrator creates a free app and enters its Client ID and Secret once. Tokens are stored server-side per user; the Client Secret and refresh tokens never reach the browser.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to <strong>Spotify<\/strong> so you can view and control your own Spotify playback from the OpenStation desktop. It relies on the following Spotify services:<\/p>\n\n<ol>\n<li><p><strong>Spotify Web API<\/strong> (<code>https:\/\/accounts.spotify.com<\/code>, <code>https:\/\/api.spotify.com<\/code>)<\/p>\n\n<ul>\n<li>What it is: Spotify's official API for account authorization and playback control.<\/li>\n<li>What is sent and when: after you click \"Connect Spotify\", the server exchanges an OAuth authorization code for access\/refresh tokens; while the widget is open, it sends playback commands (play, pause, next, previous, seek, shuffle, repeat, volume, transfer) and reads your now-playing state, library, and search queries you type. Requests are made server-side on your behalf; your Client Secret and refresh token are never exposed to the browser.<\/li>\n<li>No data is sent until you connect your account.<\/li>\n<\/ul><\/li>\n<li><p><strong>Spotify Web Playback SDK<\/strong> (<code>https:\/\/sdk.scdn.co\/spotify-player.js<\/code>)<\/p>\n\n<ul>\n<li>What it is: Spotify's official in-browser player library, loaded via a script tag (it must be served from Spotify's own domain; there is no self-hosted version).<\/li>\n<li>What is sent and when: for Spotify Premium accounts, when you start in-browser playback it registers a playback device with Spotify and streams audio using a short-lived access token.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<p>Use of Spotify is subject to Spotify's terms and privacy policy:\n- Terms of Use: https:\/\/www.spotify.com\/legal\/end-user-agreement\/\n- Privacy Policy: https:\/\/www.spotify.com\/legal\/privacy-policy\/\n- Developer Terms (for the app credentials the administrator provides): https:\/\/developer.spotify.com\/terms\/<\/p>\n\n<p>This plugin is not affiliated with, endorsed by, or sponsored by Spotify. No Spotify credentials are bundled \u2014 each site uses its own Spotify Developer app.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the <strong>OpenStation<\/strong> plugin (formerly Desktop Mode).<\/li>\n<li>Install and activate <strong>Deskbeat for Desktop Mode<\/strong>.<\/li>\n<li>Create a free app at the <a href=\"https:\/\/developer.spotify.com\/dashboard\">Spotify Developer Dashboard<\/a>.<\/li>\n<li>In the app's settings, add the Redirect URI shown in the widget's setup screen (it is your site's REST callback), and enable <strong>Web API<\/strong> and <strong>Web Playback SDK<\/strong>.<\/li>\n<li>In OpenStation, add the <strong>Music<\/strong> widget from the widget picker. As an administrator, paste the app's Client ID and Client Secret in the setup screen.<\/li>\n<li>Click <strong>Connect Spotify<\/strong> to link your account.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20end%20users%20need%20the%20client%20id%2Fsecret%3F\"><h3>Do end users need the Client ID\/Secret?<\/h3><\/dt>\n<dd><p>No. Only an administrator enters them once, per site. Everyone else just clicks \"Connect Spotify\".<\/p><\/dd>\n<dt id=\"why%20do%20i%20need%20to%20create%20a%20spotify%20app%3F\"><h3>Why do I need to create a Spotify app?<\/h3><\/dt>\n<dd><p>Spotify requires every integration to be a registered app with its own redirect URI. For security and to respect Spotify's rate limits, no shared credentials are bundled \u2014 each site uses its own app.<\/p><\/dd>\n<dt id=\"does%20in-browser%20playback%20work%20without%20spotify%20premium%3F\"><h3>Does in-browser playback work without Spotify Premium?<\/h3><\/dt>\n<dd><p>No. The Spotify Web Playback SDK requires Premium. Free accounts can still view and control playback happening on their other devices.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fixed: the widget's \"open full player\" button did nothing \u2014 it called an internal API that isn't exposed on <code>wp.os<\/code>; it now uses <code>wp.os.openWindow<\/code>. (Opening the full player from the dock already worked.)<\/li>\n<li>Improved contrast of the full-player window controls, seek time read-outs, and volume on the dark surface.<\/li>\n<li>Housekeeping: prefixed the player-window functions and shortened the short description (Plugin Check).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><strong>Full-player window<\/strong> \u2014 open a large \"big screen\" player from the widget (a native OpenStation window): large artwork, seek bar with time read-outs, the full transport, an always-visible volume slider, and Browse \/ Search inline.<\/li>\n<li><strong>More transport controls in the widget<\/strong> \u2014 shuffle, repeat (repeat-all \/ repeat-one), and a click-to-seek progress bar, alongside the existing play\/pause, next, previous, and volume.<\/li>\n<li>Playing a track or list from the full player jumps to the Queue so you can see what's coming up next.<\/li>\n<li>Browse sections are now a compact dropdown; the widget's colors follow OpenStation's theme tokens (light\/dark aware).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Compatibility: updated for <strong>OpenStation 1.0.1<\/strong> \u2014 the host plugin formerly known as Desktop Mode. It renamed its public API (<code>openstation_*<\/code>), its script handle (<code>openstation<\/code>), its JS global (<code>wp.os<\/code>), the widget-mount registry (<code>window.openStationWidgets<\/code>), and the active body class (<code>os-active<\/code>); Deskbeat now targets these. Requires OpenStation 1.0.1 or newer.<\/li>\n<li>Tested up to WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: now-playing widget with controls, volume, library browsing, and search for Desktop Mode.<\/li>\n<\/ul>","raw_excerpt":"A now-playing Spotify widget for OpenStation (formerly Desktop Mode) \u2014 controls, volume, and a browsable library on your desktop.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345140"}],"author":[{"embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alexismp"}],"wp:attachment":[{"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345140"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345140"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345140"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345140"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345140"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ms.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}