diff options
-rw-r--r-- | theme.lua | 2 | ||||
-rw-r--r-- | widgets/tasklist.lua | 71 |
2 files changed, 39 insertions, 34 deletions
@@ -26,7 +26,7 @@ beautiful.textclock_font = beautiful.font_sans beautiful.tooltip_font = beautiful.font_mono -- bar -beautiful.tasklist_font_focus = beautiful.font -- prevent bold +--beautiful.tasklist_font_focus = beautiful.font -- prevent bold beautiful.wibar_height = math.floor(beautiful.get_font_height(beautiful.font) * 1.15) beautiful.wibar_bg = darkgray beautiful.tasklist_plain_task_name = true -- don't use client status icons diff --git a/widgets/tasklist.lua b/widgets/tasklist.lua index 3acd07f..76616bf 100644 --- a/widgets/tasklist.lua +++ b/widgets/tasklist.lua @@ -5,28 +5,39 @@ local beautiful = require("beautiful") local separator = { widget = wibox.widget.separator, opacity = 0 } -function tooltip_tag_clients() - local text = "" - for _, c in ipairs(awful.screen.focused():get_clients(false)) do - local ctext = c.name - if c == client.focus then - ctext = "* " .. ctext - end - text = text .. ctext .. "\n" - end - return text:sub(1, -2) -- remove last newline -end - -function create_tasklist(s) - local tasklist = awful.widget.tasklist { +function create_tasklist_widget(s, filter, font_focus) + return awful.widget.tasklist { screen = s, - filter = awful.widget.tasklist.filter.focused, + 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 { @@ -45,6 +56,18 @@ function create_tasklist(s) }, }) + -- 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", @@ -54,22 +77,4 @@ function create_tasklist(s) } end ----- signal for changing tasklist filter based on layout ----- DOESNT WORK TODO ---local naughty = require("naughty") ---s:connect_signal("property::layout", function() --- naughty.notify({ --- title = "Hello, AwesomeWM!", --- text = "This is a notification.", --- timeout = 5, -- Timeout in seconds --- position = "top_right" -- Position on the screen --- }) --- if awful.layout.get(s) == awful.layout.suit.max then --- s.mytasklist.filter = awful.widget.tasklist.filter.currenttags --- else --- s.mytasklist.filter = awful.widget.tasklist.filter.focused --- end ---end ---) - return create_tasklist |