1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
# put this in your bashrc for bash tab completion with mpc
# $ cat mpc-bashrc >> ~/.bashrc
#export MPD_HOST="127.0.0.1"
#export MPD_PORT="6600"
_mpdadd_complete_func ()
{
cur="${COMP_WORDS[COMP_CWORD]}"
first=${COMP_WORDS[1]}
hold="";
# add more escape stuff as needed:
scrub='s/\([\\\>\\\<\\\(\\\)\\\";]\)/\\\1/g';
case "$first" in
add)
hold=`mpc tab ${cur}`;
COMPREPLY=($(compgen -W "${hold}" | sed "$scrub"))
return 0
;;
play|del|move)
hold=`mpc playlist | sed 's/\#\([[:digit:]]\+\).*/\1/g'` # | grep "^${cur}"`
COMPREPLY=($(compgen -W "${hold}" "${cur}"))
return 0
;;
# TODO add trailing 's' for seconds in seek (total song time needed)
seek|volume)
COMPREPLY=($(compgen -W "`seq 0 100; seq -f +%g 0 100; seq -f -%g 0 100`" "${cur}"))
return 0
;;
# TODO get total song time and use that as a limit
crossfade)
COMPREPLY=($(compgen -W "`seq 0 99`" "${cur}"))
return 0
;;
ls)
if [ "x$cur" = "x" ]; then
hold=`mpc ls`;
else
hold=`mpc lstab ${cur}`;
fi
COMPREPLY=($(compgen -W "${hold}" | sed "$scrub"))
return 0
;;
search)
COMPREPLY=($(compgen -W "album artist title filename" "${cur}"))
return 0
;;
load|save|rm)
if [ "x$cur" = "x" ]; then
hold=`mpc lsplaylists`;
else
hold=`mpc loadtab ${cur}`;
fi
COMPREPLY=($(compgen -W "${hold}" | sed "$scrub"))
return 0
;;
repeat|random)
COMPREPLY=($(compgen -W "0 1 true false yes no on off" "${cur}"))
return 0
;;
*)
hold=`mpc help 2>&1 | grep "^mpc [a-z]\+ " | awk '{print $2}'`;
COMPREPLY=($(compgen -W "${hold} status" ${cur}))
return 0
;;
esac
}
complete -F _mpdadd_complete_func mpc
|