sway_volume: toggle between sinks

This commit is contained in:
Konstantin Koslowski 2024-12-27 11:33:16 +01:00
parent 52f7138b77
commit b0e36f7ca6
2 changed files with 27 additions and 7 deletions

View file

@ -1,7 +1,5 @@
#!/bin/bash
source $HOME/.config/sway/bin/sway_helpers
SINK=$(pactl info | grep "Default Sink" | cut -d ' ' -f 3)
SOURCE=$(pactl info | grep "Default Source" | cut -d ' ' -f 3)
ICON_PATH=$HOME/.local/share/icons/Tela-circle-dark/16/actions
NOTIFY_APP="dunstify -a volume -h string:x-dunst-stack-tag:volume"
APP="pavucontrol"
@ -12,11 +10,21 @@ VOL1="●"
# echo -e '\u25cc'
VOL2="◌"
function _get_default_sink() {
pactl info | grep "Default Sink" | cut -d ' ' -f 3
}
function _get_sink_nick() {
pactl -f json list sinks | jq -c ".[] | select(.name | contains(\"$1\")) | .properties.\"device.nick\"" | sed 's/"//g'
}
function notify() {
SINK=$(_get_default_sink)
SINK_VOLUME=$(pactl list sinks | grep "Name: $SINK" -A 8 | grep -oE '[0-9]*%' | head -n 1 | sed 's/%//')
SOURCE_VOLUME=$(pactl list sources | grep "Name: $SOURCE" -A 8 | grep -oE '[0-9]*%' | head -n 1 | sed 's/%//')
MUTE=$(pactl list sinks | grep "Name: $SINK" -A 8 | grep 'Mute:' | cut -d " " -f 2)
SOURCE_MUTE=$(pactl list sources | grep "Name: $SOURCE" -A 8 | grep 'Mute:' | cut -d " " -f 2)
NICK=$(_get_sink_nick $SINK)
ICON=$ICON_PATH/audio-volume-high.svg
SINK_ICON=""
@ -35,11 +43,16 @@ function notify() {
fi
TITLE="${SINK_ICON} ${SINK_VOLUME}% / ${SOURCE_ICON} ${SOURCE_VOLUME}%"
# $NOTIFY_APP -i $ICON -a "Volume" "$TEXT"
$NOTIFY_APP -i $ICON "$TITLE" "$(getProgressString 10 "$VOL1" "$VOL2" $SINK_VOLUME)"
$NOTIFY_APP -i $ICON "$TITLE" "$NICK\n$(getProgressString 10 "$VOL1" "$VOL2" $SINK_VOLUME)"
}
function _toggle_sink() {
sink_next=$(pactl list sinks | grep node\.name | grep -oE '"[a-zA-Z0-9_.-]*"' | grep -v $1 | sed 's/"//g' | sort -R)
pactl set-default-sink $sink_next
}
## helpers
function _toggle() {
function _toggle_app() {
a=$1
if [ $(pgrep $a) ]; then
killall $a
@ -49,6 +62,8 @@ function _toggle() {
}
## main
SINK=$(pactl info | grep "Default Sink" | cut -d ' ' -f 3)
SOURCE=$(pactl info | grep "Default Source" | cut -d ' ' -f 3)
if [ -z "$SINK" ]; then
_log VOLUME ERROR args: $*
exit 1
@ -84,10 +99,15 @@ case $1 in
paplay $SOUND &
notify
;;
# toggle between sinks
t*)
_toggle_sink $SINK
notify
;;
# show gui
gui)
g*)
_check_app $APP
_toggle $APP
_toggle_app $APP
;;
*)
echo "invalid command: \"$1\""

View file

@ -160,7 +160,7 @@
"min-length": 7,
"max-length": 12,
"on-click": "$HOME/.config/sway/bin/sway_volume mute",
"on-click-middle": "$HOME/.config/sway/bin/sway_volume source-mute",
"on-click-middle": "$HOME/.config/sway/bin/sway_volume toggle-sink",
"on-click-right": "$HOME/.config/sway/bin/sway_volume gui",
"on-scroll-up": "$HOME/.config/sway/bin/sway_volume increase",
"on-scroll-down": "$HOME/.config/sway/bin/sway_volume decrease-mute"