mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 12:53:13 +00:00
Add completions for Pulseaudio's pacmd
To implement this mostly as a wrapper around pactl, we add the list of commands for this to that. It's 90% the same anyway. (This means that `pactl suspend ` will complete files instead of commands like `pactl banana ` would, but neither is correct)
This commit is contained in:
parent
6bf70c86d2
commit
8db1a5fae7
2 changed files with 27 additions and 2 deletions
21
share/completions/pacmd.fish
Normal file
21
share/completions/pacmd.fish
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Pulseaudio's pacmd
|
||||||
|
# This covers the most useful commands
|
||||||
|
set -l commands (pacmd help | string match -r '^ +[-\w]+' | string trim)
|
||||||
|
complete -f -e -c pacmd
|
||||||
|
complete -f -c pacmd -w pactl
|
||||||
|
|
||||||
|
# These descriptions are a bit wordy and unnecessary
|
||||||
|
# Sample: set-source-port Change the port of a source (args: index|name, port-name)
|
||||||
|
# Or: list-source-outputs List source outputs
|
||||||
|
complete -f -c pacmd -n "not __fish_seen_subcommand_from $commands" -a "(pacmd help | string match ' *' | string trim | string replace -r '\s+' '\t')"
|
||||||
|
|
||||||
|
# Since we wrapped pactl, we can also use functions defined there
|
||||||
|
complete -f -c pacmd -n "__fish_seen_subcommand_from describe-module" -a '(__fish_pa_complete_type modules)'
|
||||||
|
complete -f -c pacmd -n "__fish_seen_subcommand_from kill-client" -a '(__fish_pa_complete_type clients | string match -r "^[0-9].*")' # match because this only takes an index
|
||||||
|
|
||||||
|
for t in client sink-input source-output
|
||||||
|
complete -f -c pacmd -n "__fish_seen_subcommand_from kill-$t" -a '(__fish_pa_complete_type '$t's | string match -r "^[0-9].*")' # match because this only takes an index
|
||||||
|
end
|
||||||
|
|
||||||
|
complete -f -c pactl -n "__fish_seen_subcommand_from suspend" -a '0 false off' -d "Resume"
|
||||||
|
complete -f -c pactl -n "__fish_seen_subcommand_from suspend" -a '1 true on' -d "Suspend"
|
|
@ -5,7 +5,11 @@
|
||||||
# TODO: Moar commands
|
# TODO: Moar commands
|
||||||
# set-port-latency-offset set-sink-formats
|
# set-port-latency-offset set-sink-formats
|
||||||
|
|
||||||
set -l commands stat info list exit {upload,play,remove}-sample {load,unload}-module \
|
|
||||||
|
# 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} \
|
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
|
set-{sink,source,sink-input,source-output}-{volume,mute} set-sink-formats subscribe
|
||||||
|
|
||||||
|
@ -44,7 +48,7 @@ function __fish_pa_complete_unloaded_modules
|
||||||
end
|
end
|
||||||
|
|
||||||
complete -f -e -c pactl
|
complete -f -e -c pactl
|
||||||
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a "$commands"
|
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a "$ctlcommands"
|
||||||
|
|
||||||
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a stat -d 'Show statistics about memory usage'
|
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a stat -d 'Show statistics about memory usage'
|
||||||
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a info -d 'Show info about the daemon'
|
complete -f -c pactl -n "not __fish_seen_subcommand_from $commands" -a info -d 'Show info about the daemon'
|
||||||
|
|
Loading…
Reference in a new issue