pulseaudio 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -2,7 +2,11 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
+
5
6
  gem "wref"
7
+ gem "gir_ffi"
8
+ gem "gtk3assist"
9
+ gem "gettext"
6
10
 
7
11
  # Add dependencies to develop your gem here.
8
12
  # Include everything needed to run rake, tests, features, etc.
@@ -11,5 +15,4 @@ group :development do
11
15
  gem "rdoc", "~> 3.12"
12
16
  gem "bundler", ">= 1.0.0"
13
17
  gem "jeweler", "~> 1.8.3"
14
- gem "rcov", ">= 0"
15
18
  end
data/Gemfile.lock CHANGED
@@ -2,15 +2,27 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.1.3)
5
+ ffi (1.0.11)
6
+ gettext (2.3.1)
7
+ locale
8
+ gir_ffi (0.4.1)
9
+ ffi (~> 1.0.8)
10
+ indentation (~> 0.0.6)
11
+ gir_ffi-gtk (0.4.0)
12
+ gir_ffi (~> 0.4.0)
5
13
  git (1.2.5)
6
- jeweler (1.8.3)
14
+ gtk3assist (0.0.5)
15
+ gir_ffi-gtk
16
+ xml-simple
17
+ indentation (0.0.6)
18
+ jeweler (1.8.4)
7
19
  bundler (~> 1.0)
8
20
  git (>= 1.2.5)
9
21
  rake
10
22
  rdoc
11
- json (1.7.3)
23
+ json (1.7.5)
24
+ locale (2.0.8)
12
25
  rake (0.9.2.2)
13
- rcov (0.9.11)
14
26
  rdoc (3.12)
15
27
  json (~> 1.4)
16
28
  rspec (2.8.0)
@@ -21,15 +33,18 @@ GEM
21
33
  rspec-expectations (2.8.0)
22
34
  diff-lcs (~> 1.1.2)
23
35
  rspec-mocks (2.8.0)
24
- wref (0.0.2)
36
+ wref (0.0.5)
37
+ xml-simple (1.1.1)
25
38
 
26
39
  PLATFORMS
27
40
  ruby
28
41
 
29
42
  DEPENDENCIES
30
43
  bundler (>= 1.0.0)
44
+ gettext
45
+ gir_ffi
46
+ gtk3assist
31
47
  jeweler (~> 1.8.3)
32
- rcov
33
48
  rdoc (~> 3.12)
34
49
  rspec (~> 2.8.0)
