How I got xmms to work on Debian 11

xmms is an ancient piece of software that has been abandoned, but unfortunately the supposed successor xmms2 does not just work, but instead requires me to take a course in its architecture first. So I decided to get xmms to work on a recent Linux distribution instead (which also takes a course:-).

I start out with a setup that had been working on my previous system (Debian 8; IIRC it was not available for Debian 8, either, and I somehow brought over xmms from an earlier system to Debian 8; to make this faster the next time, I am documenting it here), and I have the previous system's files available under /debian8 (replace this with whatever your old system is).

I have been using the OSS output plugin for xmms (it would probably be better to use the ALSA output driver, but that's for the next time), so I have to make sure that OSS emulation is there. This can be done by saying

    modprobe snd-pcm-oss
  
and maybe put this into /etc/rc.local (and you need to convince systemd to actually run rc.local, which recent Linux distributions tend not to include). But I actually took the same approach as I have apparently used on Debian 8: I put the following into /etc/modprobe.d/oss-compat.conf
softdep snd-pcm post: snd-pcm-oss
softdep snd-mixer post: snd-mixer-oss
softdep snd-seq post: snd-seq-midi snd-seq-oss
  

Next, I put the various plugins of xmms in a place where it finds them:

    ln -s /debian8/usr/lib/xmms /usr/lib/xmms
  
I also needed to tell xmms to use the OSS output plugin, by putting the following in ~/.xmms/config
    output_plugin=/debian8/usr/lib/xmms/Output/libOSS.so
  
After the previous step, it probably also works without the /debian8 part, but I found these steps roughly in reverse order.

Finally, I can start xmms with

    LANG=C LD_LIBRARY_PATH=/debian8/usr/lib /debian8/usr/bin/xmms &
  
The LANG=C is there because I have Latin-1 encoding in file names and playlists, and the result looks better with that. xmms definitely works with UTF-8, but I have not tested if it works well. The LD_LIBRARY_PATH is for various libraries outside /usr/lib/xmms.
Anton Ertl