local bling = require("bling")
local playerctl = bling.signal.playerctl.lib()
local prev = wibox.widget {
align = 'center',
font = beautiful.icofont,
text = '',
widget = wibox.widget.textbox,
}
local next = wibox.widget {
align = 'center',
font = beautiful.icofont,
text = '',
widget = wibox.widget.textbox,
}
local play = wibox.widget {
align = 'center',
font = beautiful.icofont,
markup = '',
widget = wibox.widget.textbox,
}
play:buttons(gears.table.join(
awful.button({}, 1, function() playerctl:play_pause() end)))
next:buttons(gears.table.join(
awful.button({}, 1, function() playerctl:next() end)))
prev:buttons(gears.table.join(
awful.button({}, 1, function() playerctl:previous() end)))
local position = wibox.widget {
forced_height = dpi(3),
shape = help.rrect(beautiful.br),
color = beautiful.pri,
background_color = beautiful.fg2..'4D',
forced_width = dpi(175),
widget = wibox.widget.progressbar,
}
local art = wibox.widget {
image = beautiful.wall,
resize = true,
-- clip_shape = help.rrect(beautiful.br),
opacity = 0.25,
forced_height = dpi(120),
forced_width = dpi(120),
widget = wibox.widget.imagebox
}
local name = wibox.widget {
markup = 'Nothing Playing',
align = 'center',
valign = 'center',
forced_height = dpi(15),
widget = wibox.widget.textbox
}
local artist_name = wibox.widget {
markup = 'None',
align = 'center',
valign = 'center',
forced_height = dpi(20),
widget = wibox.widget.textbox
}
local player = wibox.widget {
{
art,
{
{
widget = wibox.widget.textbox,
},
bg = {
type = "linear",
from = { 0, 0},
to = { 120, 0},
stops = { { 0, beautiful.bg2.."00" }, { 1, beautiful.bg2.."FF" } }
},
widget = wibox.container.background,
},
{
{
name,
artist_name,
position,
{
prev,
play,
next,
layout = wibox.layout.flex.horizontal,
},
spacing = dpi(10),
layout = wibox.layout.fixed.vertical,
},
margins = dpi(20),
widget = wibox.container.margin,
},
layout = wibox.layout.stack,
},
forced_height = dpi(120),
shape = help.rrect(beautiful.br),
bg = beautiful.bg2,
widget = wibox.container.background,
}
-- Get Song Info
playerctl:connect_signal("metadata", function(_, title, artist, album_path, album, new, player_name)
-- Set art widget
if new then
art.image = beautiful.wall
end
art:set_image(gears.surface.load_uncached(album_path))
name:set_markup_silently(help.fg(""..title.."", beautiful.pri))
artist_name:set_markup_silently(artist)
-- naughty.notify { title=title, text=artist, icon=album_path }
end)
playerctl:connect_signal("playback_status", function (_, playing, _)
if playing then
play:set_markup_silently(help.fg("", beautiful.pri))
position.color = beautiful.pri
else
play:set_markup_silently("")
position.color = beautiful.fg.."66"
end
end)
playerctl:connect_signal("position", function (_, a, b, _)
position.value = a
position.max_value = b
end)
return player