local awful = require "awful" local btns = awful.button.names local gshape = require "gears.shape" local wibox = require "wibox" -- local qconts = require "quarrel.consts" local qbezier = require "quarrel.animation.bezier" local qvars = {} -- ---@param protected (fun(): table) | table -- function qconsts.protect(protected) -- ---@type table -- local tbl -- if type(protected) == "table" then -- tbl = protected -- elseif type(protected) == "function" then -- tbl = protected() -- else -- error("expected a table or a function that returns a table, got " .. type(protected), 2) -- end -- return setmetatable({}, { -- __index = tbl, -- __newindex = function(t, k, v) -- error("attempted to change constant " .. tostring(k) .. " to " .. tostring(v), 2) -- end -- }) -- end -- qui.BORDER_WIDTH = 1 -- qui.BORDER_RADIUS = 4 -- qui.PADDING = 4 -- qui.BIG_PADDING = 8 qvars.text_font = "Iosevka Comfy Regular" qvars.font_size = 9 qvars.font = qvars.text_font .. " " .. qvars.font_size local char_width, char_height = wibox .widget({ widget = wibox.widget.textbox, text = "a", }) :get_preferred_size_at_dpi(awful.screen.focused().dpi) -- qui.CHAR_HEIGHT = char_height -- qui.CHAR_WIDTH = char_width --- Clip Cairo context ---@param cr cairo_surface Cairo surface ---@param w integer Widget width ---@param h integer Widget height ---@return nil -- function qui.shape(cr, w, h) -- -- gears.shape.rounded_rect(cr, w, h, dpi(4)) -- gshape.rounded_rect(cr, w, h, qui.BORDER_RADIUS) -- end qvars.anim_duration = 0.30 qvars.anim_intro = qvars.anim_duration / 4 local easing_bezier = qbezier(0.2, 0, 0, 1) function qvars.easing(t, b, c, d) local epsilon = 1000 / d return c * easing_bezier:solve(t / d, epsilon) + b end qvars.notif_timeout = 3 -- qvars.bar_size = dpi(24) + qui.BIG_PADDING * 2 -- qvars.element_size = dpi(12) -- qvars.bar_size = 24 + qui.BIG_PADDING * 2 -- qvars.element_size = 12 -- qvars.expanded_bar_size = qui.BIG_PADDING + (qui.BIG_PADDING * 2 + qvars.element_size * 4) * 4 + qui.PADDING * 2 -- local function palette(colors) -- return setmetatable(colors, { -- __call = function(self) -- return self[1] -- end, -- }) -- end -- local colors = require "quarrel.color" -- qcolor.palette = colors.palette -- qcolor.palette = { -- fg = palette { -- low = "#a8afb7", -- "#c8ced7", -- high = "#e8eff8", -- }, -- -- bg = palette { -- lowest = "#070c11", -- low = "#0c1116", -- "#12161c", -- high = "#171c22", -- highest = "#1d2228", -- }, -- -- border = palette { -- "#323b46", -- variant = "#262f39", -- }, -- -- red = palette { -- "#ff928a", -- bright = "#ffb2a9", -- }, -- orange = palette { -- "#ff9f6f", -- bright = "#ffc08e", -- }, -- yellow = palette { -- "#ecb256", -- bright = "#ffd278", -- }, -- green = palette { -- "#8bd294", -- bright = "#abf3b3", -- }, -- cyan = palette { -- "#6dd3c2", -- bright = "#8ef4e2", -- }, -- blue = palette { -- "#8bc3fc", -- bright = "#abe4ff", -- }, -- purple = palette { -- "#c4b1f6", -- bright = "#e4d1ff", -- }, -- pink = palette { -- "#e5acb4", -- bright = "#ffccd4", -- }, -- -- transparent = "#00000000", -- } -- qcolor.palette = { -- fg = x_col.foreground, -- bg = x_col.background, -- -- black = x_col.color0, -- red = x_col.color1, -- green = x_col.color2, -- yellow = x_col.color3, -- blue = x_col.color4, -- pink = x_col.color5, -- cyan = x_col.color6, -- white = x_col.color7, -- -- bright = { -- black = x_col.color8, -- red = x_col.color9, -- green = x_col.color10, -- yellow = x_col.color11, -- blue = x_col.color12, -- pink = x_col.color13, -- cyan = x_col.color14, -- white = x_col.color15, -- }, -- -- dim = { -- fg = "#77828c", -- bg = "#161b22", -- }, -- -- transparent = "#00000000", -- } -- taken from https://github.com/bew/dotfiles/blob/ab9bb1935783f7a31ef777b1d7e26d53f35df864/gui/wezterm/cfg_utils.lua -- qbind.mods = setmetatable({ _SHORT_MAP = { C = "Control", S = "Shift", A = "Mod1", M = "Mod4" } }, { -- __index = function(self, key) -- local resolved_mods = {} -- for i = 1, #key do -- resolved_mods[i] = self._SHORT_MAP[key:sub(i, i)] -- end -- return resolved_mods -- end, -- }) -- -- ---@enum buttons -- qbind.btns = { -- left = btns.LEFT, -- right = btns.RIGHT, -- middle = btns.MIDDLE, -- up = btns.SCROLL_UP, -- down = btns.SCROLL_DOWN, -- } return qvars