summaryrefslogtreecommitdiff
path: root/awesome/widgets/classiclayouts.lua
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2024-10-11 20:43:20 -0500
committerTim Keller <tjk@tjkeller.xyz>2024-10-11 20:43:20 -0500
commitce020ab718b0ea09224dd15fc9a5796b3acc7904 (patch)
tree5d1ab3fb93f85d6fbf1b9fe84dfcd3484ce6ef33 /awesome/widgets/classiclayouts.lua
parent5e84a09eb67772b07a73102538d2445ecb403613 (diff)
downloaddotconfig-ce020ab718b0ea09224dd15fc9a5796b3acc7904.tar.xz
dotconfig-ce020ab718b0ea09224dd15fc9a5796b3acc7904.zip
overhaul awesome
Diffstat (limited to 'awesome/widgets/classiclayouts.lua')
-rw-r--r--awesome/widgets/classiclayouts.lua77
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