Class: AudioSwitch::Pactl
- Inherits:
-
Object
- Object
- AudioSwitch::Pactl
show all
- Defined in:
- lib/audio_switch/pactl.rb
Defined Under Namespace
Classes: ModuleOptions, Out
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.parse_default_sink(out) ⇒ Object
108
109
110
|
# File 'lib/audio_switch/pactl.rb', line 108
def self.parse_default_sink(out)
Out.new(out).parse_property('Default sink name:')
end
|
81
82
83
84
85
86
87
|
# 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) ⇒ Object
89
90
91
92
93
94
95
96
|
# 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) ⇒ Object
71
72
73
74
75
76
77
78
79
|
# 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) ⇒ Object
98
99
100
101
102
103
104
105
106
|
# 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
|
Instance Method Details
#default_sink=(sink_id) ⇒ Object
10
11
12
13
14
|
# File 'lib/audio_switch/pactl.rb', line 10
def default_sink=(sink_id)
AudioSwitch::LOG.info "setting default sink to '#{sink_id}'"
`pacmd set-default-sink #{sink_id}`
end
|
#dispose ⇒ Object
67
68
69
|
# File 'lib/audio_switch/pactl.rb', line 67
def dispose
@pactl_sub.close
end
|
21
22
23
|
# File 'lib/audio_switch/pactl.rb', line 21
def inputs
self.class.parse_inputs(`pactl list sink-inputs`)
end
|
#load_module(mod, options = {}) ⇒ Object
33
34
35
36
|
# 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 ⇒ Object
25
26
27
|
# File 'lib/audio_switch/pactl.rb', line 25
def modules
self.class.parse_modules(`pactl list modules`)
end
|
5
6
7
8
|
# 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) ⇒ Object
57
58
59
60
|
# 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 ⇒ Object
16
17
18
19
|
# 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 ⇒ Object
29
30
31
|
# File 'lib/audio_switch/pactl.rb', line 29
def sources
self.class.parse_sources(`pactl list sources`)
end
|
#subscribe(command = 'pactl subscribe') ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# 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) ⇒ Object
38
39
40
41
|
# 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) ⇒ Object
62
63
64
65
|
# 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
|