Skip to content

TomGUN02/PlexPulse

Repository files navigation

PlexPulse

PlexPulse

Linux: Plex → Discord Rich Presence (movies, TV, music / Plexamp)

Latest release License

Download

Most users: grab the AppImage from GitHub Releases — no Python or build tools required.

  1. Download PlexPulse-x86_64.AppImage
  2. chmod +x PlexPulse-x86_64.AppImage
  3. Run it (double-click or ./PlexPulse-x86_64.AppImage)

That’s the full install for normal use. The file is portable (x86_64 Linux).

Other ways to get it

Method Who it’s for
AppImage (above) Everyone on desktop Linux; best default
From source (Python + venv) Developers, packagers, or if you prefer pip
CI artifact Testing a build without tagging: ActionsRelease workflow → latest run → PlexPulse-x86_64 artifact

There is no Flatpak/Flathub package in this repo yet; AppImage + source are the supported options.


Features

  • Movies, TV shows, and music
  • Poster art (temporary upload via Litterbox for large Discord images)
  • Per-user filtering (use your Plex user for correct Discord text; “all users” only if you really want every session on the server) and multi-server support
  • Plexamp
  • Privacy mode (hide presence)
  • Setup wizard (Plex OAuth)
  • Poster caching
  • System tray icon by default (--notray for headless / no tray)

Requirements

  • Linux (X11/Wayland with a working systray where applicable)
  • Discord running with the official client (IPC pipe for Rich Presence)
  • A Plex account

Installation from source

If you already have Python 3:

git clone https://github.com/TomGUN02/PlexPulse.git
cd PlexPulse
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py

Or use the launcher (no need to activate each time if venv exists):

./plexpulse

Headless (no tray, logs in the terminal): python main.py --notray

Desktop / app menu (no terminal window)

chmod +x plexpulse scripts/install-desktop.sh
./scripts/install-desktop.sh

Installs ~/.local/share/applications/PlexPulse.desktop pointing at ./plexpulse.

Commands (when a daemon is already running)

Command Effect
status Current status
pause Toggle privacy mode
reconnect Reconnect to Plex and Discord
reset Delete config and stop the daemon
stop Stop the daemon

Example: python main.py status


Building (optional)

Only needed if you package the app yourself or hack on the binary. End users should use Download.

PyInstaller (single Linux binary)

pip install -r requirements-dev.txt
pyinstaller --clean --noconfirm PlexPulse.spec
# → dist/PlexPulse

AppImage (portable bundle)

Uses the PyInstaller binary above, then appimagetool (not the old AppImageKit):

# One-time: download appimagetool-x86_64.AppImage, chmod +x, then e.g.:
export APPIMAGETOOL="$HOME/path/to/appimagetool-x86_64.AppImage"

chmod +x packaging/appimage/build-appimage.sh
./packaging/appimage/build-appimage.sh
# → dist/PlexPulse-x86_64.AppImage

If appimagetool is on your PATH, you can omit APPIMAGETOOL.

Compatibility: AppImages built on a newer glibc may not run on very old distributions. CI uses Ubuntu 22.04 for a reasonable baseline.

Gear Lever won’t install the AppImage?

Gear Lever sometimes refuses metadata extraction. Try Settings → disable “safe mechanisms to load metadata”, or use Gear Lever 4.2.2+. You can always run the AppImage with chmod +x and execute it directly.

Discord Rich Presence

The app uses the PlexPulse Discord application ID for Rich Presence assets. It is set in code; if you fork and create your own Discord application, replace it in main.py.

Privacy

  • Your Plex token is stored in ~/.config/PlexPulse/config.json. Do not share this file.
  • Posters are uploaded to a temporary host (Litterbox, time-limited) so Discord can show large images; review their terms if you have strict requirements.

License

GNU GPL v3 — see LICENSE.

About

PlexPulse is a Linux desktop app that shows your current Plex activity as **Discord Rich Presence** (movies, TV, music / Plexamp).

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors