summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--theme.lua2
-rw-r--r--widgets/tasklist.lua71
2 files changed, 39 insertions, 34 deletions
diff --git a/theme.lua b/theme.lua
index 4a36ec0..d5d8c81 100644
--- a/theme.lua
+++ b/theme.lua
@@ -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