diff options
Diffstat (limited to '.config/awesome/ui/wicked/_default.lua')
| -rw-r--r-- | .config/awesome/ui/wicked/_default.lua | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/.config/awesome/ui/wicked/_default.lua b/.config/awesome/ui/wicked/_default.lua new file mode 100644 index 0000000..25283f9 --- /dev/null +++ b/.config/awesome/ui/wicked/_default.lua @@ -0,0 +1,94 @@ +---------------------------------------------------------------------------- +--- The default widget template for the notifications. +-- +-- @author Emmanuel Lepage Vallee <elv1313@gmail.com> +-- @copyright 2019 Emmanuel Lepage Vallee +-- @classmod naughty.widget._default +---------------------------------------------------------------------------- + +local wibox = require("wibox") +local actionlist = require("naughty.list.actions") +local wtitle = require("naughty.widget.title") +local wmessage = require("naughty.widget.message") +local wicon = require("naughty.widget.icon") +local wbg = require("naughty.container.background") +local beautiful = require("beautiful") +local dpi = require("beautiful").xresources.apply_dpi + +-- It is not worth doing a special widget for this. +local function notif_size() + local constraint = wibox.container.constraint() + constraint:set_strategy("max") + constraint:set_width(beautiful.notification_max_width or dpi(500)) + + rawset(constraint, "set_notification", function(_, notif) + constraint._private.notification = setmetatable({notif}, {__mode = "v"}) + local s = false + + if notif.width and notif.width ~= beautiful.notification_max_width then + constraint.width = notif.width + s = true + end + if notif.height then + constraint.height = notif.height + s = true + end + + constraint.strategy = s and "exact" or "max" + end) + + rawset(constraint, "get_notification", function() + return constraint._private.notification[1] + end) + + return constraint +end + +-- It is not worth doing a special widget for this either. +local function notif_margins() + local margins = wibox.container.margin() + margins:set_margins(beautiful.notification_margin or 4) + + rawset(margins, "set_notification", function(_, notif) + if notif.margin then + margins:set_margins(notif.margin) + end + end) + + return margins +end + +-- Used as a fallback when no widget_template is provided, emulate the legacy +-- widget. +return { + { + { + { + { + wicon, + { + widget = wibox.container.place, + valign = "center", + halign = "center", + { + wtitle, + wmessage, + -- spacing = 4, + layout = wibox.layout.fixed.vertical, + } + }, + fill_space = true, + -- spacing = 4, + layout = wibox.layout.fixed.horizontal + }, + actionlist, + -- spacing = 10, + layout = wibox.layout.fixed.vertical, + }, + widget = notif_margins, + }, + id = "background_role", + widget = wbg, + }, + widget = notif_size, +} |
