From e8bb1f4a1844f07fc2f6973f2e7b400f2ddf2f3d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 25 Dec 2016 12:03:06 +0100 Subject: Initial commit. --- pager.lua | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pager.lua (limited to 'pager.lua') diff --git a/pager.lua b/pager.lua new file mode 100644 index 0000000..867b09b --- /dev/null +++ b/pager.lua @@ -0,0 +1,52 @@ +local M = {} + +local wibox = require("wibox") + +local Pager = {} + +local function pager_fit(pager, width, height) + return width, width * #pager.desktop.pages +end + +local function pager_draw(pager, wibox, cr, width, height) + if pager.desktop == nil then + return + end + + local nb_pages = #pager.desktop.pages + local page_height = height / nb_pages + + for i = 1, nb_pages do + local page = pager.desktop.pages[i] + local draw_h_start = (i - 1) * page_height + + for j, client in pairs(page:clients()) do + local text = client.name + local extents = cr:text_extents(text) + cr:move_to(0, draw_h_start) + cr:show_text(text) + draw_h_start = draw_h_start + extents.height + end + end + cr:set_line_width(3) + cr:stroke() +end + +local function pager_set_desktop(pager, desktop) + pager.desktop = desktop + pager:emit_signal("widget::updated") +end + +function Pager:new() + local pager = wibox.widget.base.make_widget() + + pager.fit = pager_fit + pager.draw = pager_draw + pager.set_desktop = pager_set_desktop + + return pager +end + +M.Pager = Pager + +return M -- cgit v1.2.3