diff options
Diffstat (limited to 'awesome/widgets/classiclayouts.lua')
-rw-r--r-- | awesome/widgets/classiclayouts.lua | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/awesome/widgets/classiclayouts.lua b/awesome/widgets/classiclayouts.lua index 917ca00..3b4fd64 100644 --- a/awesome/widgets/classiclayouts.lua +++ b/awesome/widgets/classiclayouts.lua @@ -1,27 +1,64 @@ -local awful = require("awful") +local wibox = require("wibox") +local layout = require("awful.layout") -local layoutbox = {} +local screen_widgets = {} -- need one widget per screen local layout_icons = { - cornernw = "", - cornerne = "", - cornersw = "", - cornerse = "", - fairh = "", - fairv = "", - max = "[M]", - floating = "><>", - magnifier = "[M]", - fullscreen = "", - spiral = "", - dwindle = "", - tile = "[]=", - tiletop = "TTT", - tilebottom = "TTT", - tileleft = "=[]", + cornernw = "TT=", + cornerne = "=TT", + cornersw = "LL=", + cornerse = "=LL", + fairh = "#_#", + fairv = "##H", + max = "[M]", + floating = "><>", + magnifier = "=O=", + fullscreen = "[*]", + spiral = "[]@", + dwindle = "[]\\", + tile = "[]=", + tiletop = "LLL", + tilebottom = "TTT", + tileleft = "=[]", } -function(s) - s = screen[s or 1] +function update(screen_index) + local s = screen[screen_index or 1] + local w = screen_widgets[s] + local l = layout.get(s) + -- create widget if not existing + if w == nil then + screen_widgets[s] = { widget = wibox.widget.textbox(), layout = l } + w = screen_widgets[s] + --w._layoutbox_tooltip = tooltip {objects = {w}, delay_show = 1} + + -- skip if no change + elseif w.layout == l then + return + end + + -- set widget + local name = layout.getname(l) + --w._layoutbox_tooltip:set_text(name) + w.widget:set_text(layout_icons[name]) -- TODO handle nil + return w.widget +end + +function update_screens() + for s, w in pairs(boxes) do + if s.valid then + update(s) + end + end end + +function update_current_tag(t) + update(t.screen) +end + +tag.connect_signal("property::selected", update_current_tag) +tag.connect_signal("property::layout", update_current_tag) +tag.connect_signal("property::screen", update_screens) + +return update |