dotfiles/.config/awesome/ui/info-panel/player.lua

115 lines
2.2 KiB
Lua

local awful = require "awful"
local gears = require "gears"
local wibox = require "wibox"
local beautiful = require "beautiful"
local dpi = beautiful.xresources.apply_dpi
-- Make Widgets
-----------------
-- Song's Title
local title = wibox.widget.textbox()
title.font = beautiful.font_name.."Medium 16"
title.align = "left"
title.valign = "bottom"
-- Song's Artist
local artist = wibox.widget.textbox()
artist.font = beautiful.font_name.."Regular 16"
artist.align = "left"
artist.valign = "bottom"
-- Song's Length
local length = wibox.widget.textbox()
length.font = beautiful.font_name.."Regular 14"
length.align = "center"
length.valign = "center"
-- Player's Button
local toggle = wibox.widget.textbox()
toggle.font = beautiful.font_name.."26"
toggle:buttons(gears.table.join(
awful.button({}, 1, function()
awful.spawn("mpc toggle", false)
if toggle.markup:match("") then
toggle.markup = ""
else
toggle.markup = ""
end
end)
))
local next = wibox.widget.textbox()
next.font = beautiful.font_name.."26"
next.markup = ""
next:buttons(gears.table.join(
awful.button({}, 1, function() awful.spawn("mpc next", false) end)
))
local back = wibox.widget.textbox()
back.font = beautiful.font_name.."26"
back.markup = ""
back:buttons(gears.table.join(
awful.button({}, 1, function() awful.spawn("mpc prev", false) end)
))
-- Get data
awesome.connect_signal("signal::player", function(t, a, l, s)
if not s:match("playing") then
toggle.markup = ""
else
toggle.markup = ""
end
title.markup = t
artist.markup = a
length.markup = l
end)
-- Grouping Widgets
---------------------
local buttons = wibox.widget {
back,
toggle,
next,
spacing = dpi(11),
layout = wibox.layout.fixed.horizontal,
}
return wibox.widget {
{
nil,
{
title,
artist,
spacing = dpi(12),
layout = wibox.layout.fixed.vertical,
},
expand = 'none',
layout = wibox.layout.align.vertical,
},
{
nil,
nil,
{
length,
{
nil,
buttons,
expand = 'none',
layout = wibox.layout.align.horizontal,
},
spacing = dpi(6),
layout = wibox.layout.fixed.vertical,
},
top = 30,
bottom = 0,
layout = wibox.container.margin,
--layout = wibox.layout.align.vertical,
},
layout = wibox.layout.flex.horizontal,
}