35
50
  wref
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
data/gfx/volume_0.png ADDED
Binary file
Binary file
data/gfx/volume_33.png ADDED
Binary file
data/gfx/volume_66.png ADDED
Binary file
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <!-- interface-requires gtk+ 3.0 -->
4
+ <object class="GtkListStore" id="liststore1"/>
5
+ <object class="GtkWindow" id="window">
6
+ <property name="can_focus">False</property>
7
+ <property name="title" translatable="yes">Choose active sink</property>
8
+ <property name="window_position">center</property>
9
+ <property name="default_width">440</property>
10
+ <property name="default_height">400</property>
11
+ <signal name="delete-event" handler="on_window_delete_event" swapped="no"/>
12
+ <child>
13
+ <object class="GtkVPaned" id="vpaned1">
14
+ <property name="visible">True</property>
15
+ <property name="can_focus">True</property>
16
+ <property name="position">200</property>
17
+ <property name="position_set">True</property>
18
+ <child>
19
+ <object class="GtkFrame" id="frame1">
20
+ <property name="visible">True</property>
21
+ <property name="can_focus">False</property>
22
+ <property name="label_xalign">0</property>
23
+ <property name="shadow_type">none</property>
24
+ <child>
25
+ <object class="GtkAlignment" id="alignment1">
26
+ <property name="visible">True</property>
27
+ <property name="can_focus">False</property>
28
+ <property name="left_padding">12</property>
29
+ <child>
30
+ <object class="GtkTreeView" id="tvSinks">
31
+ <property name="visible">True</property>
32
+ <property name="can_focus">True</property>
33
+ <signal name="cursor-changed" handler="on_tvSinks_cursor_changed" swapped="no"/>
34
+ <child internal-child="selection">
35
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
36
+ </child>
37
+ </object>
38
+ </child>
39
+ </object>
40
+ </child>
41
+ <child type="label">
42
+ <object class="GtkLabel" id="label1">
43
+ <property name="visible">True</property>
44
+ <property name="can_focus">False</property>
45
+ <property name="label" translatable="yes">&lt;b&gt;Choose active sink&lt;/b&gt;</property>
46
+ <property name="use_markup">True</property>
47
+ </object>
48
+ </child>
49
+ </object>
50
+ <packing>
51
+ <property name="resize">False</property>
52
+ <property name="shrink">True</property>
53
+ </packing>
54
+ </child>
55
+ <child>
56
+ <object class="GtkFrame" id="frame2">
57
+ <property name="visible">True</property>
58
+ <property name="can_focus">False</property>
59
+ <property name="label_xalign">0</property>
60
+ <property name="shadow_type">none</property>
61
+ <child>
62
+ <object class="GtkAlignment" id="alignment2">
63
+ <property name="visible">True</property>
64
+ <property name="can_focus">False</property>
65
+ <property name="left_padding">12</property>
66
+ <child>
67
+ <object class="GtkViewport" id="viewport2">
68
+ <property name="visible">True</property>
69
+ <property name="can_focus">False</property>
70
+ <child>
71
+ <object class="GtkTreeView" id="tvSources">
72
+ <property name="visible">True</property>
73
+ <property name="can_focus">True</property>
74
+ <signal name="cursor-changed" handler="on_tvSources_cursor_changed" swapped="no"/>
75
+ <child internal-child="selection">
76
+ <object class="GtkTreeSelection" id="treeview-selection2"/>
77
+ </child>
78
+ </object>
79
+ </child>
80
+ </object>
81
+ </child>
82
+ </object>
83
+ </child>
84
+ <child type="label">
85
+ <object class="GtkLabel" id="label2">
86
+ <property name="visible">True</property>
87
+ <property name="can_focus">False</property>
88
+ <property name="label" translatable="yes">&lt;b&gt;Choose default source&lt;/b&gt;</property>
89
+ <property name="use_markup">True</property>
90
+ </object>
91
+ </child>
92
+ </object>
93
+ <packing>
94
+ <property name="resize">True</property>
95
+ <property name="shrink">True</property>
96
+ </packing>
97
+ </child>
98
+ </object>
99
+ </child>
100
+ </object>
101
+ </interface>
@@ -0,0 +1,160 @@
1
+ class PulseAudio::Gui::Choose_active_sink_gtk3
2
+ attr_reader :ui
3
+
4
+ def initialize
5
+ @ui = Gtk3assist::Builder.new.add_from_file("#{File.dirname(__FILE__)}/choose_active_sink.glade")
6
+ @ui.connect_signals{|h| method(h)}
7
+
8
+ #Init treeviews.
9
+ @tv_sinks = Gtk3assist::Treeview.new(
10
+ :tv => @ui["tvSinks"],
11
+ :model => :liststore,
12
+ :cols => [
13
+ {:id => :id, :title => _("ID")},
14
+ {:id => :name, :title => _("Name")}
15
+ ]
16
+ )
17
+ @ui["tvSinks"].get_column(0).visible = false
18
+ self.reload_sinks
19
+
20
+ @tv_sources = Gtk3assist::Treeview.new(
21
+ :tv => @ui["tvSources"],
22
+ :model => :liststore,
23
+ :cols => [_("ID"), _("Name")]
24
+ )
25
+ @ui["tvSources"].get_column(0).visible = false
26
+ self.reload_sources
27
+
28
+ PulseAudio::Sink::Input.auto_redirect_new_inputs_to_default_sink
29
+ PulseAudio::Source::Output.auto_redirect_new_outputs_to_default_source
30
+
31
+ @sicon = Gtk::StatusIcon.new
32
+ @sicon.signal_connect("activate", &self.method(:on_sicon_activate))
33
+ @sicon.signal_connect("popup-menu", &self.method(:on_sicon_popupmenu))
34
+ @sicon.signal_connect("scroll-event", &self.method(:on_sicon_scroll))
35
+ self.update_icon
36
+ end
37
+
38
+ #Updates the statusicons icon based on the current sinks volume.
39
+ def update_icon
40
+ #Get the current active sink which should be manipulated.
41
+ sink_def = PulseAudio::Sink.by_default
42
+ return nil if !sink_def
43
+
44
+
45
+ #Evaluate which icon is the closest to the current volume.
46
+ vol_perc = sink_def.vol_perc
47
+ levels = [0, 33, 66, 100]
48
+
49
+ vol_closest = levels.first
50
+ vol_closest_dif = 100
51
+
52
+ levels.each do |level|
53
+ if !vol_closest or (vol_perc < level and diff = (level - vol_perc) and diff < vol_closest_dif) or (vol_perc >= level and diff = (vol_perc - level) and diff < vol_closest_dif)
54
+ vol_closest = level
55
+ vol_closest_dif = diff
56
+ end
57
+ end
58
+
59
+
60
+ #Set icon.
61
+ icon_filepath = File.realpath("#{File.dirname(__FILE__)}/../../gfx/volume_#{vol_closest}.png")
62
+ @sicon.set_from_file(icon_filepath)
63
+ end
64
+
65
+ def on_sicon_activate(*args)
66
+ if !@ui["window"].get_visible
67
+ @ui["window"].show_all
68
+ else
69
+ @ui["window"].hide
70
+ end
71
+ end
72
+
73
+ def on_sicon_scroll(sicon, scroll_e, temp)
74
+ direction = scroll_e.direction.to_s
75
+ return nil if direction == "smooth"
76
+ sink_def = PulseAudio::Sink.by_default
77
+
78
+ if direction == "up"
79
+ sink_def.vol_incr
80
+ elsif direction == "down"
81
+ sink_def.vol_decr
82
+ end
83
+
84
+ self.update_icon
85
+ end
86
+
87
+ def on_sicon_popupmenu(*args)
88
+ Gtk.main_quit
89
+ end
90
+
91
+ def reload_sinks
92
+ @reloading = true
93
+ @tv_sinks.model.clear
94
+ PulseAudio::Sink.list do |sink|
95
+ append_data = @tv_sinks.add_row(:data => {:id => sink.sink_id, :name => sink.args[:props]["description"]})
96
+
97
+ if sink.default?
98
+ @ui["tvSinks"].selection.select_iter(append_data[:iter])
99
+ end
100
+ end
101
+
102
+ @reloading = false
103
+ end
104
+
105
+ def reload_sources
106
+ @reloading = true
107
+
108
+ @tv_sources.model.clear
109
+ PulseAudio::Source.list do |source|
110
+ append_data = @tv_sources.add_row(:data => {:id => source.source_id, :name => source.args[:props]["description"]})
111
+
112
+ if source.default?
113
+ @ui["tvSources"].selection.select_iter(append_data[:iter])
114
+ end
115
+ end
116
+
117
+ @reloading = false
118
+ end
119
+
120
+ def on_tvSinks_cursor_changed(*args)
121
+ return nil if @reloading or !@tv_sinks
122
+ sel = @tv_sinks.sel
123
+ return nil if !sel
124
+
125
+ sink = nil
126
+ PulseAudio::Sink.list do |sink_i|
127
+ if sink_i.sink_id.to_i == sel[:data][:id].to_i
128
+ sink = sink_i
129
+ break
130
+ end
131
+ end
132
+
133
+ raise "Could not find sink." if !sink
134
+ sink.default!
135
+ self.update_icon
136
+ end
137
+
138
+ def on_tvSources_cursor_changed(*args)
139
+ return nil if @reloading or !@tv_sources
140
+ sel = @tv_sources.sel
141
+ return nil if !sel
142
+
143
+ source = nil
144
+ PulseAudio::Source.list do |source_i|
145
+ if source_i.source_id.to_i == sel[:data][:id].to_i
146
+ source = source_i
147
+ break
148
+ end
149
+ end
150
+
151
+ raise "Could not find source." if !source
152
+ source.default!
153
+ self.update_icon
154
+ end
155
+
156
+ def on_window_delete_event(*args)
157
+ @ui["window"].hide
158
+ return true
159
+ end
160
+ end
@@ -156,6 +156,15 @@ class PulseAudio::Sink
156
156
  return nil
