pulseaudio 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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.