tests: Test the notification rules.

This commit is contained in:
Emmanuel Lepage Vallee 2019-08-18 01:53:14 -04:00
parent afe58d6cd2
commit 2d477383ee
6 changed files with 295 additions and 0 deletions

View File

@ -0,0 +1,61 @@
--DOC_GEN_IMAGE --DOC_NO_USAGE
local parent = ... --DOC_HIDE
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
local wibox = require("wibox") --DOC_HIDE
local beautiful = require("beautiful") --DOC_HIDE
local def = require("naughty.widget._default") --DOC_HIDE
local acommon = require("awful.widget.common") --DOC_HIDE
beautiful.notification_bg = beautiful.bg_normal --DOC_HIDE
ruled.notification.connect_signal("request::rules", function()
-- Add a red background for urgent notifications.
ruled.notification.append_rule {
rule = { }, -- Match everything.
properties = {
append_actions = {
naughty.action {
name = "Snooze (5m)",
},
naughty.action {
name = "Snooze (15m)",
},
naughty.action {
name = "Snooze (1h)",
},
},
}
}
end)
awesome.emit_signal("startup") --DOC_HIDE
--DOC_NEWLINE
-- Create a normal notification.
local notif = --DOC_HIDE
naughty.notification {
title = "A notification",
message = "This is very informative",
icon = beautiful.awesome_icon,
actions = {
naughty.action { name = "Existing 1" },
naughty.action { name = "Existing 2" },
}
}
local function show_notification(n) --DOC_HIDE
local default = wibox.widget(def) --DOC_HIDE
acommon._set_common_property(default, "notification", n) --DOC_HIDE
local w, h = default:fit({dpi=96}, 9999, 9999) --DOC_HIDE
default.forced_width = w + 250 --DOC_HIDE
default.forced_height = h --DOC_HIDE
parent.forced_width = w + 250 --DOC_HIDE
parent:add(default) --DOC_HIDE
end --DOC_HIDE
parent.spacing = 10 --DOC_HIDE
show_notification(notif) --DOC_HIDE

View File

@ -0,0 +1,29 @@
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
local function get_mpris_actions() end --DOC_HIDE
local my_music_widget_template = nil --DOC_HIDE
ruled.notification.connect_signal("request::rules", function() --DOC_HIDE
ruled.notification.append_rule {
rule = { has_class = "amarok" },
properties = {
widget_template = my_music_widget_template,
actions = get_mpris_actions(),
works = true --DOC_HIDE
}
}
end) --DOC_HIDE
awesome.emit_signal("startup") --DOC_HIDE
local c = client.gen_fake { class = "amarok" } --DOC_HIDE
client.focus = c --DOC_HIDE
assert(client.focus == c) --DOC_HIDE
local notif = naughty.notification { --DOC_HIDE
message = "I am SPAM", --DOC_HIDE
clients = {c}, --DOC_HIDE note that this is undocumented
} --DOC_HIDE
assert(notif.works) --DOC_HIDE

View File

