███╗ ███╗██████╗ ██████╗ ██╗██████╗
████╗ ████║██╔══██╗██╔══██╗██║██╔════╝
██╔████╔██║██████╔╝██████╔╝██║███████╗
██║╚██╔╝██║██╔═══╝ ██╔══██╗██║╚════██║
██║ ╚═╝ ██║██║ ██║ ██║██║███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
S E N C E
A lightweight, feature-rich Discord Rich Presence (RPC) client for the Elisa Music Player (for now) on Linux.
Technically, it should work on any MPRIS-compatible player, but it needs to be tested on other players, plus it needs some more customization (like icons for the corresponding players). So, only for Elisa for now.
It also features cover art fetching from iTunes. If the cover isn't found on iTunes, it will be uploaded to Imgur and cached for future use, and then deleted from Imgur when the track is no longer playing!
✨ Automatically updates your Discord status with track title, artist, progress, playback state, and album art.
- ✨ Features
- 🖼 Preview
- 🚀 Installation
- 🛠 Management
- 🗑 Uninstallation
- 🧩 How it Works
- 📦 Requirements
- 🤝 Contributing
| Function | Status | Description |
|---|---|---|
| 🎵 Rich Metadata | ✔ | Track name, artist, album |
| 🖼 Smart Cover Art | ✔ | iTunes search fallback + local file upload |
| ⏱️ Seek Detection | ✔ | Correct timestamp calculation |
| 💤 Pause/Stop Logic | ✔ | Smart status hiding/switching |
| 🔥 Systemd Integration | ✔ | Background service without interface |
| 📦 Caching | ✔ | Minimizes API requests to save traffic |
| 🛠️ More players support | ❌ | Only Elisa for now |
- Clone the repository
git clone https://github.com/hyperboxed/mprissence.git
cd mprissence- Run the installer
chmod +x install.sh
./install.shThe script automatically:
- Checks DBus development headers
- Creates Python virtual environment
- Installs Python dependencies
- Registers a systemd user service
Check status:
systemctl --user status mprissenceView logs:
journalctl --user -u mprissence -fRestart:
systemctl --user restart mprissenceStop:
systemctl --user stop mprissencechmod +x uninstall.sh
./uninstall.shflowchart LR
A[Elisa Player] --> B[MPRIS / DBus]
B --> C[RPC Daemon]
C --> D[Discord IPC]
- Updates every second only when state changes
- Detects seek events and recalculates timestamps
- Clears presence when playback stops
- Persistent DBus session
- Cached artwork + delete-hashes
- Minimal CPU usage
-
Linux OS (Arch, Ubuntu, Fedora, etc.)
-
Python 3
-
DBus/MPRIS
-
Development headers:
- Debian/Ubuntu:
libdbus-1-dev libglib2.0-dev - Arch:
dbus-glib - Fedora:
dbus-devel
- Debian/Ubuntu:
Any PR's and issues are welcome, especially if you want to add even more features
Made with ❤️ for the Linux community <3
If you like this project, please leave a ⭐ on GitHub!
