diff --git a/.local/bin/vol b/.local/bin/vol index 714e38a..2285a02 100755 --- a/.local/bin/vol +++ b/.local/bin/vol @@ -1,25 +1,16 @@ #!/bin/bash -e case "$1" in - s) - DEV='@DEFAULT_AUDIO_SINK@' - ;; - m) - DEV='@DEFAULT_AUDIO_SOURCE@' - ;; - *) - exit 1 - ;; + s) DEV='@DEFAULT_AUDIO_SINK@' ;; + m) DEV='@DEFAULT_AUDIO_SOURCE@' ;; + *) exit 1 ;; esac function update_vol() { + # shellcheck disable=SC2017 case "$1" in - +*|-*) - # shellcheck disable=SC2017 - CUR=$((CUR + $1 - CUR % $1 + CUR % $1 * 10 / $1 / 5 * $1)) - ;; - *) - CUR="$1" + +*|-*) CUR=$((CUR + $1 - CUR % $1 + CUR % $1 * 10 / $1 / 5 * $1)) ;; + *) CUR="$1" ;; esac wpctl set-volume -l 3 "$DEV" "$CUR%" } diff --git a/.local/bin/wpdef b/.local/bin/wpdef index 86ba7bd..cf73ebd 100755 --- a/.local/bin/wpdef +++ b/.local/bin/wpdef @@ -1,32 +1,32 @@ #!/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 -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" + _jq ".[] | select(.info.props.\"media.class\" == \"Audio/$1\") | $fmt" } case "$1" in - s) - CLASS=Sink - ;; - m) - CLASS=Source - ;; - *) - exit 1 - ;; + s) CLASS=Sink ;; + m) CLASS=Source ;; + *) exit 1 ;; esac -read -r id <<< "$(getdevs "$CLASS" | dmenu -l 16)" -wpctl set-default "$id" +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")"