btw i use nix
1#!/usr/bin/env bash
2
3sink_ids=($(pactl list short sinks | cut -f 1))
4sinks=($(pactl list short sinks | cut -f 2))
5
6default_sink=$(pactl info | sed -En 's/Default Sink: (.*)/\1/p')
7default_source=$(pactl info | sed -En 's/Default Source: (.*)/\1/p')
8
9for i in "${!sinks[@]}"; do
10 if [[ "${sinks[$i]}" = "${default_sink}" ]]; then
11 break
12 fi
13done
14
15deets="$(pactl list sinks | grep -A14 "#${sink_ids[$i]}")"
16vol="$(echo "$deets" | grep "Volume" | head -1 | awk '{print $5}')"
17mute="$(echo "$deets" | grep "Mute: yes")"
18
19if [ ! -z "$mute" ]; then
20 label=""
21else
22 label=""
23fi
24
25mic_mute="$(pactl list sources | grep -A14 "$default_source" | grep "Mute: no")"
26if [ -z "$mic_mute" ]; then
27 mic=""
28else
29 mic=""
30fi
31
32echo "$label $vol [${sink_ids[$i]}] $mic"
33