Skip to content

phin05/discord-rich-presence-plex

Repository files navigation

Discord Rich Presence for Plex

Discord Rich Presence for Plex (DRPP) is an application that displays your Plex status on Discord using Rich Presence.

Latest Release Build Status

Showcase

Features

  • Automatically displays your Plex playback activity (movies, TV shows, music, clips) on Discord with poster artwork, progress, buttons, external links, and metadata.
  • Web-based user interface for managing all settings, interactive Plex authentication, and viewing live logs.
  • Ability to customise all fields shown in your Rich Presence for each media type using template strings. [Example]
  • Support for Windows, Linux (including Docker), and macOS.

Usage

Getting Started

If you're on Linux, you can run DRPP with Docker.

  1. Download the latest release for your platform and extract it.
  2. Run the executable file.
  3. Open the web interface to configure DRPP:
    • Click the DRPP icon in your system tray and select Web UI, or
    • Navigate to http://localhost:8040, or
    • Run the executable file again.
  4. Click Add User and complete the interactive Plex authentication flow.

On Windows and Linux, DRPP has an icon in the system tray. Clicking this allows you to launch the web interface in your default browser.

Information about each config property and templating is available in the web interface.

The web interface is meant for local access only and must not be exposed to the internet. Even if you expose it, all connections from external networks are blocked by default.

Discord Setup

Discord must be running on the same machine as DRPP.

The "Share my activity" setting must be enabled in Discord for Rich Presence to work.

Navigate to Discord Settings → Activity Settings → Activity Privacy to enable it.

CLI Flags

Flag Environment Variable Default Value Description
--data-dir DRPP_DATA_DIR drpp in user config directory
User config directory path%APPDATA% on Windows
$XDG_CONFIG_HOME or $HOME/.config on Linux
$HOME/Library/Application Support on macOS
Path to data directory
--config-file DRPP_CONFIG_FILE config.yml in data directory Path to config file
--cache-file DRPP_CACHE_FILE cache.json in data directory Path to cache file
--log-file DRPP_LOG_FILE Path to log file
--disable-web-ui DRPP_DISABLE_WEB_UI false Disable web interface
--disable-systray DRPP_DISABLE_SYSTRAY false Disable system tray icon

Environment variables take precedence over default values but are overridden by explicitly passed flags.

Docker

Image

ghcr.io/phin05/discord-rich-presence-plex

Docker Compose Example

services:
  drpp:
    container_name: drpp
    image: ghcr.io/phin05/discord-rich-presence-plex:latest
    restart: unless-stopped
    ports:
      - 127.0.0.1:8040:8040
    environment:
      DRPP_UID: 1000
      DRPP_GID: 1000
    volumes:
      - ./data:/app/data
      - /run/user/1000:/run/app

Once DRPP is running, navigate to http://localhost:8040. Click Add User and complete the interactive Plex authentication flow.

Make sure to bind the port only to 127.0.0.1 as shown above.

Volumes

Path Purpose
/app/data Directory for persistent config and cache storage
/run/app Discord's runtime directory for inter-process communication

Discord's runtime directory is determined by the first set environment variable from the list below, checked in the environment where Discord is running:

  1. XDG_RUNTIME_DIR
  2. TMPDIR
  3. TMP
  4. TEMP

If none are set, /tmp is used.

For example, if XDG_RUNTIME_DIR is /run/user/1000, mount that directory into the container at /run/app.

Environment Variables

Variable Description
DRPP_UID UID of the user running Discord (find by running id)
DRPP_GID GID of the user running Discord (find by running id)
DRPP_NO_RUNTIME_DIR_CHOWN Set to true to skip ownership change of /run/app

When both DRPP_UID and DRPP_GID are set, DRPP changes ownership of /run/app and /app to match the specified UID and GID to prevent permission issues.

Containerised Discord

To run Discord in a container as well, mount a shared directory from the host into both the Discord container (as Discord's runtime directory) and the DRPP container (at /run/app). Ensure that the shared directory is owned by the user the containerised Discord process runs as.

Example

Docker Compose example using kasmweb/discord

services:
  kasmweb-discord:
    container_name: kasmweb-discord
    image: kasmweb/discord:1.14.0
    restart: unless-stopped
    ports:
      - 127.0.0.1:6901:6901
    shm_size: 512m
    environment:
      VNC_PW: password
      XDG_RUNTIME_DIR: /run/user/1000
    volumes:
      - ./discord:/home/kasm-user/.config/discord
      - ./runtime:/run/user/1000
    user: 0:0
    entrypoint: sh -c "chown -R kasm-user:kasm-user /home/kasm-user && chmod 700 /run/user/1000 && chown -R kasm-user:kasm-user /run/user/1000 && su kasm-user -c '/dockerstartup/kasm_default_profile.sh /dockerstartup/vnc_startup.sh /dockerstartup/kasm_startup.sh'"
  drpp:
    container_name: drpp
    image: ghcr.io/phin05/discord-rich-presence-plex:latest
    restart: unless-stopped
    ports:
      - 127.0.0.1:8040:8040
    volumes:
      - ./data:/app/data
      - ./runtime:/run/app:ro
    depends_on:
      - kasmweb-discord

Docker on Windows and macOS

DRPP's container image is Linux-based. Docker uses virtualisation to run Linux containers on Windows and macOS. In such cases, for DRPP to communicate with Discord, Discord needs to run in a Linux container as well, as per the instructions above.

Other Information

Image Upload Providers

DRPP downloads poster images from Plex and uploads them to an external image host for displaying in Discord. The following providers are available:

Antivirus False Positives

DRPP is written in Go, and unfortunately, antivirus programs frequently misidentify compiled Go binaries.

This issue is directly addressed in Go's official documentation:

Why does my virus-scanning software think my Go distribution or compiled binary is infected?

This is a common occurrence, especially on Windows machines, and is almost always a false positive. Commercial virus scanning programs are often confused by the structure of Go binaries, which they don’t see as often as those compiled from other languages.

In any case, if you believe the report is in error, please report a bug to the supplier of your virus scanner. Maybe in time virus scanners can learn to understand Go programs.

If you encounter this false positive issue, add an exception for DRPP's executable in your antivirus settings.

If you'd like to verify the safety of DRPP, everything is fully transparent:

  • You can inspect the complete source code in this repository.
  • The released executables are built automatically using GitHub Actions. [Workflow Runs]
  • GitHub generates attestations to prove that the released executables are built using the exact code and automated workflow you see in this repository. [Attestations]

About

Displays your Plex status on Discord using Rich Presence

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages