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