Skip to content

Instantly share code, notes, and snippets.

@germank
Created September 8, 2016 07:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save germank/7fa2fb07d45a838bf890addadd8bea8c to your computer and use it in GitHub Desktop.
Save germank/7fa2fb07d45a838bf890addadd8bea8c to your computer and use it in GitHub Desktop.
Toggle the pulseaudio sink rotating between the available ones.
#!/usr/bin/env python
from subprocess import check_output, Popen, PIPE, call
import re
list_sinks = Popen(['pacmd', 'list-sinks'], stdout=PIPE)
output = str(check_output(['grep', r"index:"], stdin=list_sinks.stdout))
list_sinks.wait()
selected = None
sinks = []
for index_line in output.split(r'\n')[:-1]:
n = re.search(r'\d+', index_line).group(0)
sinks.append(n)
if '*' in index_line:
selected = n
print ('Sink indexes: {0}'.format(', '.join(sinks)))
new_n = sinks[(sinks.index(selected) + 1) % len(sinks)]
list_sinks = Popen(['pacmd', 'list-sink-inputs'], stdout=PIPE)
output = str(check_output(['grep', r"index:"], stdin=list_sinks.stdout))
list_sinks.wait()
inputs = []
for index_line in output.split(r'\n')[:-1]:
n = re.search(r'\d+', index_line).group(0)
inputs.append(n)
print ('Setting default sink to {0}.'.format(new_n))
list_sinks = call(['pacmd', 'set-default-sink', new_n])
for i in inputs:
print ('Moving input stream {1} to default sink {0}.'.format(new_n, i))
list_sinks = call(['pacmd', 'move-sink-input', i, new_n])
@RaitonGG
Copy link

Traceback (most recent call last):
File "/usr/bin/py", line 167, in
result = eval(args.expression)
^^^^^^^^^^^^^^^^^^^^^
File "", line 1
/usr/local/bin/toggle_sink.py
^
SyntaxError: invalid syntax

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment