XMMS2 Client:dxmms2

From XMMS2

Jump to: navigation, search

Dxmms2 is a shell script that allows you to browse and search current playlist, all playlist and whole medialib. It is handy for integrating to keyboard-shortcut based enviroment.

It uses dmenu with multiline patch. Gentoo ebuild patches can be found here.

Usage:

dxmms2 list
 to list current playlist. Selecting song jumps to it.
dxmms2 playlist
  to list playlists. Selecting one activates it.
dxmms2 medialib
  to search medialib. Selecting song adds them to active playlist.
#!/bin/bash

## if you wish to start g2xosd here
#pidof gx2osd || nohup gx2osd &>/dev/null &

menu() {
	STYLE="$1"
	shift
	TITLE="$1"
	shift
	DATA="$1"
	shift

	LINES=$(( `wc -l <<<"$DATA"` ))
	LINES=$(( $LINES > 35 ? 35 : $LINES ))
	case "$STYLE" in
		(multi) dmenu -i -ms -nl -p "$TITLE" -l "$LINES" "$@" <<<"$DATA";;
		(single) dmenu -i -nl -p "$TITLE" -l "$LINES" "$@" <<<"$DATA";;
		(line) dmenu -i -p "$TITLE" "$@" <<<"$DATA";;
	esac
}

list(){
	menu single "XMMS2 playlist `xmms2 playlist active`:" "`xmms2 list "$@" | grep '\['`" | sed 's|^..\[\([^/]*\).*$|\1|' | xargs -L1 xmms2 jump
	xmms2 play
}

playlist() {
	menu single "XMMS2 playlists:" "`xmms2 playlist list`" "$@" | sed 's/^[ ->]*//' | xargs -L1 xmms2 playlist load
}

medialib() {
	menu multi "XMMS2 Search:" "`xmms2 mlib search '*'`" "$@" | awk -F '|' '{print $1}' | xargs -L1 xmms2 addid
}

RUN="$1"
shift
"$RUN" "$@"