class AudioSwitch::Pactl
Public Class Methods
parse_default_sink(out)
click to toggle source
# File lib/audio_switch/pactl.rb, line 108 def self.parse_default_sink(out) Out.new(out).parse_property('Default sink name:') end
parse_inputs(out)
click to toggle source
# File lib/audio_switch/pactl.rb, line 81 def self.parse_inputs(out) Out.new(out).parse_objects( [ { marker: 'Sink Input #', property: :id } ] ) end
parse_modules(out)
click to toggle source
# File lib/audio_switch/pactl.rb, line 89 def self.parse_modules(out) Out.new(out).parse_objects( [ { marker: 'Module #' }, { marker: 'Name:', property: :name } ] ) end
parse_sinks(out, default_sink_name)
click to toggle source
# File lib/audio_switch/pactl.rb, line 71 def self.parse_sinks(out, default_sink_name) Out.new(out).parse_objects( [ { marker: 'Sink #', property: :id }, { marker: 'Name:', property: :name }, { marker: 'Description:', property: :description } ] ).each { |sink| sink[:default] = true if sink[:name] == default_sink_name } end
parse_sources(out)
click to toggle source
# File lib/audio_switch/pactl.rb, line 98 def self.parse_sources(out) Out.new(out).parse_objects( [ { marker: 'Source #', property: :id }, { marker: 'Name:', property: :name }, { marker: 'Mute:', property: :mute } ] ).each { |source| source[:mute] = source[:mute] == 'yes' } end
Public Instance Methods
default_sink=(sink_id)
click to toggle source
# File lib/audio_switch/pactl.rb, line 10 def default_sink=(sink_id) AudioSwitch::LOG.info "setting default sink to '#{sink_id}'" # pactl doesn't have this command `pacmd set-default-sink #{sink_id}` end
dispose()
click to toggle source
# File lib/audio_switch/pactl.rb, line 67 def dispose @pactl_sub.close end
inputs()
click to toggle source
# File lib/audio_switch/pactl.rb, line 21 def inputs self.class.parse_inputs(`pactl list sink-inputs`) end
load_module(mod, options = {})
click to toggle source
# File lib/audio_switch/pactl.rb, line 33 def load_module(mod, options = {}) AudioSwitch::LOG.info "loading module '#{mod}' with options '#{options}'" `pactl load-module #{mod} #{ModuleOptions.new(options)}` end
modules()
click to toggle source
# File lib/audio_switch/pactl.rb, line 25 def modules self.class.parse_modules(`pactl list modules`) end
move_input(input_id, sink_id)
click to toggle source
# File lib/audio_switch/pactl.rb, line 5 def move_input(input_id, sink_id) AudioSwitch::LOG.info "moving sink input '#{input_id}' to sink '#{sink_id}'" `pactl move-sink-input #{input_id} #{sink_id}` end
mute_source(source_id)
click to toggle source
# File lib/audio_switch/pactl.rb, line 57 def mute_source(source_id) AudioSwitch::LOG.info "muting source '#{source_id}'" `pactl set-source-mute #{source_id} true` end
sinks()
click to toggle source
# File lib/audio_switch/pactl.rb, line 16 def sinks default_sink_name = self.class.parse_default_sink(`pacmd stat`) self.class.parse_sinks(`pactl list sinks`, default_sink_name) end
sources()
click to toggle source
# File lib/audio_switch/pactl.rb, line 29 def sources self.class.parse_sources(`pactl list sources`) end
subscribe(command = 'pactl subscribe') { |out.parse_event| ... }
click to toggle source
# File lib/audio_switch/pactl.rb, line 43 def subscribe(command = 'pactl subscribe') Thread.start do AudioSwitch::LOG.info "starting '#{command}'" @pactl_sub = PTY.spawn(command)[0] begin @pactl_sub.each do |line| yield(Out.new(line).parse_event) end rescue Errno::EIO, IOError => e AudioSwitch::LOG.error("reading '#{command}' output") { e } end end end
unload_module(mod)
click to toggle source
# File lib/audio_switch/pactl.rb, line 38 def unload_module(mod) AudioSwitch::LOG.info "unloading module '#{mod}'" `pactl unload-module #{mod}` end
unmute_source(source_id)
click to toggle source
# File lib/audio_switch/pactl.rb, line 62 def unmute_source(source_id) AudioSwitch::LOG.info "unmuting source '#{source_id}'" `pactl set-source-mute #{source_id} false` end