aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-01-12 08:56:10 -0300
committerEuAndreh <eu@euandre.org>2024-01-12 08:56:10 -0300
commitbe4074dfcfd22988e7954a8072e3e87ad00fca4c (patch)
treeb3245427c623baa14ffa3213067fd66a0a6795c8 /bin
parentetc/sh/rc: Add idiff() utility function (diff)
downloaddotfiles-be4074dfcfd22988e7954a8072e3e87ad00fca4c.tar.gz
dotfiles-be4074dfcfd22988e7954a8072e3e87ad00fca4c.tar.xz
bin/volume: Fix rotation beyond 2 sinks
Diffstat (limited to 'bin')
-rwxr-xr-xbin/player2
-rwxr-xr-xbin/volume31
2 files changed, 18 insertions, 15 deletions
diff --git a/bin/player b/bin/player
index 129942e..fd7d11b 100755
--- a/bin/player
+++ b/bin/player
@@ -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() {
diff --git a/bin/volume b/bin/volume
index 2986827..74fcf1f 100755
--- a/bin/volume
+++ b/bin/volume
@@ -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