66 lines
1.4 KiB
Lua
66 lines
1.4 KiB
Lua
-- YAWL, Spotify widget module
|
|
local spotify = {}
|
|
local mt = {}
|
|
|
|
-- Requires
|
|
local wibox = require("wibox")
|
|
local base = require("yawl.base")
|
|
local utils = require("yawl.utils")
|
|
local beautiful = require("beautiful")
|
|
local watch = require("awful.widget.watch")
|
|
|
|
-- Entrypoint
|
|
function mt.__call()
|
|
|
|
-- base
|
|
local t = base.txt()
|
|
local w = base.bg()
|
|
w:set_widget(t)
|
|
-- change default bg to paused
|
|
w:set_bg(beautiful.yawl_spotify_absent)
|
|
|
|
-- icon widget
|
|
local i = base.icon("")
|
|
|
|
-- merge of the two
|
|
local widget = wibox.widget {
|
|
i,
|
|
w,
|
|
layout = wibox.layout.fixed.horizontal,
|
|
}
|
|
|
|
-- watch func
|
|
watch(
|
|
-- is spotify running ?
|
|
'pidof spotify', 5,
|
|
function(_, stdout, stderr, exitreason, exitcode)
|
|
|
|
if stdout == "" then
|
|
w:set_bg(beautiful.yawl_spotify_absent)
|
|
w:set_fg(beautiful.yawl_spotify_absent_fg)
|
|
t:set_text(" not running ")
|
|
return
|
|
end
|
|
|
|
w:set_fg(beautiful.yawl_fg)
|
|
local status = utils.sanitize(utils.run("playerctl -p spotify status"))
|
|
local np = utils.sanitize(utils.run('playerctl -p spotify metadata --format="{{ artist }} · {{ title }}"'))
|
|
|
|
if status == "Playing" then
|
|
w:set_bg(beautiful.yawl_spotify_play)
|
|
else
|
|
w:set_bg(beautiful.yawl_spotify_pause)
|
|
end
|
|
|
|
t:set_text(" " .. np .. " ")
|
|
|
|
end,
|
|
w
|
|
)
|
|
|
|
return widget
|
|
|
|
end
|
|
|
|
-- Return widget
|
|
return setmetatable(spotify, mt)
|