157
157
  end
158
158
 
159
+ #Returns the current percent of the volume.
160
+ def vol_perc
161
+ if match = @args[:props]["volume"].to_s.match(/(\d+):\s*(\d+)%/)
162
+ return match[2].to_i
163
+ end
164
+
165
+ raise "Could not figure out the volume."
166
+ end
167
+
159
168
  #Returns true if this sink is the default one.
160
169
  def default?
161
170
  def_str = %x[pacmd info | grep "Default sink name"]
data/lib/pulseaudio.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "wref"
1
+ require "wref" if !Kernel.const_defined?(:Wref)
2
2
 
3
3
  #A framework for controlling various elements of PulseAudio in Ruby.
4
4
  class PulseAudio
data/pulseaudio.gemspec CHANGED
@@ -4,15 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{pulseaudio}
8
- s.version = "0.0.4"
7
+ s.name = "pulseaudio"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kasper Johansen"]
12
- s.date = %q{2012-06-27}
13
- s.default_executable = %q{pulseaudio_volume.rb}
14
- s.description = %q{Ruby-library for controlling PulseAudio via 'pactl'.}
15
- s.email = %q{k@spernj.org}
12
+ s.date = "2012-09-19"
13
+ s.description = "Ruby-library for controlling PulseAudio via 'pactl'."
14
+ s.email = "k@spernj.org"
16
15
  s.executables = ["pulseaudio_volume.rb"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE.txt",
@@ -28,8 +27,14 @@ Gem::Specification.new do |s|
28
27
  "Rakefile",
29
28
  "VERSION",
30
29
  "bin/pulseaudio_volume.rb",
30
+ "gfx/volume_0.png",
31
+ "gfx/volume_100.png",
32
+ "gfx/volume_33.png",
33
+ "gfx/volume_66.png",
31
34
  "gui/choose_active_sink/choose_active_sink.glade",
32
35
  "gui/choose_active_sink/choose_active_sink.rb",
36
+ "gui/choose_active_sink_gtk3/choose_active_sink.glade",
37
+ "gui/choose_active_sink_gtk3/choose_active_sink_gtk3.rb",
33
38
  "include/pulseaudio_events.rb",
34
39
  "include/pulseaudio_gui.rb",
35
40
  "include/pulseaudio_sink.rb",
@@ -41,39 +46,46 @@ Gem::Specification.new do |s|
41
46
  "spec/pulseaudio_spec.rb",
42
47
  "spec/spec_helper.rb",
43
48
  "test_scripts/choose_active_sink.rb",
49
+ "test_scripts/choose_active_sink_gtk3.rb",
44
50
  "test_scripts/set_active.rb"
45
51
  ]
