diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/player | 2 | ||||
-rwxr-xr-x | bin/volume | 31 |
2 files changed, 18 insertions, 15 deletions
@@ -79,7 +79,7 @@ eval "$(assert-arg -- "$ACTION" 'ACTION')" CURRENT_PLAYER_PATH="$XDG_CACHE_HOME"/euandreh-mpris-player.txt -CURRENT_PLAYER="$(cat "$CURRENT_PLAYER_PATH" ||:)" +CURRENT_PLAYER="$(cat "$CURRENT_PLAYER_PATH" 2>/dev/null ||:)" AVAILABLE_PLAYERS="$(playerctl --list-all | LANG=POSIX.UTF-8 sort)" pick_first() { @@ -78,19 +78,6 @@ ACTION="${1:-}" eval "$(assert-arg -- "$ACTION" 'ACTION')" -rotate() { - # This script assumes that at most 2 sinks exist at any time. - # When this premise is no longer true, it needs to be upgraded. - - CURRENT="$(pacmd list-sinks | grep '\* index' | cut -d: -f2 | tr -d ' ')" - OTHER="$(pacmd list-sinks | grep index | grep -v '\* index' | tail -n1 | cut -d: -f2 | tr -d ' ')" - - if [ "$CURRENT" = 0 ]; then - pacmd set-default-sink "$OTHER" - else - pacmd set-default-sink 0 - fi -} case "$ACTION" in up) @@ -103,7 +90,23 @@ case "$ACTION" in pactl set-sink-mute @DEFAULT_SINK@ toggle ;; rotate) - rotate + pacmd set-default-sink "$( + pacmd list-sinks | + grep index | + grep -v 'index: 0$' | + awk ' + { + n = $(NF) + sinks[i++] = n + last = n + if ($1 == "*") { + curr = n + } + } + END { + print curr == last ? sinks[0] : sinks[i - 1] + }' + )" ;; *) printf 'Bad ACTION: %s.\n\n' "$ACTION" >&2 |