diff options
author | delta <darkussdelta@gmail.com> | 2024-03-05 14:48:59 +0100 |
---|---|---|
committer | delta <darkussdelta@gmail.com> | 2024-03-05 14:48:59 +0100 |
commit | 510ef8e178929cf5e0c7fd5a5120fecf5f1b79f2 (patch) | |
tree | 3582e5cd7d000335ca94f2a009f3aed57bd86919 /.config/awesome/quarrel/ui.lua | |
parent | 95ba8030f722a616cff06c122dcfb2f63e25cf45 (diff) |
idk anymore
Diffstat (limited to '.config/awesome/quarrel/ui.lua')
-rw-r--r-- | .config/awesome/quarrel/ui.lua | 94 |
1 files changed, 58 insertions, 36 deletions
diff --git a/.config/awesome/quarrel/ui.lua b/.config/awesome/quarrel/ui.lua index 274d48a..1db4a70 100644 --- a/.config/awesome/quarrel/ui.lua +++ b/.config/awesome/quarrel/ui.lua @@ -2,69 +2,68 @@ local awful = require "awful" local gtable = require "gears.table" local qbind = require "quarrel.bind" local qvars = require "quarrel.vars" +local rtimed = require "lib.rubato.timed" local wibox = require "wibox" +---@class QuarrelUi local qui = {} -function qui.markup_fg(color, text) - return "<span color=\"" .. color .. "\">" .. text .. "</span>" -end - -function qui.markup_bg(color, text) - return "<span bgcolor=\"" .. color .. "\">" .. text .. "</span>" -end - +--- Return qvars.text_font with size scaled by factor +---@param factor number +---@return string +---@see QuarrelVars.text_font function qui.font(factor) return qvars.text_font .. " " .. qvars.font_size * (factor or 1) end +--- Inject background widget styling into target +---@param target table +---@return table function qui.styled(target) return gtable.crush({ bg = qvars.colors.bg, border_color = qvars.colors.bright.black, border_width = qvars.border_width, - shape = qvars.shape + shape = qvars.shape, }, target) end +--- Generate a styled popup +---@param target table +---@return table function qui.popup(target) target.widget = { widget = wibox.container.margin, margins = qvars.big_padding, - target.widget + target.widget, } return awful.popup(qui.styled(target)) end -function qui.tooltip(objects, callback) - awful.tooltip(qui.styled { - objects = objects, - timer_function = callback, - margin_leftright = qvars.padding, - margin_topbottom = qvars.padding - }) -end - +--- Generate svg recolor string +---@param color string +---@return string function qui.recolor(color) return "svg{fill:" .. color .. "}" end -function qui.icon(image, color, target) - local widget = { +--- Generate icon widget +---@param args table +---@return table +function qui.icon(args) + return gtable.crush({ widget = wibox.widget.imagebox, - image = image, + image = args.icon, forced_width = qvars.char_height, forced_height = qvars.char_height, - stylesheet = qui.recolor(color or qvars.colors.fg) - } - if target then - return gtable.crush(widget, target) - else - return widget - end + stylesheet = qui.recolor(args.color or qvars.colors.fg), + }, args.widget or {}) end +--- Generate button widget +---@param args table +---@return table function qui.button(args) args.press = args.press or function(_) end local widget = wibox.widget(gtable.crush({ @@ -73,7 +72,7 @@ function qui.button(args) forced_height = qvars.char_height, forced_width = qvars.char_height, stylesheet = qui.recolor(qvars.colors.fg), - press = args.press + press = args.press, }, args.widget or {})) widget.buttons = { @@ -82,16 +81,19 @@ function qui.button(args) press = function() widget:press() end, - hidden = true - } + hidden = true, + }, } return widget end +--- Generate toggle widget +---@param args table +---@return table function qui.toggle(args) args.press = args.press or function(_) end - local widget = qui.button({ + local widget = qui.button { widget = gtable.crush({ toggled = false, silent_press = function(self, state) @@ -100,7 +102,7 @@ function qui.toggle(args) else self.toggled = not self.toggled end - + if self.toggled then self.image = args.on else @@ -114,10 +116,30 @@ function qui.toggle(args) self:silent_press() end args.press(self) - end - }) + end, + } return widget end +---@param widget wibox.widget.base +---@param cursor string +function qui.hoverable(widget, cursor) + local hovering = false + + widget:connect_signal("mouse::enter", function() + local w = mouse.current_wibox + if w then + w.cursor = cursor + end + end) + + widget:connect_signal("mouse::leave", function() + local w = mouse.current_wibox + if w then + w.cursor = "left_ptr" + end + end) +end + return qui |