dotfiles/.local/bin/wpdef
2025-07-21 13:08:28 +00:00

32 lines
686 B
Bash
Executable File

#!/bin/bash -e
json="$(pw-dump)"
fmt='"\(.id) \(.info.props."node.nick")"'
_jq() {
jq -r "$*" <<< "$json"
}
getdev() {
local d
d="$(_jq ".[].metadata | select(.)[] | select(.key == \"default.configured.audio.$1\").value.name")"
_jq ".[] | select(.info.props.\"node.name\" == \"$d\") | $fmt"
}
getdevs() {
_jq ".[] | select(.info.props.\"media.class\" == \"Audio/$1\") | $fmt"
}
case "$1" in
s) CLASS=Sink ;;
m) CLASS=Source ;;
*) exit 1 ;;
esac
read -r id <<< "$(getdevs "$CLASS" | sed "s/^\($(getdev "${CLASS,,}")\)$/* \1/" | dmenu -l 16 | sed 's/* //')"
if [ -n "$id" ]; then
wpctl set-default "$id"
touch "$XDG_RUNTIME_DIR/sbar/vol"
fi