You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.5 KiB
96 lines
3.5 KiB
local awful = require("awful")
|
|
local wibox = require("wibox")
|
|
local gears = require("gears")
|
|
local beautiful = require("beautiful")
|
|
local awmtk = require("awmtk")
|
|
local tasklist_buttons = gears.table.join(
|
|
awful.button({ }, 1, function (c)
|
|
if c == client.focus then
|
|
c.minimized = true
|
|
else
|
|
c:emit_signal(
|
|
"request::activate",
|
|
"tasklist",
|
|
{raise = true}
|
|
)
|
|
end
|
|
end),
|
|
awful.button({ }, 3, function()
|
|
awful.menu.client_list({ theme = { width = 250 } })
|
|
end),
|
|
awful.button({ }, 4, function ()
|
|
awful.client.focus.byidx(1)
|
|
end),
|
|
awful.button({ }, 5, function ()
|
|
awful.client.focus.byidx(-1)
|
|
end))
|
|
|
|
|
|
return function(options)
|
|
local style = awmtk.style(awmtk.defaults,options.style or {},"tasklist_")
|
|
-- Color definitions
|
|
local constraint = options.constraint or style.tasklist_constraint
|
|
--This one is a little bit awkward, considering that we just
|
|
--need the templates, not the widgets
|
|
local _style = awmtk._create_preprocess_style(style,"tasklist_")
|
|
_style.button_shape = awmtk.preprocess.button_shape(_style)
|
|
local container = style.tasklist_button_widget(_style)
|
|
return function(s)
|
|
local tasklist = {
|
|
screen = s,
|
|
filter = awful.widget.tasklist.filter.currenttags,
|
|
buttons = tasklist_buttons,
|
|
style = {
|
|
shape = container.shape,
|
|
shape_border_width = container.shape_border_width,
|
|
shape_border_color = container.shape_border_color
|
|
},
|
|
layout = options.container or {
|
|
spacing = style.tasklist_container_spacing,
|
|
layout = (options.vertical and
|
|
wibox.layout.fixed.vertical
|
|
) or ((not options.stretch) and
|
|
wibox.layout.flex.horizontal
|
|
) or
|
|
wibox.layout.fixed.horizontal
|
|
|
|
},
|
|
widget_template = container
|
|
}
|
|
if constraint then
|
|
tasklist.widget_template = {
|
|
container,
|
|
widget = wibox.container.constraint,
|
|
width = (type(constraint) == "number" and constraint) or 180,
|
|
strategy = "exact"
|
|
}
|
|
end
|
|
local top = awmtk.utils.get_child_by_id(
|
|
tasklist.widget_template,"widget_container"
|
|
)[1]
|
|
top[1] = {
|
|
{
|
|
id = 'clienticon',
|
|
widget = awful.widget.clienticon,
|
|
},
|
|
(options.names and {
|
|
id = 'text_role',
|
|
widget = wibox.widget.textbox,
|
|
ellipsize = "end",
|
|
}),
|
|
left = style.tasklist_padding or ((not options.vertical) and 6),
|
|
right = style.tasklist_padding or ((not options.vertical) and 6),
|
|
layout = (options.vertical and wibox.layout.fixed.vertical) or
|
|
wibox.layout.fixed.horizontal,
|
|
spacing = 3,
|
|
}
|
|
local top = awmtk.utils.get_child_by_id(
|
|
tasklist.widget_template,"widget_background"
|
|
)[1]
|
|
top.id = "background_role"
|
|
tasklist.widget_template.create_callback = function(self, c, index, objects)
|
|
self:get_children_by_id('clienticon')[1].client = c
|
|
end
|
|
return awful.widget.tasklist(tasklist)
|
|
end
|
|
end
|