AwesomeFiles/config/awesome/ui/notifs/init.lua
2022-02-22 02:31:54 +07:00

241 lines
9.2 KiB
Lua

local naughty = require("naughty")
local beautiful = require("beautiful")
local gears = require("gears")
local wibox = require("wibox")
local awful = require("awful")
local dpi = beautiful.xresources.apply_dpi
local helpers = require("helpers")
local ruled = require("ruled")
local menubar = require("menubar")
naughty.connect_signal("request::icon", function(n, context, hints)
if context ~= "app_icon" then return end
local path = menubar.utils.lookup_icon(hints.app_icon) or
menubar.utils.lookup_icon(hints.app_icon:lower())
if path then n.icon = path end
end)
require("ui.notifs.brightness")
require("ui.notifs.playerctl")
require("ui.notifs.volume")
require("ui.notifs.notifications-center")
naughty.config.defaults.ontop = true
naughty.config.defaults.screen = awful.screen.focused()
naughty.config.defaults.timeout = 3
naughty.config.defaults.title = "System Notification"
naughty.config.defaults.position = "bottom_right"
-- Timeouts
naughty.config.presets.low.timeout = 3
naughty.config.presets.critical.timeout = 0
naughty.config.presets.normal = {
font = beautiful.font,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal
}
naughty.config.presets.low = {
font = beautiful.font,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal
}
naughty.config.presets.critical = {
font = beautiful.font_name .. "10",
fg = beautiful.xcolor1,
bg = beautiful.bg_normal,
timeout = 0
}
naughty.config.presets.ok = naughty.config.presets.normal
naughty.config.presets.info = naughty.config.presets.normal
naughty.config.presets.warn = naughty.config.presets.critical
ruled.notification.connect_signal("request::rules", function()
-- All notifications will match this rule.
ruled.notification.append_rule {
rule = {},
properties = {screen = awful.screen.preferred, implicit_timeout = 6}
}
end)
naughty.connect_signal("request::display", function(n)
local appicon = beautiful.notification_icon
local time = os.date("%H:%M")
local action_widget = {
{
{
id = "text_role",
align = "center",
valign = "center",
font = beautiful.font_name .. "8",
widget = wibox.widget.textbox
},
left = dpi(6),
right = dpi(6),
widget = wibox.container.margin
},
bg = beautiful.xcolor0,
forced_height = dpi(25),
forced_width = dpi(20),
shape = helpers.rrect(dpi(4)),
widget = wibox.container.background
}
local actions = wibox.widget {
notification = n,
base_layout = wibox.widget {
spacing = dpi(8),
layout = wibox.layout.flex.horizontal
},
widget_template = action_widget,
style = {underline_normal = false, underline_selected = true},
widget = naughty.list.actions
}
naughty.layout.box {
notification = n,
type = "notification",
bg = beautiful.xbackground .. 00,
widget_template = {
{
{
{
{
{
{
{
{
image = appicon,
resize = true,
clip_shape = helpers.rrect(
beautiful.border_radius - 3),
widget = wibox.widget.imagebox
},
strategy = "max",
height = dpi(20),
widget = wibox.container.constraint
},
right = dpi(10),
widget = wibox.container.margin
},
{
markup = n.app_name,
align = "left",
font = beautiful.font,
widget = wibox.widget.textbox
},
{
markup = time,
align = "right",
font = beautiful.font,
widget = wibox.widget.textbox
},
layout = wibox.layout.align.horizontal
},
top = dpi(7),
left = dpi(20),
right = dpi(20),
bottom = dpi(5),
widget = wibox.container.margin
},
bg = beautiful.lighter_bg,
widget = wibox.container.background
},
{
{
{
helpers.vertical_pad(10),
{
{
step_function = wibox.container.scroll
.step_functions
.waiting_nonlinear_back_and_forth,
speed = 50,
{
markup = "<span weight='bold'>" ..
n.title .. "</span>",
font = beautiful.font,
align = "left",
widget = wibox.widget.textbox
},
forced_width = dpi(204),
widget = wibox.container.scroll
.horizontal
},
{
{
markup = n.message,
align = "left",
font = beautiful.font,
widget = wibox.widget.textbox
},
right = 10,
widget = wibox.container.margin
},
spacing = 0,
layout = wibox.layout.flex.vertical
},
helpers.vertical_pad(10),
layout = wibox.layout.align.vertical
},
left = dpi(20),
right = dpi(20),
widget = wibox.container.margin
},
{
{
nil,
{
{
image = n.icon,
resize = true,
clip_shape = helpers.rrect(
beautiful.border_radius - 3),
widget = wibox.widget.imagebox
},
strategy = "max",
height = 40,
widget = wibox.container.constraint
},
nil,
expand = "none",
layout = wibox.layout.align.vertical
},
top = dpi(0),
left = dpi(10),
right = dpi(10),
bottom = dpi(0),
widget = wibox.container.margin
},
layout = wibox.layout.fixed.horizontal
},
{
{actions, layout = wibox.layout.fixed.vertical},
margins = dpi(10),
visible = n.actions and #n.actions > 0,
widget = wibox.container.margin
},
layout = wibox.layout.fixed.vertical
},
top = dpi(0),
bottom = dpi(5),
widget = wibox.container.margin
},
bg = beautiful.darker_bg,
border_width = 0,
border_color = beautiful.widget_border_color,
shape = helpers.rrect(beautiful.border_radius),
widget = wibox.container.background
}
}
end)