Skip to content

Instantly share code, notes, and snippets.

@rif

rif/cycle_sinks.py

Created Jun 22, 2018
Embed
What would you like to do?
#!/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
@rif

This comment has been minimized.

Copy link
Owner Author

@rif rif commented Jun 22, 2018

requires pacmd and xdotool. I use it assigning a shortcut key in i3wm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.