xmms2 0.9.1 is out
Tl;DR: xmms2-0.9.1 is out and you can get it at https://github.com/xmms2/xmms2-devel/releases/tag/0.9.1!
xmms2 is a music player daemon with various plugins to support stream decoding and transformation.
xmms2 most basic usage
To play a song you need to add it to database and then play it:
$ xmms2 clear $ xmms2 add . $ xmms2 play
To check on current status:
$ xmms2 list ->[1/3096] mind.in.a.box - Lament for Lost Dreams (snippet) (00:26) Total playtime: 0:00:26 $ xmms2 status (n) jump to next song (p) jump to previous song (SPACE) toggle playback (ENTER) exit status mode Paused: mind.in.a.box - Lament for Lost Dreams (snippet): 00:05 of 00:26
xmms2 CLI has many more options:
xmms2 help usage: xmms2 <command> [args] Available commands: add current exit help info jump list move next pause play prev remove stop search seek toggle collection <subcommand> playlist <subcommand> server <subcommand> Type 'help <command>' for detailed help about a command.
You really want some frontend to manipulate the player.
I usually run a shell wrapper in a directory I want to play. Effectively I’m using my window manager as a frontend:
- mc in alacritty to run m in a directory I want to play: script
- i3 key bindings to navigate through song and playlist: config
- xmobar (with a formatter) as a status output.
xmms2 supports a ton of plugins to play all sorts of formats. Here is what I have installed (it’s not a complete list):
$ xmms2 server plugins airplay - Airport Express output plugin alsa - Advanced Linux Sound Architecture output plugin ao - libao output plugin apefile - Monkey's Audio file format demuxer asf - Advanced Systems Format demuxer asx - Playlist plugin for Advanced Stream Redirector files. avcodec - ffmpeg libavcodec decoder converter - Sample format converter cue - Playlist parser for cue files curl - HTTP transport using CURL diskwrite - Dumps audio data to disk equalizer - Equalizer effect faad - Advanced Audio Coding decoder file - Plain local file transport flac - Free Lossless Audio Codec decoder fluidsynth - MIDI synthesiser flv - Extracts an audio stream from an FLV gme - Game Music Emulator music decoder gvfs - Transport for glibs virtual filesystem html - Reads HTML playlists icymetaint - Decode & use shoutcast stream metadata id3v2 - ID3v2 tag container handler karaoke - Voice removal effect plugin m3u - Playlist parser for m3u's mad - MPEG Layer 1/2/3 decoder magic - Magic file identifier mid1 - MIDI file format-1 demuxer midsquash - Multitrack MIDI squasher mms - Microsoft Media Services xform modplug - Module file decoder mp4 - MPEG-4 Part 14 file format demuxer mpg123 - mpg123 decoder for MPEG 1.0/2.0/2.5 layer 1/2/3 audio nibbler - Discarding padding using auxdata startsamples/stopsamples normalize - Volume normalizer null - null output plugin nulstripper - Strips leading NUL bytes ofa - Open Fingerprint calculator opus - Xiph's Ogg/Opus decoder oss - OpenSoundSystem output plugin pls - Playlist parser for PLS files. pulse - Output to a PulseAudio server replaygain - Replaygain effect ringbuf - Buffer segment - Handling segment information specified by startms/stopms sndfile - Libsndfile decoder speex - Speex decoder tremor - Xiph's Ogg/Vorbis decoder (integer-only version) tta - True Audio Codec TTA file format parser visualization - visualization hook vorbis - Xiph's Ogg/Vorbis decoder wave - Wave decoder wavpack - WavPack decoder xml - XML plugin
xmms was a good player. But it’s upstream development stalled. It was using gtk-1 at the time when everyone else was migrating to gtk-2. A bunch of gtk-2 forks appeared and none looked close enough to xmms. Some had too thick UI buttons, some had problems playing enough audio formats I had. Most did not support xmms skins and were not able to present their status as a 16-pixel high window somewhere on the desktop.
xmms2 was a new project that aimed to be xmms done right architecturally. I read the initial announcement at the time and though it will eventually be just like xmms. Haha. I tried xmms2 out and was able to play all song formats I had. I was surprised to see how quickly it builds from source.
xmms2 felt incomplete as it planned but never implemented GUI client. Eventually abraca materialized but I never got to run it: I already settled on my set of CLI hacks to play things.
Eventually xmms2 development pace was slowing down. I was wondering if there are any direct alternatives to xmms2 out there. mpd looked like a close match. But when I tried it I found xmms2 snappier to add files to the database and to scroll along the playlists with i3 keybindings. I suspect mpd was not optimised for that use case. I never moved off xmms2. I still plan to add UNI module file format support to xmms2 via libmikmod or similar :)