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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
local awful = require("awful")
local wibox = require("wibox")
local wibox_tooltip = require("lib.wiboxtooltip")
local beautiful = require("beautiful")
local separator = { widget = wibox.widget.separator, opacity = 0 }
function create_tasklist_widget(s, filter, font_focus)
return awful.widget.tasklist {
screen = s,
filter = filter,
buttons = tasklist_buttons,
widget_template = {
id = "text_role",
widget = wibox.widget.textbox,
align = "center",
},
style = {
font_focus = font_focus,
},
}
end
function create_tasklist(s)
-- allow for different styles for different layouts
local tasklist_focused = create_tasklist_widget(s, awful.widget.tasklist.filter.focused, beautiful.tasklist_font)
local tasklist_currenttags = create_tasklist_widget(s, awful.widget.tasklist.filter.currenttags, beautiful.tasklist_font_focus)
local change_layout = function(layout)
local max = layout == awful.layout.suit.max
tasklist_currenttags:set_visible(max)
tasklist_focused:set_visible(not max)
end
change_layout(s.selected_tag.layout)
-- setup widgets
local tasklist = wibox.widget {
layout = wibox.layout.stack,
tasklist_currenttags,
tasklist_focused,
}
local popup = wibox_tooltip(tasklist, awful.widget.tasklist {
screen = s,
filter = awful.widget.tasklist.filter.currenttags,
layout = {
layout = wibox.layout.fixed.vertical,
},
widget_template = {
id = "text_role",
widget = wibox.widget.textbox,
align = "center",
},
style = {
font_focus = beautiful.font_mono_bold,
},
})
-- setup signals to change tasklist filter on layout changes
local change_layout_from_tag = function(t)
if t.screen ~= s then return end
change_layout(t.layout)
end
tag.connect_signal("property::layout", change_layout_from_tag)
tag.connect_signal("property::selected", change_layout_from_tag)
tag.connect_signal("tagged", change_layout_from_tag)
tag.connect_signal("untagged", change_layout_from_tag)
tag.connect_signal("property::screen", change_layout_from_tag)
-- return widget
return wibox.widget {
layout = wibox.layout.align.horizontal,
expand = "outside",
separator,
tasklist,
separator,
}
end
return create_tasklist
|