Cross platform, universal discord rich presence for media players
Go to file
EinTim 0c274c55c5
MACOS: fix set CMAKE_OSX_DEPLOYMENT_TARGET
2024-11-06 22:28:59 +01:00
cmake tray icon and resources 2024-11-02 17:17:12 +01:00
img added readme 2024-11-06 15:40:51 +01:00
osx Finished mac os support 2024-11-06 13:01:34 +01:00
rsrc tray icon and resources 2024-11-02 17:17:12 +01:00
src LINUX: add system bus support 2024-11-06 19:03:01 +01:00
vendor unfinished linux backend 2024-11-05 20:22:11 +01:00
win windows app icon finished 2024-11-06 13:07:31 +01:00
.clang-format add project files 2024-11-01 14:10:00 +01:00
.gitignore Finished mac os support 2024-11-06 13:01:34 +01:00
.gitmodules unfinished linux backend 2024-11-05 20:22:11 +01:00
CMakeLists.txt MACOS: fix set CMAKE_OSX_DEPLOYMENT_TARGET 2024-11-06 22:28:59 +01:00
LICENSE Add LICENSE 2024-11-06 12:00:41 +01:00
README.md README: add contributing part 2024-11-06 15:59:39 +01:00
settings.example.json added readme 2024-11-06 15:40:51 +01: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. In the future I want to add an option to the ui to add custom apps.

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.

Adding custom apps to the settings.json

The config is currently located in the same folder as PlayerLink, this will be changed in a future release. An example on how to add custom apps to the json 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
    # for a debug build
    cmake --build build
    

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 Aurora's MusicRPC and her project may provide a better experience when being on Mac OS only.