diff --git a/src/tools/shell-completion/wpctl.bash b/src/tools/shell-completion/wpctl.bash index 0a034d3a..caec5fd1 100644 --- a/src/tools/shell-completion/wpctl.bash +++ b/src/tools/shell-completion/wpctl.bash @@ -8,7 +8,7 @@ _wpctl() { local cur prev words cword local commands="status get-volume inspect set-default set-volume set-mute set-profile set-route clear-default settings set-log-level - list" + list reset" _init_completion -n = || return @@ -35,6 +35,10 @@ _wpctl() { COMPREPLY+=($(compgen -W "devices sinks sources" -- "$cur")) fi ;; + + reset) + COMPREPLY+=($(compgen -W "--wireplumber-config --pipewire-config --all --no-restart --dry-run" -- "$cur")) + ;; esac } diff --git a/src/tools/shell-completion/wpctl.zsh b/src/tools/shell-completion/wpctl.zsh index 3f9e53c8..e2b18744 100644 --- a/src/tools/shell-completion/wpctl.zsh +++ b/src/tools/shell-completion/wpctl.zsh @@ -22,15 +22,22 @@ _wpctl_pw_nodes() { fi _wpctl_describe_nodes() {_describe "node id" pw_objects "$@"} _alternative \ - 'pw-defaults:defaults:(@DEFAULT_SINK@ @DEFAULT_SOURCE@)' \ + 'pw-defaults:defaults:(@DEFAULT_SINK@ @DEFAULT_AUDIO_SINK@ @DEFAULT_SOURCE@ @DEFAULT_AUDIO_SOURCE@ @DEFAULT_VIDEO_SOURCE@)' \ 'pw-node-id:node id:_wpctl_describe_nodes' } local -a node_id=(/$'[^\0]#\0'/ ':pw-node-id:node id:_wpctl_pw_nodes') local -a volume=(/$'[0-9]##(%|)([+-]|)\0'/ ':volume:volume:( )') local -a toggle=(/$'[^\0]#\0'/ ':(0 1 toggle)') +local -a index=(/$'[^\0]#\0'/ ':index:index:( )') local -a set_volume=( "$node_id[@]" "$volume[@]" ) local -a set_mute=( "$node_id[@]" "$toggle[@]" ) +local -a set_profile=( "$node_id[@]" "$index[@]" ) +local -a set_route=( "$node_id[@]" "$index[@]" ) +local -a clear_default_id=(/$'[^\0]#\0'/ ':(0 1 2)') +local -a list_media=(/$'[^\0]#\0'/ ':media-type:media type:(audio video)') +local -a list_object=(/$'[^\0]#\0'/ ':object-type:object type:(devices sinks sources)') +local -a list_args=( "$list_media[@]" "$list_object[@]" ) _regex_words options 'wpctl options' \ {-h,--help}':show help message and exit' @@ -38,12 +45,18 @@ local -a options=( "$reply[@]" ) _regex_words wpctl-commands 'wpctl commands' \ 'status:show wireplumber status' \ + 'list:list PipeWire objects:$list_args' \ 'get-volume:get object volume:$node_id' \ - 'set-default:set a default sink:$node_id' \ + 'inspect:inspect an object:$node_id' \ + 'set-default:set a default node:$node_id' \ 'set-volume:set object volume:$set_volume' \ 'set-mute:set object mute:$set_mute' \ - 'set-profile:set object profile:$node_id' \ - 'clear-default:unset default sink:$node_id' + 'set-profile:set object profile:$set_profile' \ + 'set-route:set object route:$set_route' \ + 'clear-default:unset a configured default node:$clear_default_id' \ + 'settings:show or change settings' \ + 'set-log-level:set the log level of a client' \ + 'reset:reset wireplumber/pipewire to defaults' local -a wpctlcmd=( /$'[^\0]#\0'/ "$options[@]" "#" "$reply[@]") _regex_arguments _wpctl "$wpctlcmd[@]" _wpctl "$@"