blob: 867b09b4acc57a7be9630dd2a22c74deeb660c12 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
|