#!/usr/bin/env python3 from subprocess import check_output from re import findall, DOTALL, MULTILINE inputs = findall(r'.*?index: (\d+).*?sink: (\d+).*?application\.process\.id = "(\d+)"', check_output(['pacmd', 'list-sink-inputs']).decode("utf-8"), DOTALL|MULTILINE) sinks = findall(r'index: (\d+)', check_output(['pacmd', 'list-sinks']).decode("utf-8")) focused_window = check_output(['xdotool', 'getwindowfocus']) focused_pid = check_output(['xdotool', 'getwindowpid', focused_window]).strip().decode("utf-8") for app in inputs: if app[2] == focused_pid: # find new sink index index = 0 for i in range(len(sinks)): if sinks[i] == app[1]: index = (i + 1) % len(sinks) # rotation break check_output(['pacmd', 'move-sink-input', app[0], sinks[index] ]) break