local awful = require("awful")
local gears = require("gears")
local beautiful = require("beautiful")
local wibox = require("wibox")
local capi = { screen = screen, client = client }
-- Get theme variables
local visible_clients_color = beautiful.minimal_tasklist_visible_clients_color or "#1D8CD2"
local visible_clients_text = beautiful.minimal_tasklist_visible_clients_text or "v: "
local hidden_clients_color = beautiful.minimal_tasklist_hidden_clients_color or "#2DD283"
local hidden_clients_text = beautiful.minimal_tasklist_hidden_clients_text or "h: "
local minimal_tasklist = wibox.widget{
text = "minimal_tasklist widget",
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
-- Mouse control
minimal_tasklist:buttons(gears.table.join(
-- Restore minimized
awful.button({ }, 1, function ()
local c = awful.client.restore()
if c then
client.focus = c
c:raise()
end
end),
-- Close
awful.button({ }, 2, function ()
if client.focus ~= nil then
client.focus:kill()
end
end),
-- Minimize
awful.button({ }, 3, function ()
if client.focus ~= nil then
client.focus.minimized = true
end
end),
-- Cycle clients
awful.button({ }, 4, function ()
awful.client.focus.byidx(-1)
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(1)
end)
))
-- Returns the minimized clients in the current tag(s)
local function get_minimized_clients()
local clients = {}
for _, c in ipairs(capi.client.get()) do
if not (c.skip_taskbar or c.hidden
or c.type == "splash" or c.type == "dock"
or c.type == "desktop") and c.minimized
and awful.widget.tasklist.filter.currenttags(c, awful.screen.focused()) then
table.insert(clients,c)
end
end
return clients
end
local function update_widget()
local s = awful.screen.focused()
local hidden_clients = get_minimized_clients()
--local hidden_clients = s.hidden_clients
local clients = s.clients
--local color = "#493999"
local txt = hidden_clients_text .. #hidden_clients .. visible_clients_text .. #clients
-- Padding for single digit numbers
local vpad = ""
local hpad = ""
if #clients < 10 then
vpad = " "
--vpad = "0"
--vpad = "_"
end
if #hidden_clients < 10 then
hpad = " "
--hpad = "0"
--hpad = "_"
end
minimal_tasklist.markup =
""
.. visible_clients_text .. "" .. vpad .. #clients
.. ""
.. hidden_clients_text .. "" .. hpad .. #hidden_clients
end
-- Signals
--minimal_tasklist:connect_signal("mouse::enter", function ()
--awful.spawn.with_shell("notify-send hello")
--end)
--minimal_tasklist:connect_signal("mouse::leave", function ()
--awful.spawn.with_shell("notify-send bye")
--end)
client.connect_signal("unmanage", function(c)
update_widget()
end)
client.connect_signal("manage", function(c)
update_widget()
end)
client.connect_signal("untagged", function(c)
update_widget()
end)
client.connect_signal("property::minimized", function(c)
update_widget()
end)
awful.tag.attached_connect_signal(s, "property::selected", function ()
update_widget()
end)
return minimal_tasklist