46
- s.homepage = %q{http://github.com/kaspernj/pulseaudio}
52
+ s.homepage = "http://github.com/kaspernj/pulseaudio"
47
53
  s.licenses = ["MIT"]
48
54
  s.require_paths = ["lib"]
49
- s.rubygems_version = %q{1.6.2}
50
- s.summary = %q{Ruby-library for controlling PulseAudio.}
55
+ s.rubygems_version = "1.8.24"
56
+ s.summary = "Ruby-library for controlling PulseAudio."
51
57
 
52
58
  if s.respond_to? :specification_version then
53
59
  s.specification_version = 3
54
60
 
55
61
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
62
  s.add_runtime_dependency(%q<wref>, [">= 0"])
63
+ s.add_runtime_dependency(%q<gir_ffi>, [">= 0"])
64
+ s.add_runtime_dependency(%q<gtk3assist>, [">= 0"])
65
+ s.add_runtime_dependency(%q<gettext>, [">= 0"])
57
66
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
58
67
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
59
68
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
60
69
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
61
- s.add_development_dependency(%q<rcov>, [">= 0"])
62
70
  else
63
71
  s.add_dependency(%q<wref>, [">= 0"])
72
+ s.add_dependency(%q<gir_ffi>, [">= 0"])
73
+ s.add_dependency(%q<gtk3assist>, [">= 0"])
74
+ s.add_dependency(%q<gettext>, [">= 0"])
64
75
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
65
76
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
66
77
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
67
78
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
68
- s.add_dependency(%q<rcov>, [">= 0"])
69
79
  end
70
80
  else
71
81
  s.add_dependency(%q<wref>, [">= 0"])
82
+ s.add_dependency(%q<gir_ffi>, [">= 0"])
83
+ s.add_dependency(%q<gtk3assist>, [">= 0"])
84
+ s.add_dependency(%q<gettext>, [">= 0"])
72
85
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
73
86
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
74
87
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
75
88
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
76
- s.add_dependency(%q<rcov>, [">= 0"])
77
89
  end
78
90
  end
79
91
 
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__))
4
+ require "../lib/pulseaudio.rb"
5
+
6
+ require "rubygems"
7
+ require "gir_ffi"
8
+ require "gir_ffi-gtk3"
9
+ require "/home/kaspernj/Dev/Ruby/Gems/knjrbfw/lib/knjrbfw.rb"
10
+ require "gettext"
11
+ Knj.gem_require(:Gtk3assist, "gtk3assist")
12
+
13
+ Gtk3assist.enable_threadding
14
+
15
+ def _(str)
16
+ return GetText._(str)
17
+ end
18
+
19
+ Gtk.init
20
+
21
+ cas = PulseAudio::Gui::Choose_active_sink_gtk3.new
22
+ cas.ui["window"].signal_connect("destroy") do
23
+ Gtk.main_quit
24
+ end
25
+
26
+ Gtk.main
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: pulseaudio
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kasper Johansen
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-06-27 00:00:00 +02:00
14
- default_executable: pulseaudio_volume.rb
13
+ date: 2012-09-19 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: wref
@@ -25,60 +24,82 @@ dependencies:
25
24
  prerelease: false
