dotfiles/dot_config/awesome/ui/info-panel/player.lua
2024-04-14 18:41:15 -07:00

116 lines
2.4 KiB
Lua

local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local beautiful = require("beautiful")
local helpers = require("helpers")
local config = require("config")
local dpi = beautiful.xresources.apply_dpi
-- Make Widgets
-----------------
-- Song's Title
local title = wibox.widget.textbox()
title.font = helpers.ui.set_font("Medium 16")
title.halign = "left"
title.valign = "bottom"
-- Song's Artist
local artist = wibox.widget.textbox()
artist.font = helpers.ui.set_font("Regular 16")
artist.halign = "left"
artist.valign = "bottom"
-- Song's Length
local length = wibox.widget.textbox()
length.font = helpers.ui.set_font("Regular 14")
length.halign = "center"
length.valign = "center"
-- Player's Button
local toggle = wibox.widget.textbox()
toggle.font = helpers.ui.set_font("26")
toggle:buttons(gears.table.join(awful.button({}, 1, function()
awful.spawn("mpc toggle", false)
if toggle.markup:match("󰏤") then
toggle.markup = config.icons.music.play
else
toggle.markup = config.icons.music.pause
end
end)))
local next = wibox.widget.textbox()
next.font = helpers.ui.set_font("26")
next.markup = config.icons.music.next
next:buttons(gears.table.join(awful.button({}, 1, function()
awful.spawn("mpc next", false)
end)))
local back = wibox.widget.textbox()
back.font = helpers.ui.set_font("26")
back.markup = config.icons.music.prev
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 = config.icons.music.play
else
toggle.markup = config.icons.music.pause
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 = dpi(30),
bottom = 0,
layout = wibox.container.margin,
},
layout = wibox.layout.flex.horizontal,
})