131 lines
2.7 KiB
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
|