class Widgets::Volume
Volume control via PulseAudio
The instance variables @volume @display_volume and @muted are exposed
Public Class Methods
Source
# File src/widgets/volume.rb, line 9 def initialize options options[:on_click] ||= proc { toggle_mute } super @label = Gtk::Label.new '' get_default_sink_volume update_safe listen_thread append @label end
Calls superclass method
Widgets::BaseWidget::new
Source
# File src/widgets/volume.rb, line 25 def self.speaker_emoji(volume = Float, muted: Boolean | false) -> { String } return "🔇" if muted case volume when 0.0...0.2 then "🔈" when 0.2...0.5 then "🔉" when 0.5...1.0 then "🔊" else raise "unexpected volume #{volume}" end end
Public Instance Methods
Source
# File src/widgets/volume.rb, line 36 def toggle_mute `wpctl set-mute @DEFAULT_SINK@ toggle` end
Source
# File src/widgets/volume.rb, line 19 def update @display_volume = (@volume * 100).round @label.set_text(instance_exec(&@proc) || "#{self.class.speaker_emoji(@volume, muted: @muted)} #{@display_volume || '?'}") end