summaryrefslogtreecommitdiff
path: root/widgets/volumedropdown.lua
diff options
context:
space:
mode:
authorTim Keller <tjkeller.xyz>2025-04-18 23:05:38 -0500
committerTim Keller <tjkeller.xyz>2025-04-18 23:05:38 -0500
commit8c3245410da7b2565fb0e5484d737cc3b427c548 (patch)
tree0c3d71404fbaa3dbc04a95f04b2bdb1cd031385b /widgets/volumedropdown.lua
parentb0d338292565fe3fe932215fd628a7482a29e8f0 (diff)
downloadawesome-8c3245410da7b2565fb0e5484d737cc3b427c548.tar.xz
awesome-8c3245410da7b2565fb0e5484d737cc3b427c548.zip
finish volume dropdown functionality
Diffstat (limited to 'widgets/volumedropdown.lua')
-rw-r--r--widgets/volumedropdown.lua42
1 files changed, 32 insertions, 10 deletions
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