46 lines
911 B
Bash
Executable file
46 lines
911 B
Bash
Executable file
#!/usr/bin/env fish
|
|
|
|
set -l sed 's/^.* ([[:digit:]]*)\. .*$/\1/'
|
|
set -l awk 'BEGIN { A=0; S=0; } /^Audio/ { A=1; } /Sinks/ { S=1; } /Sources/ { S=0; } /^Video/ { A=0; } { if (A==1 && S==1 && / [[:digit:]]*\./) { print; } }'
|
|
|
|
set -l lines (wpctl status | awk $awk)
|
|
set -l len (count $lines)
|
|
|
|
set -l current
|
|
set -l sinks
|
|
|
|
for i in (seq 1 $len)
|
|
set -l sink (echo $lines[$i] | sed -E $sed)
|
|
set -a sinks $sink
|
|
|
|
if string match -qr '\*' $lines[$i]
|
|
set current $sink
|
|
end
|
|
|
|
end
|
|
|
|
set -l len (count $sinks)
|
|
set -l index
|
|
|
|
for i in (seq 1 $len)
|
|
if [ $sinks[$i] = $current ]
|
|
if [ $argv[1] = '-f' ]
|
|
if [ $i = $len ]
|
|
set index 1
|
|
else
|
|
set index (math $i + 1)
|
|
end
|
|
else if [ $argv[1] = '-b' ]
|
|
if [ $i = 1 ]
|
|
set index $len
|
|
else
|
|
set index (math $i - 1)
|
|
end
|
|
else
|
|
exit 1
|
|
end
|
|
break
|
|
end
|
|
end
|
|
|
|
wpctl set-default $sinks[$index]
|