diff options
author | Tim Keller <tjkeller.xyz> | 2025-04-18 23:05:38 -0500 |
---|---|---|
committer | Tim Keller <tjkeller.xyz> | 2025-04-18 23:05:38 -0500 |
commit | 8c3245410da7b2565fb0e5484d737cc3b427c548 (patch) | |
tree | 0c3d71404fbaa3dbc04a95f04b2bdb1cd031385b | |
parent | b0d338292565fe3fe932215fd628a7482a29e8f0 (diff) | |
download | awesome-8c3245410da7b2565fb0e5484d737cc3b427c548.tar.xz awesome-8c3245410da7b2565fb0e5484d737cc3b427c548.zip |
finish volume dropdown functionality
-rw-r--r-- | widgets/pavolctld.lua | 5 | ||||
-rw-r--r-- | widgets/volumedropdown.lua | 42 |
2 files changed, 34 insertions, 13 deletions
diff --git a/widgets/pavolctld.lua b/widgets/pavolctld.lua index 1ef523e..6f257b5 100644 --- a/widgets/pavolctld.lua +++ b/widgets/pavolctld.lua @@ -16,9 +16,8 @@ widget.dropdown = volume_dropdown -- widget callbacks pavolctld.set_volume_change_callback(function() widget.textbox:set_text(pavolctld.sinks.default.vol) - widget.dropdown.set_volume(pavolctld.sinks.default.vol) + widget.dropdown.set_volume(pavolctld.sinks.default.vol, pavolctld.sinks.default.mute) widget.dropdown.dbmeter:set_text(pavolctld.sinks.default.db .. " dB") - widget.dropdown.muted.checked = pavolctld.sinks.default.mute end) pavolctld.set_sink_change_callback(function() @@ -28,7 +27,7 @@ end) pavolctld.set_default_sink_change_callback(function() widget.textbox:set_text(pavolctld.sinks.default.vol) widget.tooltip:set_text(pavolctld.sinks.default.desc) - widget.dropdown.set_volume(pavolctld.sinks.default.vol) + widget.dropdown.set_volume(pavolctld.sinks.default.vol, pavolctld.sinks.default.mute) widget.dropdown.dbmeter:set_text(pavolctld.sinks.default.db .. " dB") widget.dropdown.defsink:set_text(pavolctld.sinks.default.desc) end) diff --git a/widgets/volumedropdown.lua b/widgets/volumedropdown.lua index c2e3fbc..796a84d 100644 --- a/widgets/volumedropdown.lua +++ b/widgets/volumedropdown.lua @@ -44,7 +44,7 @@ local default_sink_scrollbox = wibox.widget { widget = wibox.container.scroll.horizontal, } -widget.muted = wibox.widget { +local muted = wibox.widget { color = "#222222", check_color = beautiful.border_focus, widget = wibox.widget.checkbox, @@ -77,7 +77,7 @@ local volume_dropdown = wibox.widget { widget = wibox.container.margin, }, { - widget.muted, + muted, fill_vertical = true, widget = wibox.container.place, }, @@ -117,20 +117,24 @@ widget.dropdown = awful.popup { visible = false, } +function widget.set_volume(vol, mute) + progressbar:set_value(vol) + muted.checked = mute + if vol == slider.value then return end + slider.value = vol + if widget.dropdown.visible then + slider:emit_signal("widget::redraw_needed") + end +end + -- slider slider:buttons(volume_buttons) slider:connect_signal("property::value", function() if pavolctld.sinks.default.vol == slider.value then return end + widget.dropdown.visible = true -- make sure widget isn't hidden pavolctld.volume_set(slider.value) end) -function widget.set_volume(vol) - progressbar:set_value(vol) - if vol == slider.value then return end - slider.value = vol - slider:emit_signal("widget::redraw_needed") -end - -- scroll when hovering default_sink_scrollbox:connect_signal("mouse::enter", function() default_sink_scrollbox:continue() @@ -141,7 +145,25 @@ default_sink_scrollbox:connect_signal("mouse::leave", function() default_sink_scrollbox:reset_scrolling() end) +-- change sink +default_sink_scrollbox:connect_signal("button::press", function() + widget.dropdown.visible = true -- make sure widget isn't hidden + + local menuopts = { items = {}, theme = { width = 225 } } + for i, s in pairs(pavolctld.sinks.sinks) do + table.insert(menuopts.items, { + s.desc, + function() pavolctld.default_sink_set(i) end + }) + end + + awful.menu(menuopts):show() +end) + -- mute button -widget.muted:connect_signal("button::press", pavolctld.mute_toggle) +muted:connect_signal("button::press", function() + widget.dropdown.visible = true -- make sure widget isn't hidden + pavolctld.mute_toggle() +end) return widget |