Improve overview and experiment naming
[khatus.git] / x2 / src / awk / exe / parse_pactl_list_sinks.awk
diff --git a/x2/src/awk/exe/parse_pactl_list_sinks.awk b/x2/src/awk/exe/parse_pactl_list_sinks.awk
new file mode 100644 (file)
index 0000000..017a17e
--- /dev/null
@@ -0,0 +1,60 @@
+/^Sink \#[0-9]+$/ {
+    sub("^#", "", $2)
+    sink = $2
+    next
+}
+
+/^\t[A-Z].+:/ {
+    section = $1
+}
+
+section == "Properties:" {
+    read_property()
+}
+
+/\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) {
+        device = properties[sink, "alsa.device"]
+        print("state"     Kfs device, state[sink])
+        print("mute"      Kfs device, mute[sink])
+        print("vol_left"  Kfs device, vol_left[sink])
+        print("vol_right" Kfs device, vol_right[sink])
+    }
+}
+
+function read_property() {
+    key = $1
+    # Yes, the sequence (x-1+1) is redundant, but it keeps the variable names
+    # true to their meaning:
+    val_begin = index($0, "\"") + 1       # +1 to exclude first quote
+    val_end   = length($0) - 1            # -1 to exclude last quote
+    val_len   = (val_end - val_begin) + 1 # +1 to include final character
+    val       = substr($0, val_begin, val_len)
+    properties[sink, key] = val
+}
This page took 0.021974 seconds and 4 git commands to generate.