@ -0,0 +1,24 @@
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
ruled.notification.connect_signal("request::rules", function() --DOC_HIDE
-- Note that the the message is matched as a pattern.
ruled.notification.append_rule {
rule = { message = "I am SPAM", has_focus = true },
properties = { ignore = true}
}
end) --DOC_HIDE
awesome.emit_signal("startup") --DOC_HIDE
local c = client.gen_fake { class = "xchat" } --DOC_HIDE
client.focus = c --DOC_HIDE
assert(client.focus == c) --DOC_HIDE
local notif = naughty.notification { --DOC_HIDE
message = "I am SPAM", --DOC_HIDE
clients = {c}, --DOC_HIDE note that this is undocumented
} --DOC_HIDE
assert(#notif.clients == 1 and notif.clients[1] == client.focus) --DOC_HIDE
assert(notif.ignore) --DOC_HIDE

View File

@ -0,0 +1,30 @@
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
local function get_mpris_actions() end --DOC_HIDE
local my_music_widget_template = nil --DOC_HIDE
ruled.notification.connect_signal("request::rules", function() --DOC_HIDE
ruled.notification.append_rule {
rule = { has_instance = "amarok" },
properties = {
widget_template = my_music_widget_template,
actions = get_mpris_actions(),
works = true --DOC_HIDE
}
}
end) --DOC_HIDE
awesome.emit_signal("startup") --DOC_HIDE
local c = client.gen_fake { instance = "amarok" } --DOC_HIDE
assert(c.instance == "amarok") --DOC_HIDE
client.focus = c --DOC_HIDE
assert(client.focus == c) --DOC_HIDE
local notif = naughty.notification { --DOC_HIDE
message = "I am SPAM", --DOC_HIDE
clients = {c}, --DOC_HIDE note that this is undocumented
} --DOC_HIDE
assert(notif.works) --DOC_HIDE

View File

@ -0,0 +1,60 @@
--DOC_GEN_IMAGE --DOC_NO_USAGE
local parent = ... --DOC_HIDE
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
local wibox = require("wibox") --DOC_HIDE
local beautiful = require("beautiful") --DOC_HIDE
local def = require("naughty.widget._default") --DOC_HIDE
local acommon = require("awful.widget.common") --DOC_HIDE
beautiful.notification_bg = beautiful.bg_normal --DOC_HIDE
ruled.notification.connect_signal("request::rules", function()
-- Add a red background for urgent notifications.
ruled.notification.append_rule {
rule = { urgency = "critical" },
properties = { bg = "#ff0000", fg = "#ffffff", timeout = 0 }
}
--DOC_NEWLINE
-- Or green background for normal ones.
ruled.notification.append_rule {
rule = { urgency = "normal" },
properties = { bg = "#00ff00", fg = "#000000"}
}
end)
awesome.emit_signal("startup") --DOC_HIDE
--DOC_NEWLINE
-- Create a normal notification.
local notif = --DOC_HIDE
naughty.notification {
title = "A notification 1",
message = "This is very informative",
icon = beautiful.awesome_icon,
urgency = "normal",
}
--DOC_NEWLINE
-- Create a normal notification.
local notif2 = --DOC_HIDE
naughty.notification {
title = "A notification 2",
message = "This is very informative",
icon = beautiful.awesome_icon,
urgency = "critical",
}
local function show_notification(n) --DOC_HIDE
local default = wibox.widget(def) --DOC_HIDE
acommon._set_common_property(default, "notification", n) --DOC_HIDE
parent:add(default) --DOC_HIDE
end --DOC_HIDE
parent.spacing = 10 --DOC_HIDE
show_notification(notif) --DOC_HIDE
show_notification(notif2) --DOC_HIDE

View File

@ -0,0 +1,91 @@
--DOC_GEN_IMAGE --DOC_NO_USAGE
local parent = ... --DOC_HIDE
local naughty = require("naughty") --DOC_HIDE
local ruled = {notification = require("ruled.notification")}--DOC_HIDE
local wibox = require("wibox") --DOC_HIDE
local beautiful = require("beautiful") --DOC_HIDE
local box = nil --DOC_HIDE
beautiful.notification_bg = beautiful.bg_normal --DOC_HIDE
ruled.notification.connect_signal("request::rules", function()
-- Add a red background for urgent notifications.
ruled.notification.append_rule {
rule = { app_name = "mdp" },
properties = {
widget_template = {
{
{
{
{
naughty.widget.icon,
forced_height = 48,
halign = "center",
valign = "center",
widget = wibox.container.place
},
{
align = "center",
widget = naughty.widget.title,
},
{
align = "center",
widget = naughty.widget.message,
},
{
orientation = "horizontal",
widget = wibox.widget.separator,
forced_height = 1,
},
{
nil,
{
wibox.widget.textbox "",
wibox.widget.textbox "",
wibox.widget.textbox "",
spacing = 20,
layout = wibox.layout.fixed.horizontal,
},
expand = "outside",
nil,
layout = wibox.layout.align.horizontal,
},
spacing = 10,
layout = wibox.layout.fixed.vertical,
},
margins = beautiful.notification_margin,
widget = wibox.container.margin,
},
id = "background_role",
widget = naughty.container.background,
},
strategy = "max",
width = 160,
widget = wibox.container.constraint,
}
}
}
end)
naughty.connect_signal("request::display", function(n)
box = --DOC_HIDE
naughty.layout.box { notification = n }
end)
awesome.emit_signal("startup") --DOC_HIDE
local notif2 = --DOC_HIDE
naughty.notification { --DOC_HIDE
title = "Daft Punk", --DOC_HIDE
message = "Harder, Better, Faster, Stronger", --DOC_HIDE
icon = beautiful.awesome_icon,
icon_size = 128, --DOC_HIDE
app_name = "mdp", --DOC_HIDE
} --DOC_HIDE
assert(notif2.app_name == "mdp") --DOC_HIDE
assert(box) --DOC_HIDE
box.widget.forced_width = 250 --DOC_HIDE
parent:add(box.widget) --DOC_HIDE