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.
Spotify Developer App
- Go to the Spotify Developer Dashboard
- Click Create app
- Set the Redirect URI to:
http://localhost:5543/callback - Copy the Client ID — you'll paste this into the app
Redirect URI: http://localhost:5543/callback Azure AD (Entra ID) App Registration
- Go to the Azure Portal → App Registrations
- Click New registration
- Set a name (e.g. "PlayStatus")
- Under Supported account types, choose your organisation or "Accounts in any organizational directory"
- Under Redirect URI, add Public client/native with value
http://localhost - After creation, go to API Permissions → Add a permission → Microsoft Graph → Delegated permissions:
Presence.ReadWrite — Allows setting your Teams status messageUser.Read — Allows reading your display name- Go to Authentication → enable Allow public client flows
- 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:
- Paste your Spotify Client ID and click Connect — a browser opens for Spotify login
- Paste your Azure AD Client ID and click Connect — a browser opens for Microsoft consent
- Customise the status format if desired
- Adjust the polling interval
- Close the settings window — it hides to the tray and starts working
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.comandgraph.microsoft.com