1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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,
}
|