dotfiles/awes2/widget/notif-center/build-notifbox/notifbox-ui-elements.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