aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/misc/helpers.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/awesome/misc/helpers.lua')
-rw-r--r--.config/awesome/misc/helpers.lua121
1 files changed, 121 insertions, 0 deletions
diff --git a/.config/awesome/misc/helpers.lua b/.config/awesome/misc/helpers.lua
new file mode 100644
index 0000000..132a4df
--- /dev/null
+++ b/.config/awesome/misc/helpers.lua
@@ -0,0 +1,121 @@
+local awful = require "awful"
+local gears = require "gears"
+local xresources = require "beautiful.xresources"
+local n = require "naughty".notification
+local dpi = xresources.apply_dpi
+local vars = require "misc.vars"
+local wibox = require "wibox"
+
+local h = {}
+
+-- utils
+
+function h.debug(message)
+ n { message = tostring(message) }
+end
+
+function h.map(t, f)
+ local nt = {}
+ for k,v in pairs(t) do
+ nt[k] = f(v)
+ end
+ return nt
+end
+
+function h.filter(t, f, dict)
+ local nt = {}
+ for k,v in pairs(t) do
+ if not f(v) then goto continue end
+ if dict then
+ nt[k] = v
+ else
+ table.insert(nt, v)
+ end
+ ::continue::
+ end
+ return nt
+end
+
+-- This is taken from http://lua-users.org/wiki/SortedIteration
+-- This version is stripped of comments and empty lines + some stuff is renamed
+
+local function __gen_oindex( t )
+ local oindex = {}
+ for key in pairs(t) do
+ table.insert(oindex, key)
+ end
+ table.sort(oindex)
+ return oindex
+end
+
+local function onext(t, state)
+ local key = nil
+ if state == nil then
+ t.__oindex = __gen_oindex(t)
+ key = t.__oindex[1]
+ else
+ for i = 1,#t.__oindex do
+ if t.__oindex[i] == state then
+ key = t.__oindex[i+1]
+ end
+ end
+ end
+ if key then
+ return key, t[key]
+ end
+ t.__oindex = nil
+end
+
+function h.opairs(t)
+ return onext, t, nil
+end
+
+-- markup
+
+function h.markup_fg(color, text)
+ return "<span color=\"" .. color .. "\">" .. text .. "</span>"
+end
+
+function h.markup_bg(color, text)
+ return "<span bgcolor=\"" .. color .. "\">" .. text .. "</span>"
+end
+
+-- ui
+
+function h.font(factor)
+ return vars.text_font .. " " .. vars.font_size * (factor or 1)
+end
+
+function h.symbol_font(factor)
+ return vars.symbol_font .. " " .. vars.font_size * (factor or 1)
+end
+
+function h.styled(target)
+ return gears.table.crush({
+ bg = vars.colors.bg,
+ border_color = vars.colors.bright.black,
+ border_width = vars.border_width,
+ shape = vars.shape
+ }, target)
+end
+
+function h.popup(args)
+ args.widget = {
+ widget = wibox.container.margin,
+ margins = vars.big_padding,
+ args.widget
+ }
+
+ return awful.popup(h.styled(args))
+end
+
+function h.tooltip(objects, callback)
+ awful.tooltip(h.styled {
+ objects = objects,
+ timer_function = callback,
+ margin_leftright = vars.padding,
+ margin_topbottom = vars.padding
+ })
+end
+
+return h