local gears = require "gears" local lit = require "lib.lit" local qbezier = require "quarrel.bezier" local qui = require "quarrel.ui" local wibox = require "wibox" local widget = wibox.widget { widget = wibox.container.constraint, height = 120, width = 120, strategy = "exact", { widget = lit.widget.linechart, -- max_value = 30, -- step_width = 10, -- scale = true, -- stack = false, -- forced_height = 30, -- step_hook = curvaceous -- values = { 1, 10, 100 }, fill = true, fill_color = "#00ff00", -- fill_border = true, fill_border_color = "#ff0000", draw_bg = function(cr, width, _, min, max, transform) cr:set_line_width(1) local min_abs = math.abs(min) local dash_pattern = { 6, 4 } local rendered_zero, zero_overlap = false, false for i = 0, 4 do local temp = ((min_abs + max) * (i / 4)) - min_abs rendered_zero = rendered_zero or temp == 0 if rendered_zero and not zero_overlap and min < 0 then cr:set_source_rgba(gears.color.parse_color "#0000ff") zero_overlap = true else cr:set_dash(dash_pattern, 1, 0) cr:set_source_rgba(gears.color.parse_color "#ff0000ff") end local y = transform(temp) cr:move_to(0, y) cr:line_to(width, y) cr:stroke() cr:set_dash({}, 0, 0) end if not rendered_zero then cr:set_source_rgba(gears.color.parse_color "#0000ff") local h_0 = transform(0) cr:move_to(0, h_0) cr:line_to(width, h_0) cr:stroke() end end, }, } -- for _ = 1, 100 do -- widget.widget:add_value(math.random(0, 30)) -- end -- require "gears.timer" { -- autostart = true, -- timeout = 0.2, -- callback = function () -- widget.widget:add_value(math.random(0, 30)) -- end -- } return widget