sinks = $(pactl list sinks | grep node.name) names = $(pactl list sinks | grep alsa.card_name) sinkdict = {} for sink_line, name_line in zip(sinks.split("\n"), names.split("\n")): sink = sink_line.split("=")[-1].strip().strip('"') name = name_line.split("=")[-1].strip().strip('"') if sink and name: sinkdict[sink] = name default_sink = $(pactl get-default-sink).strip() sinklist = list(sinkdict.keys()) i_next = (sinklist.index(default_sink) + 1) % len(sinklist) next_sink = sinklist[i_next] pactl set-default-sink @(next_sink) print(f"PulseAudio sink: {sinkdict[next_sink]} active")