pactl completions: guard call to other pulseaudio tools (#7532)

At least on Arch Linux, pacmd and pulseaudio aren't necessarily available just because pactl is (pipewire is now a thing, and it installs libpulse but not pulseaudio)
This commit is contained in:
Jason 2020-12-06 22:54:41 +09:00 committed by GitHub
parent 8172ad4463
commit 9140fc7931
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,14 +5,18 @@
# TODO: Moar commands
# set-port-latency-offset set-sink-formats
# HACK: This is the list of commands from pacmd - used so we can use complete -w there
set -l commands (pacmd help | string match -r '^ +[-\w]+' | string trim)
# These are the actual commands for pactl - we complete only these, and then the cmd commands in that completion
set -l ctlcommands stat info list exit {upload,play,remove}-sample {load,unload}-module \
move-{sink-input,source-output} suspend-{sink,source} set-{card-profile,default-sink,sink-port,source-port,port-latency-offset} \
set-{sink,source,sink-input,source-output}-{volume,mute} set-sink-formats subscribe
# HACK: This is the list of commands from pacmd - used so we can use complete -w there
if command -sq pacmd
set commands (pacmd help | string match -r '^ +[-\w]+' | string trim)
else
set commands $ctlcommands
end
function __fish_pa_complete_type
pactl list short $argv
# The default is to show the number, then the name and then some info - also show the name, then the number as it's a bit friendlier
@ -36,6 +40,7 @@ end
# This is needed to filter out loaded modules
function __fish_pa_complete_unloaded_modules
if command -sq pulseaudio
# We need to get just the module names
set -l loaded (__fish_pa_print_type modules | string replace -r '^\w*\t([-\w]+).*' '$1')
pulseaudio --dump-modules | while read -l name description
@ -45,6 +50,7 @@ function __fish_pa_complete_unloaded_modules
printf "%s\t%s\n" $name $description
end
end
end
end
complete -f -c pactl