# 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