Split-out and refactor 'pactl list sinks' parser
[khatus.git] / bin / khatus_parse_pactl_list_sinks
diff --git a/bin/khatus_parse_pactl_list_sinks b/bin/khatus_parse_pactl_list_sinks
new file mode 100755 (executable)
index 0000000..2de73e8
--- /dev/null
@@ -0,0 +1,42 @@
+#! /usr/bin/awk -f
+
+/^Sink \#[0-9]+$/ {
+    sub("^#", "", $2)
+    sink = $2
+    next
+}
+
+/\tState:/ {
+    state[sink] = $2
+    next
+}
+
+/\tMute:/ {
+    mute[sink] = $2
+    next
+}
+
+# Volume: front-left: 45732 /  70% / -9.38 dB,   front-right: 45732 /  70% / -9.38 dB
+/\tVolume:/ {
+    delete vol_parts
+    delete left_parts
+    delete right_parts
+    sub("^\t+Volume: +", "")
+    split($0, vol_parts, ", +")
+    sub("^front-left: +", "", vol_parts[1])
+    sub("^front-right: +", "", vol_parts[2])
+    split(vol_parts[1], left_parts, " +/ +")
+    split(vol_parts[2], right_parts, " +/ +")
+    vol_left[sink] = left_parts[2]
+    vol_right[sink] = right_parts[2]
+    next
+}
+
+END {
+    for (sink in state) {
+        printf(\
+            "%s %s %s %s %s\n",
+            sink, state[sink], mute[sink], vol_left[sink], vol_right[sink] \
+        )
+    }
+}
This page took 0.025744 seconds and 4 git commands to generate.