aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/ui/window_switcher
diff options
context:
space:
mode:
authordelta <darkussdelta@gmail.com>2023-03-04 22:04:55 +0100
committerdelta <darkussdelta@gmail.com>2023-03-04 22:18:21 +0100
commitf0b32f45746c026d402651013b7e98315d6956a1 (patch)
treef42609e98522da081cebdd21a674a702d1054bbc /.config/awesome/ui/window_switcher
parenta0f8b5fa6acdd1c2477fb1881dd9067956bf0ae6 (diff)
restructure awesome config, add fresnel
Diffstat (limited to '.config/awesome/ui/window_switcher')
-rw-r--r--.config/awesome/ui/window_switcher/init.lua172
1 files changed, 172 insertions, 0 deletions
diff --git a/.config/awesome/ui/window_switcher/init.lua b/.config/awesome/ui/window_switcher/init.lua
new file mode 100644
index 0000000..f14c865
--- /dev/null
+++ b/.config/awesome/ui/window_switcher/init.lua
@@ -0,0 +1,172 @@
+local awful = require "awful"
+local vars = require "misc.vars"
+local wibox = require "wibox"
+local obj = require "gears.object"
+local debug = require "gears.debug"
+local naughty = require "naughty"
+local xresources = require "beautiful.xresources"
+local dpi = xresources.apply_dpi
+
+
+local ws = obj {
+ enable_properties = true,
+ enable_auto_signals = true
+}
+
+ws.selected = 1
+ws.max = 0
+
+local widget = awful.popup {
+ widget = {
+ {
+ widget = awful.widget.tasklist {
+ screen = screen[1],
+ filter = awful.widget.tasklist.filter.allscreen,
+ style = {
+ shape = vars.shape,
+ },
+ layout = {
+ forced_num_rows = 1,
+ layout = wibox.layout.grid.vertical,
+ spacing = vars.padding
+ },
+ widget_template = {
+ {
+ layout = wibox.layout.align.horizontal,
+ {
+ widget = wibox.container.place,
+ {
+ widget = wibox.container.margin,
+ margins = dpi(6),
+ {
+ id = "text_role",
+ widget = wibox.widget.textbox,
+ }
+ }
+ },
+ nil,
+ {
+ widget = wibox.container.place,
+ {
+ widget = wibox.container.margin,
+ margins = dpi(6),
+ {
+ id = "tag_role",
+ widget = wibox.widget.textbox,
+ }
+ }
+ }
+ },
+ forced_width = dpi(screen[1].geometry.width / 8),
+ bg = vars.colors.black,
+ border_width = vars.border_width,
+ border_color = vars.colors.black,
+ shape = vars.shape,
+ widget = wibox.container.background,
+ create_callback = function(self, client, i)
+ -- self:get_children_by_id("name_role")[1].text = client.name
+ self:get_children_by_id("tag_role")[1].text = client.first_tag.name
+
+ ws:connect_signal("property::selected", function(selected)
+ naughty.notification {
+ urgency = "critical",
+ message = tostring(selected) .. " | " .. tostring(i)
+ }
+
+ if selected == i then
+ self.border_color = vars.colors.yellow
+ else
+ self.border_color = vars.colors.black
+ end
+ end)
+ end
+ -- update_callback = function(self, _, i)
+ -- if ws.selected == i then
+ -- self.border_color = vars.colors.yellow
+ -- else
+ -- self.border_color = vars.colors.black
+ -- end
+ -- end
+ }
+ },
+ id = "tasklist"
+ },
+ widget = wibox.container.margin,
+ margins = vars.padding
+ },
+ border_color = vars.colors.bright.black,
+ border_width = vars.border_width,
+ ontop = true,
+ placement = awful.placement.centered,
+ bg = vars.colors.bg,
+ shape = vars.shape,
+ visible = false
+}
+
+ws.widget = widget
+
+ws.max = ws.widget.widget.tasklist.count
+
+
+
+-- ws.widget:connect_signal("property::count", function(self)
+-- naughty.notification {
+-- urgency = "critical",
+-- message = tostring(ws.max)
+-- }
+-- ws.max = self.count
+-- end)
+
+awful.keygrabber {
+ keybindings = {
+ awful.key {
+ modifiers = { "Mod1" },
+ key = "Tab",
+ on_press = function()
+ -- naughty.notification {
+ -- urgency = "critical",
+ -- message = tostring(WS.widget)
+ -- }
+ naughty.notification {
+ urgency = "critical",
+ message = tostring(ws.selected)
+ }
+ -- local file = io.open("/home/delta/.cache/awesome/tasklist_dump.txt", "w+")
+ -- file:write(debug.dump_return(WS.widget, "tasklist"))
+ -- file:close()
+ -- ws.widget:emit_signal_recursive("widget::layout_changed")
+ -- WS.widget:emit_signal("widget::redraw_needed")
+ if ws.selected + 1 > ws.max then
+ ws.selected = 1
+ return
+ end
+ ws.selected = ws.selected + 1
+ end
+ },
+ awful.key {
+ modifiers = { "Mod1", "Shift" },
+ key = "Tab",
+ on_press = function()
+ ws.widget:emit_signal("widget::layout_changed")
+ if ws.selected - 1 == 0 then
+ ws.selected = ws.max
+ return
+ end
+ ws.selected = ws.selected - 1
+ end
+ },
+ },
+ stop_key = "Mod1",
+ stop_event = "release",
+ start_callback = function()
+ ws.widget.visible = true
+ naughty.notification {
+ urgency = "critical",
+ message = tostring(ws.max)
+}
+ end,
+ stop_callback = function()
+ ws.widget.visible = false
+ end,
+ autostart = false
+}