Cross platform, universal discord rich presence for media players
Go to file
EinTim23 fa29020cea - auto retry last fm on fail 2025-05-13 14:01:01 +02:00
.github/workflows experimental arm64 linux 2025-05-12 23:34:32 +02:00
cmake tray icon and resources 2024-11-02 17:17:12 +01:00
img updated screenshots 2025-05-13 00:57:04 +02:00
linux/AppDir/usr new icon 2025-05-12 23:00:53 +02:00
osx new icon 2025-05-12 23:00:53 +02:00
rsrc new icon 2025-05-12 23:00:53 +02:00
src - auto retry last fm on fail 2025-05-13 14:01:01 +02:00
vendor bump discord-rpc for windows arm64 compatibility 2025-05-12 21:36:42 +02:00
win new icon 2025-05-12 23:00:53 +02:00
.clang-format - Fix: settings window not auto focussing on mac os 2025-01-11 15:50:39 +01:00
.gitignore automated linux build 2025-01-12 12:40:29 +01:00
.gitmodules unfinished linux backend 2024-11-05 20:22:11 +01:00
CMakeLists.txt add old mediaremote way of getting playback data, as osascript way only works on sonoma and newer. 2025-05-03 22:59:52 +02:00
LICENSE Add LICENSE 2024-11-06 12:00:41 +01:00
README.md try to fix arm64 github actions build 2025-05-12 22:36:28 +02:00
settings.example.json Ui Update done 2025-05-10 21:18:11 +02:00

README.md

PlayerLink

Cross platform, universal discord rich presence for media players.

System requirements

  • Mac OS 10.15 or later
  • Windows 10 1809 or later
  • Pretty much any linux distribution with gtk3 and dbus support

Showcase

You can add predefined players to the settings.json to customise the name it shows in discord, edit the search button base url, and app icon. By default it will just display as "Music" without a search button or app icon.

rich presence

settings window

settings window

settings window

Backends

Windows

The Windows backend is powered by Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager (horrible name I know) introduced in Windows 10 1809. It allows to query the system wide media information.

Mac OS

The Mac OS backend is powered by the private MediaRemote framework. It provides PlayerLink with the currently playing song information.

Linux

The linux backend is powered by MPRIS. It allows to query the system wide media information via dbus.

Config

Mac OS ~/Library/Application Support/PlayerLink Linux ~/.config/PlayerLink Windows %appdata%\PlayerLink

An example on how to add custom apps to the config can be found here. In the future there will be a UI to configure custom apps in a more user friendly way.

Building

Prerequisites

Windows

  • Visual Studio toolchain with CMake that supports C++ 17 and winrt. Clang or MSVC doesn't matter. You might be able to get mingw to work, but I personally had issues using winrt with mingw and therefore its unsupported.
  • Git

Linux

  • GTK3 developer libraries and includes
  • A C++ 17 capable compiler (gcc or clang should both work)
  • A C compiler
  • CMake
  • Git

Mac OS

  • Xcode 11 or newer with the Mac OS toolchain installed
  • CMake
  • Git

How to build

  1. Open your unix shell or Windows Developer Powershell

  2. Clone the repository recursively to include submodules and enter the directory

    git clone --recursive https://github.com/EinTim23/PlayerLink.git
    cd PlayerLink
    
  3. Use CMake to configure the project

    # for a release build
    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
    # for a debug build
    cmake -S . -B build
    
  4. Build the project :)

    # for a release build
    cmake --build build --config Release --target PlayerLink
    # for a debug build
    cmake --build build --target PlayerLink
    

Contributing

This repository is open for contributions. You can view the current roadmap here or implement your own features and then open a pull request. Please keep your code as consistent and clean as possible.

Credits

This project was heavily inspired by Alexandra Göttlicher's MusicRPC and her project may provide a better experience when being on Mac OS only.