Download:
xhippo-3.3.tar.gz
(408K,
MD5sum 28ef26e3a0199daa9e5535a8b682bffe,
GPG signature)
CVS snapshots: ChangeLog, latest snapshot, or browse all snapshots
About xhippo
GNU xhippo is a generic GTK-based playlist manager for Unix-like systems; it's been reported to work on Linux, FreeBSD, NetBSD and IRIX. It's capable of driving most command-line players (for instance, mpg123, xmp, timidity or ogg123). It supports XMMS-style playlists, recursive playlist inclusion, interactive playlist editing, GNOME/KDE/ROX drag-and-drop, and a variety of other interesting features.
You might like to look at xhippo's page on gnu.org. I announce new versions of xhippo on Freshmeat.
xhippo is also available for download from ftp.gnu.org.
Screenshots
A typical GTK1 xhippo screenshot:

A development version of xhippo using GTK2:

The same development version running natively on MacOS X:

Future plans
These should be considered provisional; at the time of writing, I'm only aware of one problem with the current xhippo release (it doesn't support the latest version of ID3Lib).
Release 3.3
- Add madplay ID3 reading support (done).
- Add basic preferences editing (done).
- Add optional GTK2 support (done).
- Fix drag-and-drop bug with hostnames (from newer ROX-Filer, for instance) (done).
- Sort out the autoconf setup so that it generates a
config.hrather than 30 lines of compiler options (done).
Release 3.4 or 4.0, depending (i.e. bugfixes)
- If you click on a song to start playing from stopped that wasn't in the
songs that were visible when they were added, the song centred in the
originally-visible bit plays instead. (To reproduce: start xhippo, drop my huge
"songs" dir into the window, scroll down and click on a song.) Investigation
shows that
handle_tree_selectis getting a spurious call where row is 0 the first time. The fix is to handle clicks on the list ourself, and not worry about the (unreliable) selection change notification (done). - If you start in mini mode, start playing, then switch out of mini mode, the right song isn't scrolled into view. (Reported by Matthew Slowe.) The rework for the previous bug ended up fixing this anyway (done).
- Don't bother setting the window position if savewinstate is off (reported by Ramsay Taylor) (done).
- Create the
~/.xhippodirectory if it doesn't already exist. - "%d files in list" isn't updated when you add songs individually (say, by drag and drop).
- Player option to use SIGINT to kill rather than SIGTERM; this apparently works better with ogg123.
- Mark suggested "non-random" randomisation: pick randomly, but avoid picking the same song title or group. This wouldn't be too hard to do. It would also be nice to make the history links into a doubly- (rather than singly-) linked list, so that "Next" picks the same next as before.
update_windowshould probably free theGtkTreePathit allocates.- Instead of using a pipe for synchronisation, just block SIGCHLD.
- Optionally use iconv to convert filenames from a specified charset to UTF-8.
- Sort groups of files as they are added (rather than sorting the entire list). This is useful if I drop an album into xhippo to listen to -- I want the album itself in order, but I don't want it to interleave itself with the album I'm currently listening to!
- Handle out-of-memory more gracefully (the easiest way to do this is probably to add wrappers around malloc, realloc and strdup, for now).
- Fix
doc/distribution problems (i.e. distribute it properly). - The
last_row_clicked == rowtest is wrong: if you clear the playlist in between clicks, it'll get confused (which, presumably, is why it breaks if you clear the list, add items, then try to click on the first item). - The paths in Makefile.am should use the more specific variables.
Release 4.0
- Move to double-click plays (like HippoPlayer, and more HIG-ish). This would remove most of the odd list behaviour that we have to work around.
- Support selecting multiple files for moving and deletion.
- Maybe support drag-and-drop for moving files around in the list.
- Optional URL-decoding of dropped URLs, to make DnD from Konqueror work.
- Remove dependency on
nftw, which BSD doesn't have. - Sort out function arguments -- many more need to be declared
const. - Drop support for GTK1 and GNOME.
- Drop support for all ID3 libraries except the madplay one.
- Add preferences saving support to
$HOME/xhippo/config.auto. - Add an
include:directive to the config file, and make xhippo loadconfig.autoif no config file can be found. (Think about editing players.) - Remove "add file" and "add directory", and just have "add" (both in the GUI and on the command line, as it currently does for DnD).
- Make the default action on the command line "add to list"; require
-Lor similar for "load playlist". (Alternatively, have some sort of heuristic for detecting playlists, so we could support DnD for them too -- a simple solution would be "if it doesn't have a known extension and it looks like a list of filenames, then it's a playlist".) - Add support for Ogg metadata.
- Move all config editing into the GUI; remove non-declarative stuff from config file.
- Remove most command-line options in favour of one which simply specifies a config file line to use.
- "Anti-mini" mode where the window just shows the list, and all the actions are on the context menu (with hotkeys).
- An alternative approach to the config dialog: have a config submenu for the (useful) boolean options.
- Collapse modes and attributes -- for instance, the mini-on-startup mode flag can be used instead of attribute_mini, and the window position stuff is really settings.
Future ideas
- Rewrite the whole thing from scratch.
- XDS (ROX-style) save support.
- Replace all filename-mangling options with regular expressions. (Likewise for sorting.)
- Actually use multiple columns in the list (so "sort by artist" becomes "click on appropriate heading in list").
- Graphical buttons, as per HippoPlayer.
- More translations.
- Optionally show the current song in the window title, so the status line could be hidden.
- Detect players failing to start.
- Ratings for songs. ("I like this", "never play this again", etc.).
- Searching the playlist (have a hideable search bar, and show only the matching songs).
- Audio-to-stdout support, to permit icecast streaming.