136 lines
3.1 KiB
Lua
136 lines
3.1 KiB
Lua
local wibox = require('wibox')
|
|
local beautiful = require('beautiful')
|
|
local naughty = require('naughty')
|
|
local gears = require('gears')
|
|
|
|
local dpi = beautiful.xresources.apply_dpi
|
|
|
|
local config_dir = gears.filesystem.get_configuration_dir()
|
|
local widget_icon_dir = config_dir .. 'widget/notif-center/icons/'
|
|
|
|
local clickable_container = require('widget.clickable-container')
|
|
|
|
local ui_noti_builder = {}
|
|
|
|
-- Notification icon container
|
|
ui_noti_builder.notifbox_icon = function(ico_image)
|
|
local noti_icon = wibox.widget {
|
|
{
|
|
id = 'icon',
|
|
resize = true,
|
|
forced_height = dpi(25),
|
|
forced_width = dpi(25),
|
|
widget = wibox.widget.imagebox
|
|
},
|
|
layout = wibox.layout.fixed.horizontal
|
|
}
|
|
noti_icon.icon:set_image(ico_image)
|
|
return noti_icon
|
|
end
|
|
|
|
-- Notification title container
|
|
ui_noti_builder.notifbox_title = function(title)
|
|
return wibox.widget {
|
|
markup = title,
|
|
font = 'SF Pro Text Bold 12',
|
|
align = 'left',
|
|
valign = 'center',
|
|
widget = wibox.widget.textbox
|
|
}
|
|
end
|
|
|
|
-- Notification message container
|
|
ui_noti_builder.notifbox_message = function(msg)
|
|
return wibox.widget {
|
|
markup = msg,
|
|
font = 'SF Pro Text Regular 11',
|
|
align = 'left',
|
|
valign = 'center',
|
|
widget = wibox.widget.textbox
|
|
}
|
|
end
|
|
|
|
-- Notification app name container
|
|
ui_noti_builder.notifbox_appname = function(app)
|
|
return wibox.widget {
|
|
markup = app,
|
|
font = 'SF Pro Text Bold 12',
|
|
align = 'left',
|
|
valign = 'center',
|
|
widget = wibox.widget.textbox
|
|
}
|
|
end
|
|
|
|
-- Notification actions container
|
|
ui_noti_builder.notifbox_actions = function(n)
|
|
actions_template = wibox.widget {
|
|
notification = n,
|
|
base_layout = wibox.widget {
|
|
spacing = dpi(0),
|
|
layout = wibox.layout.flex.horizontal
|
|
},
|
|
widget_template = {
|
|
{
|
|
{
|
|
{
|
|
{
|
|
id = 'text_role',
|
|
font = 'SF Pro Text Regular 10',
|
|
widget = wibox.widget.textbox
|
|
},
|
|
widget = wibox.container.place
|
|
},
|
|
widget = clickable_container
|
|
},
|
|
bg = beautiful.groups_bg,
|
|
shape = gears.shape.rounded_rect,
|
|
forced_height = 30,
|
|
widget = wibox.container.background
|
|
},
|
|
margins = 4,
|
|
widget = wibox.container.margin
|
|
},
|
|
style = { underline_normal = false, underline_selected = true },
|
|
widget = naughty.list.actions,
|
|
}
|
|
|
|
return actions_template
|
|
end
|
|
|
|
|
|
-- Notification dismiss button
|
|
ui_noti_builder.notifbox_dismiss = function()
|
|
|
|
local dismiss_imagebox = wibox.widget {
|
|
{
|
|
id = 'dismiss_icon',
|
|
image = widget_icon_dir .. 'delete.svg',
|
|
resize = true,
|
|
forced_height = dpi(5),
|
|
widget = wibox.widget.imagebox
|
|
},
|
|
layout = wibox.layout.fixed.horizontal
|
|
}
|
|
|
|
local dismiss_button = wibox.widget {
|
|
{
|
|
dismiss_imagebox,
|
|
margins = dpi(5),
|
|
widget = wibox.container.margin
|
|
},
|
|
widget = clickable_container
|
|
}
|
|
|
|
local notifbox_dismiss = wibox.widget {
|
|
dismiss_button,
|
|
visible = false,
|
|
bg = beautiful.groups_title_bg,
|
|
shape = gears.shape.circle,
|
|
widget = wibox.container.background
|
|
}
|
|
|
|
return notifbox_dismiss
|
|
end
|
|
|
|
|
|
return ui_noti_builder |