+++ /dev/null
-/^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
-}