153a5a1b3Sopenharmony_ci#!/bin/bash
253a5a1b3Sopenharmony_ci
353a5a1b3Sopenharmony_ci__cards () {
453a5a1b3Sopenharmony_ci    while IFS=$'\t' read idx name _; do
553a5a1b3Sopenharmony_ci        printf "%s %s\n" "$idx" "$name"
653a5a1b3Sopenharmony_ci    done < <(pactl list cards short 2> /dev/null)
753a5a1b3Sopenharmony_ci}
853a5a1b3Sopenharmony_ci
953a5a1b3Sopenharmony_ci__sinks () {
1053a5a1b3Sopenharmony_ci    while IFS=$'\t' read _ name _ _ _; do
1153a5a1b3Sopenharmony_ci        printf "%s\n" "$name"
1253a5a1b3Sopenharmony_ci    done < <(pactl list sinks short 2> /dev/null)
1353a5a1b3Sopenharmony_ci}
1453a5a1b3Sopenharmony_ci
1553a5a1b3Sopenharmony_ci__sinks_idx () {
1653a5a1b3Sopenharmony_ci    while IFS=$'\t' read idx _ _ _ _; do
1753a5a1b3Sopenharmony_ci        printf "%s\n" "$idx"
1853a5a1b3Sopenharmony_ci    done < <(pactl list sinks short 2> /dev/null)
1953a5a1b3Sopenharmony_ci}
2053a5a1b3Sopenharmony_ci
2153a5a1b3Sopenharmony_ci__sources () {
2253a5a1b3Sopenharmony_ci    while IFS=$'\t' read _ name _ _ _; do
2353a5a1b3Sopenharmony_ci        printf "%s\n" "$name"
2453a5a1b3Sopenharmony_ci    done < <(pactl list sources short 2> /dev/null)
2553a5a1b3Sopenharmony_ci}
2653a5a1b3Sopenharmony_ci
2753a5a1b3Sopenharmony_ci__sink_inputs () {
2853a5a1b3Sopenharmony_ci    while IFS=$'\t' read idx _ _ _ _; do
2953a5a1b3Sopenharmony_ci        printf "%s\n" "$idx"
3053a5a1b3Sopenharmony_ci    done < <(pactl list sink-inputs short 2> /dev/null)
3153a5a1b3Sopenharmony_ci}
3253a5a1b3Sopenharmony_ci
3353a5a1b3Sopenharmony_ci__source_outputs () {
3453a5a1b3Sopenharmony_ci    while IFS=$'\t' read idx _ _ _ _; do
3553a5a1b3Sopenharmony_ci        printf "%s\n" "$idx"
3653a5a1b3Sopenharmony_ci    done < <(pactl list source-outputs short 2> /dev/null)
3753a5a1b3Sopenharmony_ci}
3853a5a1b3Sopenharmony_ci
3953a5a1b3Sopenharmony_ci__ports () {
4053a5a1b3Sopenharmony_ci    pactl list cards 2> /dev/null | awk -- \
4153a5a1b3Sopenharmony_ci        '/^\tPorts:/ {
4253a5a1b3Sopenharmony_ci            flag=1; next
4353a5a1b3Sopenharmony_ci         }
4453a5a1b3Sopenharmony_ci
4553a5a1b3Sopenharmony_ci         /^\t[A-Za-z]/ {
4653a5a1b3Sopenharmony_ci             flag=0
4753a5a1b3Sopenharmony_ci         }
4853a5a1b3Sopenharmony_ci
4953a5a1b3Sopenharmony_ci         flag {
5053a5a1b3Sopenharmony_ci             if (/^\t\t[A-Za-z]/)
5153a5a1b3Sopenharmony_ci                 ports = ports substr($0, 3, index($0, ":")-3) " "
5253a5a1b3Sopenharmony_ci         }
5353a5a1b3Sopenharmony_ci
5453a5a1b3Sopenharmony_ci         END {
5553a5a1b3Sopenharmony_ci             print ports
5653a5a1b3Sopenharmony_ci         }'
5753a5a1b3Sopenharmony_ci}
5853a5a1b3Sopenharmony_ci
5953a5a1b3Sopenharmony_ci__profiles () {
6053a5a1b3Sopenharmony_ci    pactl list cards 2> /dev/null | awk -- \
6153a5a1b3Sopenharmony_ci        '/^\tProfiles:/ {
6253a5a1b3Sopenharmony_ci            flag=1; next
6353a5a1b3Sopenharmony_ci        }
6453a5a1b3Sopenharmony_ci
6553a5a1b3Sopenharmony_ci        /^\t[A-Za-z]/ {
6653a5a1b3Sopenharmony_ci            flag=0
6753a5a1b3Sopenharmony_ci        }
6853a5a1b3Sopenharmony_ci
6953a5a1b3Sopenharmony_ci        flag {
7053a5a1b3Sopenharmony_ci            if (/^\t\t[A-Za-z]/)
7153a5a1b3Sopenharmony_ci                profiles = profiles substr($0, 3, index($0, ": ")-3) " "
7253a5a1b3Sopenharmony_ci        }
7353a5a1b3Sopenharmony_ci
7453a5a1b3Sopenharmony_ci        END {
7553a5a1b3Sopenharmony_ci            print profiles
7653a5a1b3Sopenharmony_ci        }'
7753a5a1b3Sopenharmony_ci}
7853a5a1b3Sopenharmony_ci
7953a5a1b3Sopenharmony_ci__all_modules () {
8053a5a1b3Sopenharmony_ci    while read name; do
8153a5a1b3Sopenharmony_ci        name=${name%% *}
8253a5a1b3Sopenharmony_ci        printf "%s\n" "$name"
8353a5a1b3Sopenharmony_ci    done < <(pulseaudio --dump-modules 2> /dev/null)
8453a5a1b3Sopenharmony_ci}
8553a5a1b3Sopenharmony_ci
8653a5a1b3Sopenharmony_ci__loaded_modules () {
8753a5a1b3Sopenharmony_ci    while IFS=$'\t' read idx name _; do
8853a5a1b3Sopenharmony_ci        printf "%s %s\n" "$idx" "$name"
8953a5a1b3Sopenharmony_ci    done < <(pactl list modules short 2> /dev/null)
9053a5a1b3Sopenharmony_ci}
9153a5a1b3Sopenharmony_ci
9253a5a1b3Sopenharmony_ci__resample_methods () {
9353a5a1b3Sopenharmony_ci    while read name; do
9453a5a1b3Sopenharmony_ci        printf "%s\n" "$name"
9553a5a1b3Sopenharmony_ci    done < <(pulseaudio --dump-resample-methods 2> /dev/null)
9653a5a1b3Sopenharmony_ci}
9753a5a1b3Sopenharmony_ci
9853a5a1b3Sopenharmony_ci_pacat_file_formats () {
9953a5a1b3Sopenharmony_ci    while IFS=$'\t' read name _; do
10053a5a1b3Sopenharmony_ci        printf "%s\n" "$name"
10153a5a1b3Sopenharmony_ci    done < <(pacat --list-file-formats 2> /dev/null)
10253a5a1b3Sopenharmony_ci}
10353a5a1b3Sopenharmony_ci
10453a5a1b3Sopenharmony_ciin_array() {
10553a5a1b3Sopenharmony_ci    local i
10653a5a1b3Sopenharmony_ci    for i in "${@:2}"; do
10753a5a1b3Sopenharmony_ci        [[ $1 = "$i" ]] && return
10853a5a1b3Sopenharmony_ci    done
10953a5a1b3Sopenharmony_ci}
11053a5a1b3Sopenharmony_ci
11153a5a1b3Sopenharmony_ci_pactl() {
11253a5a1b3Sopenharmony_ci    local cur prev words cword preprev word command
11353a5a1b3Sopenharmony_ci    local comps
11453a5a1b3Sopenharmony_ci    local flags='-h --help --version -s --server= --client-name='
11553a5a1b3Sopenharmony_ci    local list_types='short sinks sources sink-inputs source-outputs cards
11653a5a1b3Sopenharmony_ci                    modules samples clients message-handlers'
11753a5a1b3Sopenharmony_ci    local commands=(stat info list exit upload-sample play-sample remove-sample
11853a5a1b3Sopenharmony_ci                    load-module unload-module move-sink-input move-source-output
11953a5a1b3Sopenharmony_ci                    suspend-sink suspend-source set-card-profile set-default-sink
12053a5a1b3Sopenharmony_ci                    set-sink-port set-default-source set-source-port set-sink-volume
12153a5a1b3Sopenharmony_ci                    set-source-volume set-sink-input-volume set-source-output-volume
12253a5a1b3Sopenharmony_ci                    set-sink-mute set-source-mute set-sink-input-mute
12353a5a1b3Sopenharmony_ci                    set-source-output-mute set-sink-formats set-port-latency-offset
12453a5a1b3Sopenharmony_ci                    subscribe send-message help)
12553a5a1b3Sopenharmony_ci
12653a5a1b3Sopenharmony_ci    _init_completion -n = || return
12753a5a1b3Sopenharmony_ci    preprev=${words[$cword-2]}
12853a5a1b3Sopenharmony_ci
12953a5a1b3Sopenharmony_ci    for word in "${COMP_WORDS[@]}"; do
13053a5a1b3Sopenharmony_ci        if in_array "$word" "${commands[@]}"; then
13153a5a1b3Sopenharmony_ci            command=$word
13253a5a1b3Sopenharmony_ci            break
13353a5a1b3Sopenharmony_ci        fi
13453a5a1b3Sopenharmony_ci    done
13553a5a1b3Sopenharmony_ci
13653a5a1b3Sopenharmony_ci    case $preprev in
13753a5a1b3Sopenharmony_ci        list) COMPREPLY=($(compgen -W 'short' -- "$cur")) ;;
13853a5a1b3Sopenharmony_ci
13953a5a1b3Sopenharmony_ci        play-sample)
14053a5a1b3Sopenharmony_ci            comps=$(__sinks)
14153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
14253a5a1b3Sopenharmony_ci            ;;
14353a5a1b3Sopenharmony_ci
14453a5a1b3Sopenharmony_ci        move-sink-input)
14553a5a1b3Sopenharmony_ci            comps=$(__sinks)
14653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
14753a5a1b3Sopenharmony_ci            ;;
14853a5a1b3Sopenharmony_ci
14953a5a1b3Sopenharmony_ci        move-source-output)
15053a5a1b3Sopenharmony_ci            comps=$(__sources)
15153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
15253a5a1b3Sopenharmony_ci            ;;
15353a5a1b3Sopenharmony_ci
15453a5a1b3Sopenharmony_ci        set-card-profile)
15553a5a1b3Sopenharmony_ci            comps=$(__profiles)
15653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
15753a5a1b3Sopenharmony_ci            ;;
15853a5a1b3Sopenharmony_ci
15953a5a1b3Sopenharmony_ci        set-*-port)
16053a5a1b3Sopenharmony_ci            comps=$(__ports)
16153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
16253a5a1b3Sopenharmony_ci            ;;
16353a5a1b3Sopenharmony_ci
16453a5a1b3Sopenharmony_ci        set-*-mute) COMPREPLY=($(compgen -W 'true false toggle' -- "$cur")) ;;
16553a5a1b3Sopenharmony_ci
16653a5a1b3Sopenharmony_ci        set-sink-formats)
16753a5a1b3Sopenharmony_ci            ;; #TODO
16853a5a1b3Sopenharmony_ci
16953a5a1b3Sopenharmony_ci        set-port-*)
17053a5a1b3Sopenharmony_ci            comps=$(__ports)
17153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
17253a5a1b3Sopenharmony_ci            ;;
17353a5a1b3Sopenharmony_ci        --server)
17453a5a1b3Sopenharmony_ci            compopt +o nospace
17553a5a1b3Sopenharmony_ci            _known_hosts_real "$cur"
17653a5a1b3Sopenharmony_ci            ;;
17753a5a1b3Sopenharmony_ci    esac
17853a5a1b3Sopenharmony_ci    [[ $COMPREPLY ]] && return 0
17953a5a1b3Sopenharmony_ci
18053a5a1b3Sopenharmony_ci    case $prev in
18153a5a1b3Sopenharmony_ci        list) COMPREPLY=($(compgen -W '${list_types[*]}' -- "$cur")) ;;
18253a5a1b3Sopenharmony_ci
18353a5a1b3Sopenharmony_ci        upload-sample) _filedir ;;
18453a5a1b3Sopenharmony_ci
18553a5a1b3Sopenharmony_ci        play-sample) ;; # TODO
18653a5a1b3Sopenharmony_ci
18753a5a1b3Sopenharmony_ci        remove-sample) ;; # TODO
18853a5a1b3Sopenharmony_ci
18953a5a1b3Sopenharmony_ci        load-module)
19053a5a1b3Sopenharmony_ci            comps=$(__all_modules)
19153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
19253a5a1b3Sopenharmony_ci            ;;
19353a5a1b3Sopenharmony_ci
19453a5a1b3Sopenharmony_ci        unload-module)
19553a5a1b3Sopenharmony_ci            comps=$(__loaded_modules)
19653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
19753a5a1b3Sopenharmony_ci            ;;
19853a5a1b3Sopenharmony_ci
19953a5a1b3Sopenharmony_ci        set-card*)
20053a5a1b3Sopenharmony_ci            comps=$(__cards)
20153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
20253a5a1b3Sopenharmony_ci            ;;
20353a5a1b3Sopenharmony_ci
20453a5a1b3Sopenharmony_ci        *sink-input*)
20553a5a1b3Sopenharmony_ci            comps=$(__sink_inputs)
20653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
20753a5a1b3Sopenharmony_ci            ;;
20853a5a1b3Sopenharmony_ci
20953a5a1b3Sopenharmony_ci        *source-output*)
21053a5a1b3Sopenharmony_ci            comps=$(__source_outputs)
21153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
21253a5a1b3Sopenharmony_ci            ;;
21353a5a1b3Sopenharmony_ci
21453a5a1b3Sopenharmony_ci        set-sink-formats)
21553a5a1b3Sopenharmony_ci            comps=$(__sinks_idx)
21653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
21753a5a1b3Sopenharmony_ci            ;;
21853a5a1b3Sopenharmony_ci
21953a5a1b3Sopenharmony_ci        *sink*)
22053a5a1b3Sopenharmony_ci            comps=$(__sinks)
22153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
22253a5a1b3Sopenharmony_ci            ;;
22353a5a1b3Sopenharmony_ci
22453a5a1b3Sopenharmony_ci        *source*)
22553a5a1b3Sopenharmony_ci            comps=$(__sources)
22653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
22753a5a1b3Sopenharmony_ci            ;;
22853a5a1b3Sopenharmony_ci
22953a5a1b3Sopenharmony_ci        set-port*)
23053a5a1b3Sopenharmony_ci            comps=$(__cards)
23153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
23253a5a1b3Sopenharmony_ci            ;;
23353a5a1b3Sopenharmony_ci
23453a5a1b3Sopenharmony_ci        -s)
23553a5a1b3Sopenharmony_ci            _known_hosts_real "$cur" ;;
23653a5a1b3Sopenharmony_ci    esac
23753a5a1b3Sopenharmony_ci    [[ $COMPREPLY ]] && return 0
23853a5a1b3Sopenharmony_ci
23953a5a1b3Sopenharmony_ci    case $cur in
24053a5a1b3Sopenharmony_ci        --server=*)
24153a5a1b3Sopenharmony_ci            cur=${cur#*=}
24253a5a1b3Sopenharmony_ci            _known_hosts_real "$cur"
24353a5a1b3Sopenharmony_ci            ;;
24453a5a1b3Sopenharmony_ci
24553a5a1b3Sopenharmony_ci        -*)
24653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur"))
24753a5a1b3Sopenharmony_ci            [[ $COMPREPLY == *= ]] && compopt -o nospace
24853a5a1b3Sopenharmony_ci            ;;
24953a5a1b3Sopenharmony_ci
25053a5a1b3Sopenharmony_ci        *)
25153a5a1b3Sopenharmony_ci            [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur"))
25253a5a1b3Sopenharmony_ci            ;;
25353a5a1b3Sopenharmony_ci    esac
25453a5a1b3Sopenharmony_ci}
25553a5a1b3Sopenharmony_cicomplete -F _pactl pactl
25653a5a1b3Sopenharmony_ci
25753a5a1b3Sopenharmony_ci_pacmd() {
25853a5a1b3Sopenharmony_ci    local cur prev words cword preprev word command
25953a5a1b3Sopenharmony_ci    local comps
26053a5a1b3Sopenharmony_ci    local flags='-h --help --version'
26153a5a1b3Sopenharmony_ci    local commands=(exit help list-modules list-cards list-sinks list-sources list-clients
26253a5a1b3Sopenharmony_ci                    list-samples list-sink-inputs list-source-outputs stat info
26353a5a1b3Sopenharmony_ci                    load-module unload-module describe-module set-sink-volume
26453a5a1b3Sopenharmony_ci                    set-source-volume set-sink-input-volume set-source-output-volume
26553a5a1b3Sopenharmony_ci                    set-sink-mute set-source-mut set-sink-input-mute
26653a5a1b3Sopenharmony_ci                    set-source-output-mute update-sink-proplist update-source-proplist
26753a5a1b3Sopenharmony_ci                    update-sink-input-proplist update-source-output-proplist
26853a5a1b3Sopenharmony_ci                    set-default-sink set-default-source kill-client kill-sink-input
26953a5a1b3Sopenharmony_ci                    kill-source-output play-sample remove-sample load-sample
27053a5a1b3Sopenharmony_ci                    load-sample-lazy load-sample-dir-lazy play-file dump
27153a5a1b3Sopenharmony_ci                    move-sink-input move-source-output suspend-sink suspend-source
27253a5a1b3Sopenharmony_ci                    suspend set-card-profile set-sink-port set-source-port
27353a5a1b3Sopenharmony_ci                    set-port-latency-offset set-log-target set-log-level set-log-meta
27453a5a1b3Sopenharmony_ci                    set-log-time set-log-backtrace send-message)
27553a5a1b3Sopenharmony_ci    _init_completion -n = || return
27653a5a1b3Sopenharmony_ci    preprev=${words[$cword-2]}
27753a5a1b3Sopenharmony_ci
27853a5a1b3Sopenharmony_ci    for word in "${COMP_WORDS[@]}"; do
27953a5a1b3Sopenharmony_ci        if in_array "$word" "${commands[@]}"; then
28053a5a1b3Sopenharmony_ci            command=$word
28153a5a1b3Sopenharmony_ci            break
28253a5a1b3Sopenharmony_ci        fi
28353a5a1b3Sopenharmony_ci    done
28453a5a1b3Sopenharmony_ci
28553a5a1b3Sopenharmony_ci    case $preprev in
28653a5a1b3Sopenharmony_ci        play-sample|play-file)
28753a5a1b3Sopenharmony_ci            comps=$(__sinks)
28853a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
28953a5a1b3Sopenharmony_ci            ;;
29053a5a1b3Sopenharmony_ci
29153a5a1b3Sopenharmony_ci        load-sample*) _filedir ;;
29253a5a1b3Sopenharmony_ci
29353a5a1b3Sopenharmony_ci        move-sink-input)
29453a5a1b3Sopenharmony_ci            comps=$(__sinks)
29553a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
29653a5a1b3Sopenharmony_ci            ;;
29753a5a1b3Sopenharmony_ci
29853a5a1b3Sopenharmony_ci        move-source-output)
29953a5a1b3Sopenharmony_ci            comps=$(__sources)
30053a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
30153a5a1b3Sopenharmony_ci            ;;
30253a5a1b3Sopenharmony_ci
30353a5a1b3Sopenharmony_ci        set-card-profile)
30453a5a1b3Sopenharmony_ci            comps=$(__profiles)
30553a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
30653a5a1b3Sopenharmony_ci            ;;
30753a5a1b3Sopenharmony_ci
30853a5a1b3Sopenharmony_ci        set-*port*)
30953a5a1b3Sopenharmony_ci            comps=$(__ports)
31053a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
31153a5a1b3Sopenharmony_ci            ;;
31253a5a1b3Sopenharmony_ci
31353a5a1b3Sopenharmony_ci        set-*-mute) COMPREPLY=($(compgen -W 'true false' -- "$cur"));;
31453a5a1b3Sopenharmony_ci
31553a5a1b3Sopenharmony_ci        set-sink-formats)
31653a5a1b3Sopenharmony_ci            ;; #TODO
31753a5a1b3Sopenharmony_ci    esac
31853a5a1b3Sopenharmony_ci
31953a5a1b3Sopenharmony_ci    case $prev in
32053a5a1b3Sopenharmony_ci        list-*) ;;
32153a5a1b3Sopenharmony_ci        describe-module|load-module)
32253a5a1b3Sopenharmony_ci            comps=$(__all_modules)
32353a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
32453a5a1b3Sopenharmony_ci            ;;
32553a5a1b3Sopenharmony_ci
32653a5a1b3Sopenharmony_ci        unload-module)
32753a5a1b3Sopenharmony_ci            comps=$(__loaded_modules)
32853a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
32953a5a1b3Sopenharmony_ci            ;;
33053a5a1b3Sopenharmony_ci
33153a5a1b3Sopenharmony_ci        load-sample-dir-lazy) _filedir -d ;;
33253a5a1b3Sopenharmony_ci        play-file) _filedir ;;
33353a5a1b3Sopenharmony_ci
33453a5a1b3Sopenharmony_ci        *sink-input*)
33553a5a1b3Sopenharmony_ci            comps=$(__sink_inputs)
33653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
33753a5a1b3Sopenharmony_ci            ;;
33853a5a1b3Sopenharmony_ci
33953a5a1b3Sopenharmony_ci        *source-output*)
34053a5a1b3Sopenharmony_ci            comps=$(__source_outputs)
34153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
34253a5a1b3Sopenharmony_ci            ;;
34353a5a1b3Sopenharmony_ci
34453a5a1b3Sopenharmony_ci        *sink*)
34553a5a1b3Sopenharmony_ci            comps=$(__sinks)
34653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
34753a5a1b3Sopenharmony_ci            ;;
34853a5a1b3Sopenharmony_ci
34953a5a1b3Sopenharmony_ci        *source*)
35053a5a1b3Sopenharmony_ci            comps=$(__sources)
35153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
35253a5a1b3Sopenharmony_ci            ;;
35353a5a1b3Sopenharmony_ci
35453a5a1b3Sopenharmony_ci        set-card*)
35553a5a1b3Sopenharmony_ci            comps=$(__cards)
35653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
35753a5a1b3Sopenharmony_ci            ;;
35853a5a1b3Sopenharmony_ci
35953a5a1b3Sopenharmony_ci        set-port-*)
36053a5a1b3Sopenharmony_ci            comps=$(__cards)
36153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
36253a5a1b3Sopenharmony_ci            ;;
36353a5a1b3Sopenharmony_ci
36453a5a1b3Sopenharmony_ci        set-log-target)
36553a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur"))
36653a5a1b3Sopenharmony_ci            ;;
36753a5a1b3Sopenharmony_ci
36853a5a1b3Sopenharmony_ci        set-log-level)
36953a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '{0..4}' -- "$cur"))
37053a5a1b3Sopenharmony_ci            ;;
37153a5a1b3Sopenharmony_ci
37253a5a1b3Sopenharmony_ci        set-log-meta|set-log-time|suspend)
37353a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'true false' -- "$cur"))
37453a5a1b3Sopenharmony_ci            ;;
37553a5a1b3Sopenharmony_ci    esac
37653a5a1b3Sopenharmony_ci
37753a5a1b3Sopenharmony_ci    case $cur in
37853a5a1b3Sopenharmony_ci        -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;;
37953a5a1b3Sopenharmony_ci        suspend)
38053a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'suspend suspend-sink suspend-source' -- "$cur"))
38153a5a1b3Sopenharmony_ci            ;;
38253a5a1b3Sopenharmony_ci
38353a5a1b3Sopenharmony_ci        load-sample)
38453a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'load-sample load-sample-lazy load-sample-dir-lazy' -- "$cur"))
38553a5a1b3Sopenharmony_ci            ;;
38653a5a1b3Sopenharmony_ci
38753a5a1b3Sopenharmony_ci        *)
38853a5a1b3Sopenharmony_ci            [[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur"))
38953a5a1b3Sopenharmony_ci            ;;
39053a5a1b3Sopenharmony_ci    esac
39153a5a1b3Sopenharmony_ci}
39253a5a1b3Sopenharmony_cicomplete -F _pacmd pacmd
39353a5a1b3Sopenharmony_ci
39453a5a1b3Sopenharmony_ci_pasuspender () {
39553a5a1b3Sopenharmony_ci    local cur prev
39653a5a1b3Sopenharmony_ci    local flags='-h --help --version -s --server='
39753a5a1b3Sopenharmony_ci
39853a5a1b3Sopenharmony_ci    _init_completion -n = || return
39953a5a1b3Sopenharmony_ci
40053a5a1b3Sopenharmony_ci    case $cur in
40153a5a1b3Sopenharmony_ci        --server=*)
40253a5a1b3Sopenharmony_ci            cur=${cur#*=}
40353a5a1b3Sopenharmony_ci            _known_hosts_real "$cur"
40453a5a1b3Sopenharmony_ci            ;;
40553a5a1b3Sopenharmony_ci
40653a5a1b3Sopenharmony_ci        -*)
40753a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur"))
40853a5a1b3Sopenharmony_ci            [[ $COMPREPLY == *= ]] && compopt -o nospace
40953a5a1b3Sopenharmony_ci            ;;
41053a5a1b3Sopenharmony_ci    esac
41153a5a1b3Sopenharmony_ci
41253a5a1b3Sopenharmony_ci    case $prev in
41353a5a1b3Sopenharmony_ci        -s) _known_hosts_real "$cur" ;;
41453a5a1b3Sopenharmony_ci    esac
41553a5a1b3Sopenharmony_ci}
41653a5a1b3Sopenharmony_cicomplete -F _pasuspender pasuspender
41753a5a1b3Sopenharmony_ci
41853a5a1b3Sopenharmony_ci_padsp () {
41953a5a1b3Sopenharmony_ci    local cur prev
42053a5a1b3Sopenharmony_ci    local flags='-h -s -n -m -M -S -D -d'
42153a5a1b3Sopenharmony_ci
42253a5a1b3Sopenharmony_ci    _get_comp_words_by_ref cur prev
42353a5a1b3Sopenharmony_ci
42453a5a1b3Sopenharmony_ci    case $cur in
42553a5a1b3Sopenharmony_ci        -*) COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur")) ;;
42653a5a1b3Sopenharmony_ci    esac
42753a5a1b3Sopenharmony_ci
42853a5a1b3Sopenharmony_ci    case $prev in
42953a5a1b3Sopenharmony_ci        -s) _known_hosts_real "$cur" ;;
43053a5a1b3Sopenharmony_ci    esac
43153a5a1b3Sopenharmony_ci}
43253a5a1b3Sopenharmony_cicomplete -F _padsp padsp
43353a5a1b3Sopenharmony_ci
43453a5a1b3Sopenharmony_ci_pacat () {
43553a5a1b3Sopenharmony_ci    local cur prev comps
43653a5a1b3Sopenharmony_ci    local flags='-h --help --version -r --record -p --playback -v --verbose -s
43753a5a1b3Sopenharmony_ci                --server= -d --device= -n --client-name= --stream-name= --volume=
43853a5a1b3Sopenharmony_ci                --rate= --format= --channels= --channel-map= --fix-format --fix-rate
43953a5a1b3Sopenharmony_ci                --fix-channels --no-remix --no-remap --latency= --process-time=
44053a5a1b3Sopenharmony_ci                --latency-msec= --process-time-msec= --property= --raw --passthrough
44153a5a1b3Sopenharmony_ci                --file-format= --list-file-formats --monitor-stream='
44253a5a1b3Sopenharmony_ci
44353a5a1b3Sopenharmony_ci    _init_completion -n = || return
44453a5a1b3Sopenharmony_ci
44553a5a1b3Sopenharmony_ci    case $cur in
44653a5a1b3Sopenharmony_ci        --server=*)
44753a5a1b3Sopenharmony_ci            cur=${cur#*=}
44853a5a1b3Sopenharmony_ci            _known_hosts_real "$cur"
44953a5a1b3Sopenharmony_ci            ;;
45053a5a1b3Sopenharmony_ci
45153a5a1b3Sopenharmony_ci        --device=*)
45253a5a1b3Sopenharmony_ci            cur=${cur#*=}
45353a5a1b3Sopenharmony_ci            comps=$(__sinks)
45453a5a1b3Sopenharmony_ci            comps+=" "$(__sources)
45553a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
45653a5a1b3Sopenharmony_ci            ;;
45753a5a1b3Sopenharmony_ci
45853a5a1b3Sopenharmony_ci        --monitor-stream=*)
45953a5a1b3Sopenharmony_ci            cur=${cur#*=}
46053a5a1b3Sopenharmony_ci            comps=$(__sink_inputs)
46153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
46253a5a1b3Sopenharmony_ci            ;;
46353a5a1b3Sopenharmony_ci
46453a5a1b3Sopenharmony_ci        --rate=*)
46553a5a1b3Sopenharmony_ci            cur=${cur#*=}
46653a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '32000 44100 48000 9600 192000' -- "$cur"))
46753a5a1b3Sopenharmony_ci            ;;
46853a5a1b3Sopenharmony_ci
46953a5a1b3Sopenharmony_ci        --file-format=*)
47053a5a1b3Sopenharmony_ci            cur=${cur#*=}
47153a5a1b3Sopenharmony_ci            comps=$(_pacat_file_formats)
47253a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
47353a5a1b3Sopenharmony_ci            ;;
47453a5a1b3Sopenharmony_ci
47553a5a1b3Sopenharmony_ci        --*=*)
47653a5a1b3Sopenharmony_ci            ;;
47753a5a1b3Sopenharmony_ci
47853a5a1b3Sopenharmony_ci        -*)
47953a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur"))
48053a5a1b3Sopenharmony_ci            [[ $COMPREPLY == *= ]] && compopt -o nospace
48153a5a1b3Sopenharmony_ci            ;;
48253a5a1b3Sopenharmony_ci        *) _filedir ;;
48353a5a1b3Sopenharmony_ci    esac
48453a5a1b3Sopenharmony_ci
48553a5a1b3Sopenharmony_ci    case $prev in
48653a5a1b3Sopenharmony_ci        -s) _known_hosts_real "$cur" ;;
48753a5a1b3Sopenharmony_ci        -d)
48853a5a1b3Sopenharmony_ci            comps=$(__sinks)
48953a5a1b3Sopenharmony_ci            comps+=" "$(__sources)
49053a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
49153a5a1b3Sopenharmony_ci            ;;
49253a5a1b3Sopenharmony_ci    esac
49353a5a1b3Sopenharmony_ci}
49453a5a1b3Sopenharmony_cicomplete -F _pacat pacat paplay parec parecord
49553a5a1b3Sopenharmony_ci
49653a5a1b3Sopenharmony_ci_pulseaudio()
49753a5a1b3Sopenharmony_ci{
49853a5a1b3Sopenharmony_ci    local cur prev words cword
49953a5a1b3Sopenharmony_ci    local flags='-h --help --version --dump-conf --dump-resample-methods --cleanup-shm
50053a5a1b3Sopenharmony_ci                --start -k --kill --check --system= -D --daemonize= --fail= --high-priority=
50153a5a1b3Sopenharmony_ci                --realtime= --disallow-module-loading= --disallow-exit= --exit-idle-time=
50253a5a1b3Sopenharmony_ci                --scache-idle-time= --log-level= -v --log-target= --log-meta= --log-time=
50353a5a1b3Sopenharmony_ci                --log-backtrace= -p --dl-search-path= --resample-method= --use-pit-file=
50453a5a1b3Sopenharmony_ci                --no-cpu-limit= --disable-shm= --enable-memfd= -L --load= -F --file= -C -n'
50553a5a1b3Sopenharmony_ci    _init_completion -n = || return
50653a5a1b3Sopenharmony_ci
50753a5a1b3Sopenharmony_ci    case $cur in
50853a5a1b3Sopenharmony_ci        --system=*|--daemonize=*|--fail=*|--high-priority=*|--realtime=*| \
50953a5a1b3Sopenharmony_ci            --disallow-*=*|--log-meta=*|--log-time=*|--use-pid-file=*| \
51053a5a1b3Sopenharmony_ci            --no-cpu-limit=*|--disable-shm=*|--enable-memfd=*)
51153a5a1b3Sopenharmony_ci            cur=${cur#*=}
51253a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'true false' -- "$cur"))
51353a5a1b3Sopenharmony_ci            ;;
51453a5a1b3Sopenharmony_ci
51553a5a1b3Sopenharmony_ci        --log-target=*)
51653a5a1b3Sopenharmony_ci            cur=${cur#*=}
51753a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W 'auto syslog stderr file: newfile:' -- "$cur"))
51853a5a1b3Sopenharmony_ci            ;;
51953a5a1b3Sopenharmony_ci
52053a5a1b3Sopenharmony_ci        --log-level=*)
52153a5a1b3Sopenharmony_ci            cur=${cur#*=}
52253a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '{0..4}' -- "$cur"))
52353a5a1b3Sopenharmony_ci            ;;
52453a5a1b3Sopenharmony_ci
52553a5a1b3Sopenharmony_ci        --dl-search-path=*)
52653a5a1b3Sopenharmony_ci            cur=${cur#*=}
52753a5a1b3Sopenharmony_ci            _filedir -d
52853a5a1b3Sopenharmony_ci            ;;
52953a5a1b3Sopenharmony_ci
53053a5a1b3Sopenharmony_ci        --file=*)
53153a5a1b3Sopenharmony_ci            cur=${cur#*=}
53253a5a1b3Sopenharmony_ci            _filedir
53353a5a1b3Sopenharmony_ci            ;;
53453a5a1b3Sopenharmony_ci
53553a5a1b3Sopenharmony_ci        --resample-method=*)
53653a5a1b3Sopenharmony_ci            cur=${cur#*=}
53753a5a1b3Sopenharmony_ci            comps=$(__resample_methods)
53853a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
53953a5a1b3Sopenharmony_ci            ;;
54053a5a1b3Sopenharmony_ci
54153a5a1b3Sopenharmony_ci        --load=*)
54253a5a1b3Sopenharmony_ci            cur=${cur#*=}
54353a5a1b3Sopenharmony_ci            comps=$(__all_modules)
54453a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
54553a5a1b3Sopenharmony_ci            ;;
54653a5a1b3Sopenharmony_ci
54753a5a1b3Sopenharmony_ci        --*=*)
54853a5a1b3Sopenharmony_ci            ;;
54953a5a1b3Sopenharmony_ci
55053a5a1b3Sopenharmony_ci        -*)
55153a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur"))
55253a5a1b3Sopenharmony_ci            [[ $COMPREPLY == *= ]] && compopt -o nospace
55353a5a1b3Sopenharmony_ci            ;;
55453a5a1b3Sopenharmony_ci    esac
55553a5a1b3Sopenharmony_ci
55653a5a1b3Sopenharmony_ci    case $prev in
55753a5a1b3Sopenharmony_ci        -D) COMPREPLY=($(compgen -W 'true false' -- "$cur")) ;;
55853a5a1b3Sopenharmony_ci        -p) _filedir -d ;;
55953a5a1b3Sopenharmony_ci        -F) _filedir ;;
56053a5a1b3Sopenharmony_ci        -L)
56153a5a1b3Sopenharmony_ci            cur=${cur#*=}
56253a5a1b3Sopenharmony_ci            comps=$(__all_modules)
56353a5a1b3Sopenharmony_ci            COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
56453a5a1b3Sopenharmony_ci            ;;
56553a5a1b3Sopenharmony_ci    esac
56653a5a1b3Sopenharmony_ci}
56753a5a1b3Sopenharmony_cicomplete -F _pulseaudio pulseaudio
56853a5a1b3Sopenharmony_ci
56953a5a1b3Sopenharmony_ci#vim: set ft=zsh sw=4 ts=4 noet
570