#!/bin/bash -e json="$(pw-dump)" function getdevs() { jq -r ".[] | select(.info.props.\"media.class\" == \"Audio/$1\") | \"\(.id) \(.info.props.\"node.nick\")\"" <<< "$json" } function getdefault() { jq -r ".[].metadata | select(.) | .[] | select(.key == \"default.configured.audio.$1\") | .value.name" <<< "$json" } function getnick() { jq -r ".[].info.props | select(.\"node.name\" == \"$1\") | .\"node.nick\"" <<< "$json" } case "$1" in s) CLASS=Sink ;; m) CLASS=Source ;; *) exit 1 ;; esac read -r id <<< "$(getdevs "$CLASS" | dmenu -l 16)" wpctl set-default "$id" kill -34 "$(cat "$XDG_RUNTIME_DIR/sbar/pid")"