dotfiles/awes2/widget/social-media/init.lua

131 lines
2.7 KiB
Lua

local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'widget/social-media/icons/'
local decorate_widget = function(widgets)
return wibox.widget {
widgets,
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, groups_radius)
end,
widget = wibox.container.background
}
end
local build_social_button = function(website)
local social_imgbox = wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. website .. '.svg',
widget = wibox.widget.imagebox,
resize = true,
forced_height = dpi(35)
},
layout = wibox.layout.align.horizontal
}
local social_button = wibox.widget {
{
social_imgbox,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
local website_url = nil
if website == 'facebook' then
website_url = 'https://facebook.com'
elseif website == 'reddit' then
website_url = 'https://reddit.com'
elseif website == 'twitter' then
website_url = 'https://twitter.com'
elseif website == 'instagram' then
website_url = 'https://instagram.com'
end
social_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn({"xdg-open", website_url}, false)
end
)
)
)
local social_name = website:sub(1,1):upper() .. website:sub(2)
local social_tbox = wibox.widget {
text = social_name,
font = 'SF Pro Text Regular 10',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
return wibox.widget {
layout = wibox.layout.fixed.vertical,
spacing = dpi(5),
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
decorate_widget(social_button),
nil
},
social_tbox
}
end
local social_layout = wibox.widget {
layout = wibox.layout.fixed.horizontal,
spacing = dpi(5),
build_social_button('reddit'),
build_social_button('facebook'),
build_social_button('twitter'),
build_social_button('instagram'),
}
local social = wibox.widget {
{
{
expand = "none",
layout = wibox.layout.align.horizontal,
nil,
social_layout,
nil
},
margins = dpi(10),
widget = wibox.container.margin,
},
forced_height = dpi(92),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, true, true, beautiful.groups_radius)
end,
widget = wibox.container.background
}
return social