55 lines
1.2 KiB
Python
Executable File
55 lines
1.2 KiB
Python
Executable File
import pulsectl
|
|
|
|
pulse = pulsectl.Pulse('my-client-name')
|
|
|
|
|
|
class my_sink:
|
|
name = "Here goes the name of the sink"
|
|
index = -1
|
|
desc = "Here goes a description"
|
|
sink = ""
|
|
|
|
def __init__(self, sink):
|
|
self.name = sink.name
|
|
self.index = sink.index
|
|
self.desc = sink.description
|
|
self.sink = sink
|
|
|
|
def __str__(self):
|
|
return f"\"{self.name}\" with index {self.index} and description: \"{self.desc}\""
|
|
|
|
|
|
def get_sinks():
|
|
output_sinks = []
|
|
print(pulse.sink_list())
|
|
for s in pulse.sink_list():
|
|
m = my_sink(s)
|
|
output_sinks.append(m)
|
|
|
|
print(output_sinks)
|
|
return output_sinks
|
|
|
|
|
|
def next_sink(output_sinks):
|
|
current_sink = pulse.server_info().default_sink_name
|
|
position = 0
|
|
for s in output_sinks:
|
|
if s.name == current_sink:
|
|
break
|
|
else:
|
|
position += 1
|
|
|
|
if position == len(output_sinks) - 1:
|
|
new_output = output_sinks[0]
|
|
else:
|
|
new_output = output_sinks[position+1]
|
|
|
|
print(current_sink + " will be switched to " + new_output.name)
|
|
|
|
pulse.default_set(new_output.sink)
|
|
|
|
|
|
# Press the green button in the gutter to run the script.
|
|
if __name__ == '__main__':
|
|
next_sink(get_sinks())
|