summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--widgets/pavolctld.lua5
-rw-r--r--widgets/volumedropdown.lua42
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