From 855554ac101ca9cc9f983d3b9f5e3cca97da34c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Fri, 17 Oct 2014 20:45:18 +0200 Subject: [PATCH 1/2] build-sys: Alias bash-completion for all PulseAudio commands Bash-completion 1.90 introduced support for on-demand loading of completions. Install the completion file as 'pulseaudio' to match the main command, and create symlinks as aliases for other supported commands in order to support the new system. --- Makefile.am | 14 +- configure.ac | 4 + shell-completion/bash/pulseaudio | 570 +++++++++++++++++++++++++ shell-completion/pulseaudio-bash-completion.sh | 570 ------------------------- 4 files changed, 587 insertions(+), 571 deletions(-) create mode 100644 shell-completion/bash/pulseaudio delete mode 100644 shell-completion/pulseaudio-bash-completion.sh diff --git a/Makefile.am b/Makefile.am index 07dc73f..665736d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -62,7 +62,19 @@ cmakedir = $(libdir)/cmake/PulseAudio cmake_DATA = PulseAudioConfig.cmake PulseAudioConfigVersion.cmake bashcompletiondir=$(sysconfdir)/bash_completion.d -dist_bashcompletion_DATA = shell-completion/pulseaudio-bash-completion.sh +dist_bashcompletion_DATA = shell-completion/bash/pulseaudio + +install-bashcompletion-aliases: + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/pactl + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/pacmd + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/pasuspender + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/padsp + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/pacat + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/paplay + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/parec + $(LN_S) -f pulseaudio $(DESTDIR)$(bashcompletiondir)/parecord + +install-data-hook: install-bashcompletion-aliases zshcompletiondir=@zshcompletiondir@ dist_zshcompletion_DATA = shell-completion/zsh/_pulseaudio diff --git a/configure.ac b/configure.ac index 74bea71..e78c754 100644 --- a/configure.ac +++ b/configure.ac @@ -74,6 +74,10 @@ AM_SILENT_RULES([yes]) AC_PROG_MKDIR_P +# ln -s + +AC_PROG_LN_S + # CC AC_PROG_CC diff --git a/shell-completion/bash/pulseaudio b/shell-completion/bash/pulseaudio new file mode 100644 index 0000000..7775b08 --- /dev/null +++ b/shell-completion/bash/pulseaudio @@ -0,0 +1,570 @@ +#!/bin/bash + +__cards () { + while IFS=$'\t' read idx name _; do + printf "%s %s\n" "$idx" "$name" + done < <(pactl list cards short 2> /dev/null) +} + +__sinks () { + while IFS=$'\t' read _ name _ _ _; do + printf "%s\n" "$name" + done < <(pactl list sinks short 2> /dev/null) +} + +__sinks_idx () { + while IFS=$'\t' read idx _ _ _ _; do + printf "%s\n" "$idx" + done < <(pactl list sinks short 2> /dev/null) +} + +__sources () { + while IFS=$'\t' read _ name _ _ _; do + printf "%s\n" "$name" + done < <(pactl list sources short 2> /dev/null) +} + +__sink_inputs () { + while IFS=$'\t' read idx _ _ _ _; do + printf "%s\n" "$idx" + done < <(pactl list sink-inputs short 2> /dev/null) +} + +__source_outputs () { + while IFS=$'\t' read idx _ _ _ _; do + printf "%s\n" "$idx" + done < <(pactl list source-outputs short 2> /dev/null) +} + +__ports () { + pactl list cards 2> /dev/null | awk -e \ + '/^\tPorts:/ { + flag=1; next + } + + /^\t[A-Za-z]/ { + flag=0 + } + + flag { + if (/^\t\t[A-Za-z]/) + ports = ports substr($0, 3, index($0, ":")-3) " " + } + + END { + print ports + }' +} + +__profiles () { + pactl list cards 2> /dev/null | awk -e \ + '/^\tProfiles:/ { + flag=1; next + } + + /^\t[A-Za-z]/ { + flag=0 + } + + flag { + if (/^\t\t[A-Za-z]/) + profiles = profiles substr($0, 3, index($0, ": ")-3) " " + } + + END { + print profiles + }' +} + +__all_modules () { + while read name; do + name=${name%% *} + printf "%s\n" "$name" + done < <(pulseaudio --dump-modules 2> /dev/null) +} + +__loaded_modules () { + while IFS=$'\t' read idx name _; do + printf "%s %s\n" "$idx" "$name" + done < <(pactl list modules short 2> /dev/null) +} + +__resample_methods () { + while read name; do + printf "%s\n" "$name" + done < <(pulseaudio --dump-resample-methods 2> /dev/null) +} + +_pacat_file_formats () { + while IFS=$'\t' read name _; do + printf "%s\n" "$name" + done < <(pacat --list-file-formats 2> /dev/null) +} + +in_array() { + local i + for i in "${@:2}"; do + [[ $1 = "$i" ]] && return + done +} + +_pactl() { + local cur prev words cword preprev command + local comps + local flags='-h --help --version -s --server= --client-name=' + local list_types='short sinks sources sink-inputs source outputs cards + modules samples clients' + local commands=(stat info list exit upload-sample play-sample remove-sample + load-module unload-module move-sink-input move-source-output + suspend-sink suspend-source set-card-profile set-sink-port + set-source-port set-sink-volume set-source-volume + set-sink-input-volume set-source-output-volume set-sink-mute + set-source-mute set-sink-input-mute set-source-output-mute + set-sink-formats set-port-latency-offset subscribe help) + + _init_completion -n = || return + preprev=${words[$cword-2]} + + for word in "${COMP_WORDS[@]}"; do + if in_array "$word" "${commands[@]}"; then + command=$word + break + fi + done + + case $preprev in + list) COMPREPLY=($(compgen -W 'short' -- "$cur")) ;; + + play-sample) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + move-sink-input) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + move-source-output) + comps=$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-card-profile) + comps=$(__profiles) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-*-port) + comps=$(__ports) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-*-mute) COMPREPLY=($(compgen -W 'true false toggle' -- "$cur")) ;; + + set-sink-formats) + ;; #TODO + + set-port-*) + comps=$(__ports) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + --server) + compopt +o nospace + _known_hosts_real "$cur" + ;; + esac + [[ $COMPREPLY ]] && return 0 + + case $prev in + list) COMPREPLY=($(compgen -W '${list_types[*]}' -- "$cur")) ;; + + stat) COMPREPLY=($(compgen -W 'short' -- "$cur")) ;; + + upload-sample) _filedir ;; + + play-sample) ;; # TODO + + remove-sample) ;; # TODO + + load-module) + comps=$(__all_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + unload-module) + comps=$(__loaded_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-card*) + comps=$(__cards) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *sink-input*) + comps=$(__sink_inputs) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *source-output*) + comps=$(__source_outputs) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-sink-formats) + comps=$(__sinks_idx) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *sink*) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *source*) + comps=$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-port*) + comps=$(__cards) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + -s) + _known_hosts_real "$cur" ;; + esac + [[ $COMPREPLY ]] && return 0 + + case $cur in + --server=*) + cur=${cur#*=} + _known_hosts_real "$cur" + ;; + + -*) + COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) + [[ $COMPREPLY == *= ]] && compopt -o nospace + ;; + + *) + [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur")) + ;; + esac +} +complete -F _pactl pactl + +_pacmd() { + local cur prev words cword preprev command + local comps + local flags='-h --help --version' + local commands=(exit help list-modules list-cards list-sinks list-sources list-clients + list-samples list-sink-inputs list-source-outputs stat info + load-module unload-module describe-module set-sink-volume + set-source-volume set-sink-input-volume set-source-output-volume + set-sink-mute set-source-mut set-sink-input-mute + set-source-output-mute update-sink-proplist update-source-proplist + update-sink-input-proplist update-source-output-proplist + set-default-sink set-default-source kill-client kill-sink-input + kill-source-output play-sample remove-sample load-sample + load-sample-lazy load-sample-dir-lazy play-file dump + move-sink-input move-source-output suspend-sink suspend-source + suspend set-card-profile set-sink-port set-source-port + set-port-latency-offset set-log-target set-log-level set-log-meta + set-log-time set-log-backtrace) + _init_completion -n = || return + preprev=${words[$cword-2]} + + for word in "${COMP_WORDS[@]}"; do + if in_array "$word" "${commands[@]}"; then + command=$word + break + fi + done + + case $preprev in + play-sample|play-file) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + load-sample*) _filedir ;; + + move-sink-input) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + move-source-output) + comps=$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-card-profile) + comps=$(__profiles) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-*port*) + comps=$(__ports) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-*-mute) COMPREPLY=($(compgen -W 'true false' -- "$cur"));; + + set-sink-formats) + ;; #TODO + esac + + case $prev in + list-*) ;; + describe-module|load-module) + comps=$(__all_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + unload-module) + comps=$(__loaded_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + load-sample-dir-lazy) _filedir -d ;; + play-file) _filedir ;; + + *sink-input*) + comps=$(__sink_inputs) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *source-output*) + comps=$(__source_outputs) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *sink*) + comps=$(__sinks) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + *source*) + comps=$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-card*) + comps=$(__cards) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-port-*) + comps=$(__cards) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + set-log-target) + COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur")) + ;; + + set-log-level) + COMPREPLY=($(compgen -W '{0..4}' -- "$cur")) + ;; + + set-log-meta|set-log-time|suspend) + COMPREPLY=($(compgen -W 'true false' -- "$cur")) + ;; + esac + + case $cur in + -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;; + suspend) + COMPREPLY=($(compgen -W 'suspend suspend-sink suspend-source' -- "$cur")) + ;; + + load-sample) + COMPREPLY=($(compgen -W 'load-sample load-sample-lazy load-sample-dir-lazy' -- "$cur")) + ;; + + *) + [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur")) + ;; + esac +} +complete -F _pacmd pacmd + +_pasuspender () { + local cur prev + local flags='-h --help --version -s --server=' + + _init_completion -n = || return + + case $cur in + --server=*) + cur=${cur#*=} + _known_hosts_real "$cur" + ;; + + -*) + COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) + [[ $COMPREPLY == *= ]] && compopt -o nospace + ;; + esac + + case $prev in + -s) _known_hosts_real "$cur" ;; + esac +} +complete -F _pasuspender pasuspender + +_padsp () { + local cur prev + local flags='-h -s -n -m -M -S -D -d' + + _get_comp_words_by_ref cur prev + + case $cur in + -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;; + esac + + case $prev in + -s) _known_hosts_real "$cur" ;; + esac +} +complete -F _padsp padsp + +_pacat () { + local cur prev comps + local flags='-h --help --version -r --record -p --playback -v --verbose -s + --server= -d --device= -n --client-name= --stream-name= --volume= + --rate= --format= --channels= --channel-map= --fix-format --fix-rate + --fix-channels --no-remix --no-remap --latency= --process-time= + --latency-msec= --process-time-msec= --property= --raw --passthrough + --file-format= --list-file-formats --monitor-stream=' + + _init_completion -n = || return + + case $cur in + --server=*) + cur=${cur#*=} + _known_hosts_real "$cur" + ;; + + --device=*) + cur=${cur#*=} + comps=$(__sinks) + comps+=" "$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + --monitor-stream=*) + cur=${cur#*=} + comps=$(__sink_inputs) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + --rate=*) + cur=${cur#*=} + COMPREPLY=($(compgen -W '32000 44100 48000 9600 192000' -- "$cur")) + ;; + + --file-format=*) + cur=${cur#*=} + comps=$(_pacat_file_formats) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + --*=*) + ;; + + -*) + COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) + [[ $COMPREPLY == *= ]] && compopt -o nospace + ;; + *) _filedir ;; + esac + + case $prev in + -s) _known_hosts_real "$cur" ;; + -d) + comps=$(__sinks) + comps+=" "$(__sources) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + esac +} +complete -F _pacat pacat paplay parec parecord + +_pulseaudio() +{ + local cur prev words cword + local flags='-h --help --version --dump-conf --dump-resample-methods --cleanup-shm + --start -k --kill --check --system= -D --daemonize= --fail= --high-priority= + --realtime= --disallow-module-loading= --disallow-exit= --exit-idle-time= + --scache-idle-time= --log-level= -v --log-target= --log-meta= --log-time= + --log-backtrace= -p --dl-search-path= --resample-method= --use-pit-file= + --no-cpu-limit= --disable-shm= -L --load= -F --file= -C -n' + _init_completion -n = || return + + case $cur in + --system=*|--daemonize=*|--fail=*|--high-priority=*|--realtime=*| \ + --disallow-*=*|--log-meta=*|--log-time=*|--use-pid-file=*| \ + --no-cpu-limit=*|--disable-shm=*) + cur=${cur#*=} + COMPREPLY=($(compgen -W 'true false' -- "$cur")) + ;; + + --log-target=*) + cur=${cur#*=} + COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur")) + ;; + + --log-level=*) + cur=${cur#*=} + COMPREPLY=($(compgen -W '{0..4}' -- "$cur")) + ;; + + --dl-search-path=*) + cur=${cur#*=} + _filedir -d + ;; + + --file=*) + cur=${cur#*=} + _filedir + ;; + + --resample-method=*) + cur=${cur#*=} + comps=$(__resample_methods) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + --load=*) + cur=${cur#*=} + comps=$(__all_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + + --*=*) + ;; + + -*) + COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) + [[ $COMPREPLY == *= ]] && compopt -o nospace + ;; + esac + + case $prev in + -D) COMPREPLY=($(compgen -W 'true false' -- "$cur")) ;; + -p) _filedir -d ;; + -F) _filedir ;; + -L) + cur=${cur#*=} + comps=$(__all_modules) + COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) + ;; + esac +} +complete -F _pulseaudio pulseaudio + +#vim: set ft=zsh sw=4 ts=4 noet diff --git a/shell-completion/pulseaudio-bash-completion.sh b/shell-completion/pulseaudio-bash-completion.sh deleted file mode 100644 index 7775b08..0000000 --- a/shell-completion/pulseaudio-bash-completion.sh +++ /dev/null @@ -1,570 +0,0 @@ -#!/bin/bash - -__cards () { - while IFS=$'\t' read idx name _; do - printf "%s %s\n" "$idx" "$name" - done < <(pactl list cards short 2> /dev/null) -} - -__sinks () { - while IFS=$'\t' read _ name _ _ _; do - printf "%s\n" "$name" - done < <(pactl list sinks short 2> /dev/null) -} - -__sinks_idx () { - while IFS=$'\t' read idx _ _ _ _; do - printf "%s\n" "$idx" - done < <(pactl list sinks short 2> /dev/null) -} - -__sources () { - while IFS=$'\t' read _ name _ _ _; do - printf "%s\n" "$name" - done < <(pactl list sources short 2> /dev/null) -} - -__sink_inputs () { - while IFS=$'\t' read idx _ _ _ _; do - printf "%s\n" "$idx" - done < <(pactl list sink-inputs short 2> /dev/null) -} - -__source_outputs () { - while IFS=$'\t' read idx _ _ _ _; do - printf "%s\n" "$idx" - done < <(pactl list source-outputs short 2> /dev/null) -} - -__ports () { - pactl list cards 2> /dev/null | awk -e \ - '/^\tPorts:/ { - flag=1; next - } - - /^\t[A-Za-z]/ { - flag=0 - } - - flag { - if (/^\t\t[A-Za-z]/) - ports = ports substr($0, 3, index($0, ":")-3) " " - } - - END { - print ports - }' -} - -__profiles () { - pactl list cards 2> /dev/null | awk -e \ - '/^\tProfiles:/ { - flag=1; next - } - - /^\t[A-Za-z]/ { - flag=0 - } - - flag { - if (/^\t\t[A-Za-z]/) - profiles = profiles substr($0, 3, index($0, ": ")-3) " " - } - - END { - print profiles - }' -} - -__all_modules () { - while read name; do - name=${name%% *} - printf "%s\n" "$name" - done < <(pulseaudio --dump-modules 2> /dev/null) -} - -__loaded_modules () { - while IFS=$'\t' read idx name _; do - printf "%s %s\n" "$idx" "$name" - done < <(pactl list modules short 2> /dev/null) -} - -__resample_methods () { - while read name; do - printf "%s\n" "$name" - done < <(pulseaudio --dump-resample-methods 2> /dev/null) -} - -_pacat_file_formats () { - while IFS=$'\t' read name _; do - printf "%s\n" "$name" - done < <(pacat --list-file-formats 2> /dev/null) -} - -in_array() { - local i - for i in "${@:2}"; do - [[ $1 = "$i" ]] && return - done -} - -_pactl() { - local cur prev words cword preprev command - local comps - local flags='-h --help --version -s --server= --client-name=' - local list_types='short sinks sources sink-inputs source outputs cards - modules samples clients' - local commands=(stat info list exit upload-sample play-sample remove-sample - load-module unload-module move-sink-input move-source-output - suspend-sink suspend-source set-card-profile set-sink-port - set-source-port set-sink-volume set-source-volume - set-sink-input-volume set-source-output-volume set-sink-mute - set-source-mute set-sink-input-mute set-source-output-mute - set-sink-formats set-port-latency-offset subscribe help) - - _init_completion -n = || return - preprev=${words[$cword-2]} - - for word in "${COMP_WORDS[@]}"; do - if in_array "$word" "${commands[@]}"; then - command=$word - break - fi - done - - case $preprev in - list) COMPREPLY=($(compgen -W 'short' -- "$cur")) ;; - - play-sample) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - move-sink-input) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - move-source-output) - comps=$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-card-profile) - comps=$(__profiles) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-*-port) - comps=$(__ports) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-*-mute) COMPREPLY=($(compgen -W 'true false toggle' -- "$cur")) ;; - - set-sink-formats) - ;; #TODO - - set-port-*) - comps=$(__ports) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - --server) - compopt +o nospace - _known_hosts_real "$cur" - ;; - esac - [[ $COMPREPLY ]] && return 0 - - case $prev in - list) COMPREPLY=($(compgen -W '${list_types[*]}' -- "$cur")) ;; - - stat) COMPREPLY=($(compgen -W 'short' -- "$cur")) ;; - - upload-sample) _filedir ;; - - play-sample) ;; # TODO - - remove-sample) ;; # TODO - - load-module) - comps=$(__all_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - unload-module) - comps=$(__loaded_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-card*) - comps=$(__cards) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *sink-input*) - comps=$(__sink_inputs) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *source-output*) - comps=$(__source_outputs) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-sink-formats) - comps=$(__sinks_idx) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *sink*) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *source*) - comps=$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-port*) - comps=$(__cards) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - -s) - _known_hosts_real "$cur" ;; - esac - [[ $COMPREPLY ]] && return 0 - - case $cur in - --server=*) - cur=${cur#*=} - _known_hosts_real "$cur" - ;; - - -*) - COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) - [[ $COMPREPLY == *= ]] && compopt -o nospace - ;; - - *) - [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur")) - ;; - esac -} -complete -F _pactl pactl - -_pacmd() { - local cur prev words cword preprev command - local comps - local flags='-h --help --version' - local commands=(exit help list-modules list-cards list-sinks list-sources list-clients - list-samples list-sink-inputs list-source-outputs stat info - load-module unload-module describe-module set-sink-volume - set-source-volume set-sink-input-volume set-source-output-volume - set-sink-mute set-source-mut set-sink-input-mute - set-source-output-mute update-sink-proplist update-source-proplist - update-sink-input-proplist update-source-output-proplist - set-default-sink set-default-source kill-client kill-sink-input - kill-source-output play-sample remove-sample load-sample - load-sample-lazy load-sample-dir-lazy play-file dump - move-sink-input move-source-output suspend-sink suspend-source - suspend set-card-profile set-sink-port set-source-port - set-port-latency-offset set-log-target set-log-level set-log-meta - set-log-time set-log-backtrace) - _init_completion -n = || return - preprev=${words[$cword-2]} - - for word in "${COMP_WORDS[@]}"; do - if in_array "$word" "${commands[@]}"; then - command=$word - break - fi - done - - case $preprev in - play-sample|play-file) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - load-sample*) _filedir ;; - - move-sink-input) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - move-source-output) - comps=$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-card-profile) - comps=$(__profiles) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-*port*) - comps=$(__ports) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-*-mute) COMPREPLY=($(compgen -W 'true false' -- "$cur"));; - - set-sink-formats) - ;; #TODO - esac - - case $prev in - list-*) ;; - describe-module|load-module) - comps=$(__all_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - unload-module) - comps=$(__loaded_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - load-sample-dir-lazy) _filedir -d ;; - play-file) _filedir ;; - - *sink-input*) - comps=$(__sink_inputs) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *source-output*) - comps=$(__source_outputs) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *sink*) - comps=$(__sinks) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - *source*) - comps=$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-card*) - comps=$(__cards) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-port-*) - comps=$(__cards) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - set-log-target) - COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur")) - ;; - - set-log-level) - COMPREPLY=($(compgen -W '{0..4}' -- "$cur")) - ;; - - set-log-meta|set-log-time|suspend) - COMPREPLY=($(compgen -W 'true false' -- "$cur")) - ;; - esac - - case $cur in - -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;; - suspend) - COMPREPLY=($(compgen -W 'suspend suspend-sink suspend-source' -- "$cur")) - ;; - - load-sample) - COMPREPLY=($(compgen -W 'load-sample load-sample-lazy load-sample-dir-lazy' -- "$cur")) - ;; - - *) - [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur")) - ;; - esac -} -complete -F _pacmd pacmd - -_pasuspender () { - local cur prev - local flags='-h --help --version -s --server=' - - _init_completion -n = || return - - case $cur in - --server=*) - cur=${cur#*=} - _known_hosts_real "$cur" - ;; - - -*) - COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) - [[ $COMPREPLY == *= ]] && compopt -o nospace - ;; - esac - - case $prev in - -s) _known_hosts_real "$cur" ;; - esac -} -complete -F _pasuspender pasuspender - -_padsp () { - local cur prev - local flags='-h -s -n -m -M -S -D -d' - - _get_comp_words_by_ref cur prev - - case $cur in - -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;; - esac - - case $prev in - -s) _known_hosts_real "$cur" ;; - esac -} -complete -F _padsp padsp - -_pacat () { - local cur prev comps - local flags='-h --help --version -r --record -p --playback -v --verbose -s - --server= -d --device= -n --client-name= --stream-name= --volume= - --rate= --format= --channels= --channel-map= --fix-format --fix-rate - --fix-channels --no-remix --no-remap --latency= --process-time= - --latency-msec= --process-time-msec= --property= --raw --passthrough - --file-format= --list-file-formats --monitor-stream=' - - _init_completion -n = || return - - case $cur in - --server=*) - cur=${cur#*=} - _known_hosts_real "$cur" - ;; - - --device=*) - cur=${cur#*=} - comps=$(__sinks) - comps+=" "$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - --monitor-stream=*) - cur=${cur#*=} - comps=$(__sink_inputs) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - --rate=*) - cur=${cur#*=} - COMPREPLY=($(compgen -W '32000 44100 48000 9600 192000' -- "$cur")) - ;; - - --file-format=*) - cur=${cur#*=} - comps=$(_pacat_file_formats) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - --*=*) - ;; - - -*) - COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) - [[ $COMPREPLY == *= ]] && compopt -o nospace - ;; - *) _filedir ;; - esac - - case $prev in - -s) _known_hosts_real "$cur" ;; - -d) - comps=$(__sinks) - comps+=" "$(__sources) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - esac -} -complete -F _pacat pacat paplay parec parecord - -_pulseaudio() -{ - local cur prev words cword - local flags='-h --help --version --dump-conf --dump-resample-methods --cleanup-shm - --start -k --kill --check --system= -D --daemonize= --fail= --high-priority= - --realtime= --disallow-module-loading= --disallow-exit= --exit-idle-time= - --scache-idle-time= --log-level= -v --log-target= --log-meta= --log-time= - --log-backtrace= -p --dl-search-path= --resample-method= --use-pit-file= - --no-cpu-limit= --disable-shm= -L --load= -F --file= -C -n' - _init_completion -n = || return - - case $cur in - --system=*|--daemonize=*|--fail=*|--high-priority=*|--realtime=*| \ - --disallow-*=*|--log-meta=*|--log-time=*|--use-pid-file=*| \ - --no-cpu-limit=*|--disable-shm=*) - cur=${cur#*=} - COMPREPLY=($(compgen -W 'true false' -- "$cur")) - ;; - - --log-target=*) - cur=${cur#*=} - COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur")) - ;; - - --log-level=*) - cur=${cur#*=} - COMPREPLY=($(compgen -W '{0..4}' -- "$cur")) - ;; - - --dl-search-path=*) - cur=${cur#*=} - _filedir -d - ;; - - --file=*) - cur=${cur#*=} - _filedir - ;; - - --resample-method=*) - cur=${cur#*=} - comps=$(__resample_methods) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - --load=*) - cur=${cur#*=} - comps=$(__all_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - - --*=*) - ;; - - -*) - COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) - [[ $COMPREPLY == *= ]] && compopt -o nospace - ;; - esac - - case $prev in - -D) COMPREPLY=($(compgen -W 'true false' -- "$cur")) ;; - -p) _filedir -d ;; - -F) _filedir ;; - -L) - cur=${cur#*=} - comps=$(__all_modules) - COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur")) - ;; - esac -} -complete -F _pulseaudio pulseaudio - -#vim: set ft=zsh sw=4 ts=4 noet -- 2.1.2