end
function widget:get_info()
- local info = {}
local status, song = self._status, self._currentsong
+ if not status.state then return nil end
+
+ local info = {}
info.title = status.state .. " " .. status.song .. "/" .. status.playlistlength .. " " .. song_duration(status.elapsed, status.duration)
if not song.artist then
info.text = string.format("%s", song.title or song.file)
function widget:popup_show()
if self._notification then return end
+
local table = self:get_info()
+ if not table then return end
+
self._timer:start()
self._notification = naughty.notify(
{ title = table.title
function widget:error_handler(err)
self._textbox:set_text("Error: " .. tostring(err))
- timer.start_new(10, function()
- self._connection:send("ping")
- end)
+ self._status = {}
end
function widget:run()
self._status = {}
- self._status.songid = nil
self._connection = mpc.new(nil, nil, nil, function(err) self:error_handler(err) end,
"player", function(conn)
end
)
+ self._keep_alive_timer = timer {
+ timeout = 1
+ , autostart = true
+ , callback = function() self._connection:connect() end
+ , call_now = true
+ }
+
self._timer = timer({ timeout = 1 })
self._timer:connect_signal("timeout", function() self:popup_update() end)