Documentation

Everything you need to set up and configure the app.

Prerequisites

Before using the app, you need to register two developer applications: one with Spotify and one with Microsoft Azure (Entra ID). Both are free and take about 5 minutes each.

You only need to do this once. The app stores credentials locally and reconnects automatically on restart.

Spotify Developer App

  1. Go to the Spotify Developer Dashboard
  2. Click Create app
  3. Set the Redirect URI to: http://localhost:5543/callback
  4. Copy the Client ID — you'll paste this into the app
Redirect URI: http://localhost:5543/callback

Azure AD (Entra ID) App Registration

  1. Go to the Azure Portal → App Registrations
  2. Click New registration
  3. Set a name (e.g. "PlayStatus")
  4. Under Supported account types, choose your organisation or "Accounts in any organizational directory"
  5. Under Redirect URI, add Public client/native with value http://localhost
  6. After creation, go to API PermissionsAdd a permissionMicrosoft GraphDelegated permissions:
Presence.ReadWrite — Allows setting your Teams status message
User.Read — Allows reading your display name
  1. Go to Authentication → enable Allow public client flows
  2. Copy the Application (client) ID — you'll paste this into the app

Installation

Download the latest release for your platform from the downloads page. The app ships as a single executable — no installer needed.

Or build from source:

git clone https://github.com/craigvincent/playstatus.git
cd playstatus
dotnet build
dotnet run --project src/desktop_app

First Launch

On first launch, the app appears in your system tray. Right-click the tray icon and choose Open Settings to configure:

  1. Paste your Spotify Client ID and click Connect — a browser opens for Spotify login
  2. Paste your Azure AD Client ID and click Connect — a browser opens for Microsoft consent
  3. Customise the status format if desired
  4. Adjust the polling interval
  5. Close the settings window — it hides to the tray and starts working
The window is minimised to tray, not closed. To quit, right-click the tray icon and choose Exit.

Status Format

Customise how your status message appears using placeholders:

{artist} — The name of the artist
{title}  — The name of the track

Examples:

🎵 {artist} - {title}            → 🎵 Radiohead - Creep
{title} by {artist}              → Creep by Radiohead
Listening to: {artist} — {title}  → Listening to: Radiohead — Creep

Polling Interval

The app checks Spotify for your currently playing track on a configurable interval. Adjust the slider between 5 seconds (more responsive) and 60 seconds (less API usage).

The default is 10 seconds, which is a good balance.

Settings File

All settings are stored in a JSON file at:

%APPDATA%\PlayStatus\settings.json     (Windows)
~/Library/Application Support/PlayStatus/settings.json  (macOS)
~/.config/PlayStatus/settings.json      (Linux)

The MSAL token cache is stored alongside as msal_cache.bin. Both files are managed automatically by the app.

Troubleshooting

Spotify connection fails

  • Verify the Client ID is correct
  • Check that the redirect URI in your Spotify Developer Dashboard is exactly http://localhost:5543/callback
  • Ensure port 5543 is not blocked by a firewall

Teams connection fails

  • Verify the Client ID and Tenant ID are correct
  • Check that Allow public client flows is enabled in Azure
  • Ensure the required API permissions (Presence.ReadWrite, User.Read) are granted
  • Your organisation may require admin consent for these permissions

Status doesn't update

  • Check that both Spotify and Teams show as connected in the settings window
  • Verify that Enable automatic updates is checked
  • Try clicking Disconnect then Connect for both services

Privacy

This application runs entirely on your computer:

  • No data is sent to any third-party servers other than Spotify (to check playback) and Microsoft Graph (to set your status)
  • No analytics, no telemetry, no tracking
  • All authentication tokens are stored locally on your machine
  • The only network requests are to api.spotify.com and graph.microsoft.com