awesomewm/modules/backlight/widget.lua

104 lines
2.7 KiB
Lua
Executable File

local backlight = req_rel(..., "util")
local widget = {}
widget.icon = wibox.widget {
id = "icon",
image = beautiful.icons.brightness.i,
resize = true,
widget = wibox.widget.imagebox,
}
widget.arc = wibox.widget {
{
widget.icon,
top = beautiful.dpi(1),
bottom = beautiful.dpi(1),
layout = wibox.container.margin,
},
max_value = 100,
thickness = beautiful.dpi(4),
start_angle = 4.71238898, -- 2pi*3/4
--forced_height = beautiful.dpi(16),
--forced_width = beautiful.dpi(16),
colors = {"#27D4CC", "#00446B"},
bg = "#FFFFFF30",
paddings = beautiful.dpi(2),
widget = wibox.container.arcchart
}
widget.widget = wibox.widget {
{
{ -- Right space
widget = wibox.widget.separator,
color = beautiful.color.transparent,
forced_width = beautiful.dpi(3)
},
{ -- Main indicator. Can be replaced with widget.arc
widget.arc,
top = beautiful.dpi(2),
bottom = beautiful.dpi(2),
layout = wibox.container.margin,
},
{ -- Left space
widget = wibox.widget.separator,
color = beautiful.color.transparent,
forced_width = beautiful.dpi(3)
},
layout = wibox.layout.align.horizontal,
},
layout = wibox.container.background,
}
widget.widget:connect_signal("mouse::enter", function(result)
widget.widget.bg = beautiful.color.bar.hover_bg
awesome.emit_signal("module::backlight:popup_show_stay")
end)
widget.widget:connect_signal("mouse::leave", function(result)
widget.widget.bg = beautiful.color.transparent
awesome.emit_signal("module::backlight:popup_show")
end)
widget.widget:connect_signal("button::press",
function(_, _, _, button, mods)
-- Scroll up
if (button == 4) then
backlight.backlight_up(config.backlight.scroll_step)
-- Scroll down
elseif (button == 5) then
backlight.backlight_down(config.backlight.scroll_step)
end
awesome.emit_signal("module::backlight:popup_show_stay")
end
)
awesome.connect_signal("module::backlight:update",
function(value)
widget.arc.value = value
if value >= 90 then widget.icon.image = beautiful.icons.brightness.i
elseif value >= 80 then widget.icon.image = beautiful.icons.brightness.h
elseif value >= 70 then widget.icon.image = beautiful.icons.brightness.g
elseif value >= 60 then widget.icon.image = beautiful.icons.brightness.f
elseif value >= 50 then widget.icon.image = beautiful.icons.brightness.e
elseif value >= 40 then widget.icon.image = beautiful.icons.brightness.d
elseif value >= 30 then widget.icon.image = beautiful.icons.brightness.c
elseif value >= 20 then widget.icon.image = beautiful.icons.brightness.b
elseif value <= 10 then widget.icon.image = beautiful.icons.brightness.a end
end
)
backlight.watch(
5,
function()
awesome.emit_signal("module::backlight::update_read")
end,
widget.widget
)
return widget