26
25
  version_requirements: *id001
27
26
  - !ruby/object:Gem::Dependency
28
- name: rspec
27
+ name: gir_ffi
29
28
  requirement: &id002 !ruby/object:Gem::Requirement
30
29
  none: false
31
30
  requirements:
32
- - - ~>
31
+ - - ">="
33
32
  - !ruby/object:Gem::Version
34
- version: 2.8.0
35
- type: :development
33
+ version: "0"
34
+ type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: *id002
38
37
  - !ruby/object:Gem::Dependency
39
- name: rdoc
38
+ name: gtk3assist
40
39
  requirement: &id003 !ruby/object:Gem::Requirement
41
40
  none: false
42
41
  requirements:
43
- - - ~>
42
+ - - ">="
44
43
  - !ruby/object:Gem::Version
45
- version: "3.12"
46
- type: :development
44
+ version: "0"
45
+ type: :runtime
47
46
  prerelease: false
48
47
  version_requirements: *id003
49
48
  - !ruby/object:Gem::Dependency
50
- name: bundler
49
+ name: gettext
51
50
  requirement: &id004 !ruby/object:Gem::Requirement
52
51
  none: false
53
52
  requirements:
54
53
  - - ">="
55
54
  - !ruby/object:Gem::Version
56
- version: 1.0.0
57
- type: :development
55
+ version: "0"
56
+ type: :runtime
58
57
  prerelease: false
59
58
  version_requirements: *id004
60
59
  - !ruby/object:Gem::Dependency
61
- name: jeweler
60
+ name: rspec
62
61
  requirement: &id005 !ruby/object:Gem::Requirement
63
62
  none: false
64
63
  requirements:
65
64
  - - ~>
66
65
  - !ruby/object:Gem::Version
67
- version: 1.8.3
66
+ version: 2.8.0
68
67
  type: :development
69
68
  prerelease: false
70
69
  version_requirements: *id005
71
70
  - !ruby/object:Gem::Dependency
72
- name: rcov
71
+ name: rdoc
73
72
  requirement: &id006 !ruby/object:Gem::Requirement
74
73
  none: false
75
74
  requirements:
76
- - - ">="
75
+ - - ~>
77
76
  - !ruby/object:Gem::Version
78
- version: "0"
77
+ version: "3.12"
79
78
  type: :development
80
79
  prerelease: false
81
80
  version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: &id007 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.0.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: jeweler
94
+ requirement: &id008 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 1.8.3
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *id008
82
103
  description: Ruby-library for controlling PulseAudio via 'pactl'.
83
104
  email: k@spernj.org
84
105
  executables:
@@ -98,8 +119,14 @@ files:
98
119
  - Rakefile
99
120
  - VERSION
100
121
  - bin/pulseaudio_volume.rb
122
+ - gfx/volume_0.png
123
+ - gfx/volume_100.png
124
+ - gfx/volume_33.png
125
+ - gfx/volume_66.png
101
126
  - gui/choose_active_sink/choose_active_sink.glade
102
127
  - gui/choose_active_sink/choose_active_sink.rb
128
+ - gui/choose_active_sink_gtk3/choose_active_sink.glade
129
+ - gui/choose_active_sink_gtk3/choose_active_sink_gtk3.rb
103
130
  - include/pulseaudio_events.rb
104
131
  - include/pulseaudio_gui.rb
105
132
  - include/pulseaudio_sink.rb
@@ -111,8 +138,8 @@ files:
111
138
  - spec/pulseaudio_spec.rb
112
139
  - spec/spec_helper.rb
113
140
  - test_scripts/choose_active_sink.rb
141
+ - test_scripts/choose_active_sink_gtk3.rb
114
142
  - test_scripts/set_active.rb
115
- has_rdoc: true
116
143
  homepage: http://github.com/kaspernj/pulseaudio
117
144
  licenses:
118
145
  - MIT
@@ -126,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
153
  requirements:
127
154
  - - ">="
128
155
  - !ruby/object:Gem::Version
129
- hash: -248938999908362566
156
+ hash: -2237121306229402843
130
157
  segments:
131
158
  - 0
132
159
  version: "0"
@@ -139,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
166
  requirements: []
140
167
 
141
168
  rubyforge_project:
142
- rubygems_version: 1.6.2
169
+ rubygems_version: 1.8.24
143
170
  signing_key:
144
171
  specification_version: 3
145
172
  summary: Ruby-library for controlling PulseAudio.