93 lines
2.1 KiB
Lua

local icons = require("icons")
local colors = require("colors").sections.media
local whitelist = { ["Spotify"] = true, ["Psst"] = true }
local media_playback = sbar.add("item", {
position = "right",
icon = {
string = icons.music,
color = colors.label,
padding_left = 8,
},
label = {
max_chars = 50,
padding_right = 8,
},
popup = {
horizontal = true,
align = "center",
y_offset = 2,
},
padding_right = 8,
})
sbar.add("item", {
position = "popup." .. media_playback.name,
padding_left = 6,
padding_right = 6,
icon = { string = icons.media.back },
label = { drawing = false },
background = { drawing = false },
click_script = "nowplaying-cli previous",
})
sbar.add("item", {
position = "popup." .. media_playback.name,
padding_left = 6,
padding_right = 6,
icon = { string = icons.media.play_pause },
label = { drawing = false },
background = { drawing = false },
click_script = "nowplaying-cli togglePlayPause",
})
sbar.add("item", {
position = "popup." .. media_playback.name,
padding_left = 6,
padding_right = 6,
icon = { string = icons.media.forward },
label = { drawing = false },
background = { drawing = false },
click_script = "nowplaying-cli next",
})
media_playback:subscribe("media_change", function(env)
if whitelist[env.INFO.app] then
local is_playing = (env.INFO.state == "playing")
media_playback:set {
drawing = is_playing,
label = {
string = env.INFO.artist .. " - " .. env.INFO.title,
padding_left = is_playing and 8 or 0,
},
}
end
end)
media_playback:subscribe("mouse.clicked", function(_)
sbar.animate("tanh", 8, function()
media_playback:set {
background = {
shadow = {
distance = 0,
},
},
y_offset = -4,
padding_left = 8,
padding_right = 4,
}
media_playback:set {
background = {
shadow = {
distance = 4,
},
},
y_offset = 0,
padding_left = 4,
padding_right = 8,
}
end)
media_playback:set { popup = { drawing = "toggle" } }
end)