diff options
Diffstat (limited to '.config/awesome/ui/insightful/init.lua')
-rw-r--r-- | .config/awesome/ui/insightful/init.lua | 169 |
1 files changed, 63 insertions, 106 deletions
diff --git a/.config/awesome/ui/insightful/init.lua b/.config/awesome/ui/insightful/init.lua index 4ed6099..1e61046 100644 --- a/.config/awesome/ui/insightful/init.lua +++ b/.config/awesome/ui/insightful/init.lua @@ -1,9 +1,11 @@ local awful = require "awful" local gtable = require "gears.table" -local h = require "misc.helpers" -local vars = require "misc.vars" +local qui = require "quarrel.ui" +local qtable = require "quarrel.table" +local qvars = require "quarrel.vars" local wibox = require "wibox" local rubato = require "lib.rubato" +local beautiful = require "beautiful" local btn = awful.button.names local first_time = true @@ -14,44 +16,45 @@ local insightful = {} insightful._toggled = false insightful._bindings = {} insightful._selected_group = "" +insightful._selected_group_index = 1 insightful._keymap = { - Control = "Control", - Mod1 = "Alt", + Control = "Control", + Mod1 = "Alt", ISO_Level3_Shift = "Alt Gr", - Mod4 = "Super", - Insert = "Insert", - Delete = "Delete", - Next = "Page Up", - Prior = "Page Down", - Left = "", - Up = "", - Right = "", - Down = "", - KP_End = "1", - KP_Down = "#2", - KP_Next = "#3", - KP_Left = "#4", - KP_Begin = "#5", - KP_Right = "#6", - KP_Home = "#7", - KP_Up = "#8", - KP_Prior = "#9", - KP_Insert = "#0", - KP_Delete = "#.", - KP_Divide = "#/", - KP_Multiply = "#*", - KP_Subtract = "#-", - KP_Add = "#+", - KP_Enter = "#Enter", - Escape = "Esc", - Tab = "Tab", - space = "Space", - Return = "Enter", - dead_acute = "´", - dead_circumflex = "^", - dead_grave = "`", - XF86MonBrightnessUp = "🔆+", + Mod4 = "Super", + Insert = "Insert", + Delete = "Delete", + Next = "Page Up", + Prior = "Page Down", + Left = "", + Up = "", + Right = "", + Down = "", + KP_End = "1", + KP_Down = "#2", + KP_Next = "#3", + KP_Left = "#4", + KP_Begin = "#5", + KP_Right = "#6", + KP_Home = "#7", + KP_Up = "#8", + KP_Prior = "#9", + KP_Insert = "#0", + KP_Delete = "#.", + KP_Divide = "#/", + KP_Multiply = "#*", + KP_Subtract = "#-", + KP_Add = "#+", + KP_Enter = "#Enter", + Escape = "Esc", + Tab = "Tab", + space = "Space", + Return = "Enter", + dead_acute = "´", + dead_circumflex = "^", + dead_grave = "`", + XF86MonBrightnessUp = "🔆+", XF86MonBrightnessDown = "🔅-", XF86AudioRaiseVolume = "ﱛ", XF86AudioLowerVolume = "ﱜ", @@ -65,15 +68,21 @@ insightful._keymap = { [tostring(btn.RIGHT)] = mouse .. "Right" } -insightful._widget = h.popup { +insightful._widget = qui.popup { visible = false, ontop = true, - placement = awful.placement.centered, + placement = function(d) + awful.placement.top(d, { + margins = { + top = beautiful.useless_gap * 2 + } + }) + end, minimum_height = screen[1].geometry.height / 2, minimum_width = screen[1].geometry.width / 2, widget = { layout = wibox.layout.fixed.vertical, - spacing = vars.big_padding, + spacing = qvars.big_padding, id = "layout_container" } } @@ -97,9 +106,9 @@ function insightful:_generate() }) end - for group, keybinds in h.opairs(grouped_binds) do + for group, keybinds in qtable.opairs(grouped_binds) do local group_layout = { - spacing = vars.padding, + spacing = qvars.padding, layout = wibox.layout.fixed.vertical } @@ -116,13 +125,13 @@ function insightful:_generate() } for _, mod in ipairs(keybind.mods) do - table.insert(key_layout, 1, h.styled { + table.insert(key_layout, 1, qui.styled { widget = wibox.container.background, - bg = vars.colors.bright.black, + bg = qvars.colors.bright.black, border_width = 0, { widget = wibox.container.margin, - margins = vars.padding, + margins = qvars.padding, { widget = wibox.widget.textbox, text = insightful._keymap[mod] or mod @@ -154,7 +163,7 @@ function insightful:_generate() if keybind.desc then key_and_desc_layout[3] = { widget = wibox.container.background, - fg = vars.colors.dim.fg, + fg = qvars.colors.dim.fg, { widget = wibox.widget.textbox, text = keybind.desc @@ -171,12 +180,12 @@ function insightful:_generate() { { widget = wibox.container.background, - bg = vars.colors.yellow, - fg = vars.colors.bg, - shape = vars.shape, + bg = qvars.colors.yellow, + fg = qvars.colors.bg, + shape = qvars.shape, { widget = wibox.container.margin, - margins = vars.padding, + margins = qvars.padding, { widget = wibox.widget.textbox, text = group @@ -187,15 +196,15 @@ function insightful:_generate() layout = wibox.layout.align.horizontal }, group_layout, - spacing = vars.padding, + spacing = qvars.padding, layout = wibox.layout.fixed.vertical } end end local timed = rubato.timed { - duration = vars.anim_duration, - intro = vars.anim_intro, + duration = qvars.anim_duration, + intro = qvars.anim_intro, pos = 0, subscribed = function(pos) insightful._widget.opacity = pos @@ -210,7 +219,7 @@ local timed = rubato.timed { function insightful:toggle() if first_time then - insightful:_generate_widget() + insightful:_generate() first_time = false end @@ -218,56 +227,4 @@ function insightful:toggle() insightful._toggled = not insightful._toggled end -local function get_binding_function(trigger) - if type(trigger) == "number" and trigger <= 5 and trigger > 0 then - return "button" - elseif type(trigger) == "string" then - return "key" - end - error("trigger can only be a mouse button or a key", 2) -end - -local function translate_binding(binding, trigger, multiple) - local value = nil - if multiple then - value = trigger[2] - trigger = trigger[1] - end - - local awful_binding = { - modifiers = binding.mods, - [get_binding_function(trigger)] = trigger, - on_press = multiple and function(...) binding.press(value, ...) end or binding.press - } - - if binding.desc then - awful_binding.description = binding.desc - end - if binding.group then - awful_binding.group = binding.group - end - - return awful[get_binding_function(trigger)](awful_binding) -end - -function insightful:bind(binding) - local awful_bindings = {} - table.insert(self._bindings, binding) - - if type(binding.triggers) == "table" then - for _, trigger in ipairs(binding.triggers) do - table.insert(awful_bindings, translate_binding(binding, trigger, true)) - end - elseif type(binding.triggers) == "string" or type(binding.triggers) == "number" then - return translate_binding(binding, binding.triggers, false) - else - error("binding.triggers can only be a string or a table") - end - - -- for some reason multi-trigger bindings only work if i do this - -- i spent a day debugging this - -- thanks awesome - return gtable.join(table.unpack(awful_bindings)) -end - return insightful |