21afe7650ad62a1dd4e28a24a84ad284d070a0cb
Winamp MPRIS Bridge
A Python-based bridge that provides an MPRIS2 interface for Winamp/WACUP on Linux (running via Wine/Proton). This allows Linux desktop environments (like KDE Plasma, GNOME, or any MPRIS-compatible media widget) to control playback and display track metadata.
Features
- Metadata Extraction: Primarily uses the Winamp window title for high-fidelity metadata (Artist, Album, Title).
- Playback Controls: Supports Play, Pause, Next, Previous, and Stop via the Winamp Web Interface.
- Live Position Tracking: Extrapolates playback position for smooth progress bars in your desktop's media widget.
- Robustness: Gracefully handles Winamp being offline and automatically reconnects when it starts.
- Systemd Integration: Can be run as a background user service.
Prerequisites
1. Winamp Web Interface Plugin
The bridge communicates with Winamp through the Winamp Web Interface plugin.
- Download: Winamp Web Interface v7.5.10
- Installation: Install the plugin in Winamp/WACUP.
- Configuration:
- Open Winamp Preferences -> Plug-ins -> General Purpose.
- Configure "Winamp Web Interface".
- Set a Username (default:
winamp) and Password (default:llama). - Ensure the server is running (default port:
5666).
2. Winamp/WACUP Title Formatting
To ensure the bridge can extract correct metadata, you must configure Winamp to show specific information in its window title.
- Open Winamp Preferences -> Titles.
- Set the Taskbar/Window title format to:
(Note: The separator between Artist, Album, and Title should be an en-dash
%artist%–%album%–%title% | %playback_time%/%length% - Winamp–or a simple dash-).
3. Linux Dependencies
Install the required Python libraries, wmctrl, and libnotify (for notifications):
# Python dependencies
pip install requests pydbus beautifulsoup4 pygobject
# System tools
sudo dnf install wmctrl libnotify # or sudo apt install wmctrl libnotify
Installation & Setup
- Clone or copy the script to a local directory (e.g.,
~/Scripts/winamp-mpris/). - Configure Credentials: If you changed the default username/password in the plugin, update the
AUTHvariable inwinamp_mpris.py.
Running Manually
python3 winamp_mpris.py
Running as a systemd User Service
- Install the service file:
mkdir -p ~/.config/systemd/user/ cp winamp-mpris.service ~/.config/systemd/user/ - Reload and Enable:
systemctl --user daemon-reload systemctl --user enable --now winamp-mpris.service - Monitor Logs:
journalctl --user -u winamp-mpris.service -f
Technical Details
- D-Bus Bus:
org.mpris.MediaPlayer2.winamp - Object Path:
/org/mpris/MediaPlayer2 - Polling Rate: 1 second (updates metadata from window title and checks Web UI for status).
Troubleshooting
- Controls not working: Ensure the Winamp Web Interface is accessible at
http://localhost:5666and the credentials in the script match your plugin settings. - No Metadata: Ensure
wmctrl -lcan see the Winamp window and the title matches the expected format. - KDE Plasma 6: If using Plasma 6 on Wayland, you may need to grant "Remote Control" permissions when prompted to allow
wmctrlto read window titles accurately.
Description
Languages
C++
81.3%
Python
9%
C
8.4%
HTML
0.8%
Shell
0.5%