33 lines
726 B
Bash
Executable File
33 lines
726 B
Bash
Executable File
#!/bin/bash -e
|
|
|
|
json="$(pw-dump)"
|
|
fmt='"\(.id) \(.info.props."node.nick")"'
|
|
|
|
function _jq() {
|
|
jq -r "$*" <<< "$json"
|
|
}
|
|
|
|
function getdev() {
|
|
local d
|
|
|
|
d="$(_jq ".[].metadata | select(.)[] | select(.key == \"default.configured.audio.$1\").value.name")"
|
|
_jq ".[] | select(.info.props.\"node.name\" == \"$d\") | $fmt"
|
|
}
|
|
|
|
function getdevs() {
|
|
_jq ".[] | select(.info.props.\"media.class\" == \"Audio/$1\") | $fmt"
|
|
}
|
|
|
|
case "$1" in
|
|
s) CLASS=Sink ;;
|
|
m) CLASS=Source ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
|
|
dev="$(getdev "${CLASS,,}")"
|
|
devs="$(getdevs "$CLASS" | grep -v "$dev")"$'\n'"* $dev"
|
|
|
|
read -r id <<< "$(dmenu -l 16 <<< "$devs" | sed 's/*//')"
|
|
wpctl set-default "$id"
|
|
kill -34 "$(cat "$XDG_RUNTIME_DIR/sbar/pid")"
|