2022-07-16 15:44:14 -07:00
|
|
|
local volume = req_rel(..., "util")
|
2021-08-01 07:24:26 -07:00
|
|
|
local widget = {}
|
2023-08-26 17:34:37 -07:00
|
|
|
local dotgrid = require("widgets.dotgrid")
|
2021-08-01 07:24:26 -07:00
|
|
|
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots = dotgrid:new();
|
|
|
|
widget.dots.on_color = {1, 0, 0}
|
|
|
|
widget.dots.off_color = {0.5, 0, 0}
|
|
|
|
widget.dots.spacing = beautiful.dpi(2)
|
2021-08-01 07:24:26 -07:00
|
|
|
|
|
|
|
widget.widget = wibox.widget {
|
|
|
|
{
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots,
|
|
|
|
top = beautiful.dpi(2),
|
|
|
|
bottom = beautiful.dpi(2),
|
|
|
|
left = beautiful.dpi(2),
|
|
|
|
right = beautiful.dpi(2),
|
|
|
|
layout = wibox.container.margin,
|
2021-08-01 07:24:26 -07:00
|
|
|
},
|
|
|
|
layout = wibox.container.background,
|
|
|
|
}
|
|
|
|
|
|
|
|
widget.widget:connect_signal("mouse::enter", function(result)
|
|
|
|
widget.widget.bg = beautiful.color.bar.hover_bg
|
2022-11-19 10:20:15 -08:00
|
|
|
awesome.emit_signal("module::volume:popup_show_stay")
|
2021-08-01 07:24:26 -07:00
|
|
|
end)
|
|
|
|
|
|
|
|
widget.widget:connect_signal("mouse::leave", function(result)
|
|
|
|
widget.widget.bg = beautiful.color.transparent
|
2022-11-19 10:20:15 -08:00
|
|
|
awesome.emit_signal("module::volume:popup_show")
|
2021-08-01 07:24:26 -07:00
|
|
|
end)
|
|
|
|
|
|
|
|
widget.widget:connect_signal("button::press",
|
|
|
|
function(_, _, _, button, mods)
|
|
|
|
|
2022-11-05 11:31:12 -07:00
|
|
|
-- Left-click
|
|
|
|
if (button == 1) then
|
2022-07-16 15:44:14 -07:00
|
|
|
volume.toggle_mute()
|
2021-08-01 07:24:26 -07:00
|
|
|
|
|
|
|
-- Scroll up
|
|
|
|
elseif (button == 4) then
|
2022-11-05 09:54:25 -07:00
|
|
|
volume.volume_up(config.volume.scroll_step)
|
2021-08-01 07:24:26 -07:00
|
|
|
|
|
|
|
-- Scroll down
|
|
|
|
elseif (button == 5) then
|
2022-11-05 09:54:25 -07:00
|
|
|
volume.volume_down(config.volume.scroll_step)
|
2021-08-01 07:24:26 -07:00
|
|
|
end
|
2022-11-05 11:40:42 -07:00
|
|
|
awesome.emit_signal("module::volume:popup_show_stay")
|
2021-08-01 07:24:26 -07:00
|
|
|
end
|
|
|
|
)
|
|
|
|
|
2022-11-05 09:47:15 -07:00
|
|
|
awesome.connect_signal("module::volume:update",
|
|
|
|
function(status)
|
|
|
|
if (status.value == false) then
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots.value = 100
|
2022-11-05 09:47:15 -07:00
|
|
|
return
|
|
|
|
end
|
2021-08-01 07:24:26 -07:00
|
|
|
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots.value = status.value
|
2022-11-05 09:47:15 -07:00
|
|
|
|
|
|
|
if (status.mute) then
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots.on_color = {0.7, 0.7, 0.7}
|
|
|
|
widget.dots.off_color = {0.3, 0.3, 0.3}
|
2022-11-05 09:47:15 -07:00
|
|
|
else
|
2023-08-26 17:34:37 -07:00
|
|
|
widget.dots.on_color = {0, 1, 0}
|
|
|
|
widget.dots.off_color = {0, 0.5, 0}
|
2021-08-01 07:24:26 -07:00
|
|
|
end
|
2023-08-26 17:34:37 -07:00
|
|
|
|
|
|
|
widget.dots:emit_signal("widget::redraw_needed")
|
2021-08-01 07:24:26 -07:00
|
|
|
end
|
|
|
|
)
|
|
|
|
|
2022-07-16 15:44:14 -07:00
|
|
|
return widget
|