X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/87d3fb525e841b5648e360a926d90c11d9a0a56b..03e18ae17a72f3db72ee65eb290d35fb13d66237:/awesome/widgets/mpd_widget.lua diff --git a/awesome/widgets/mpd_widget.lua b/awesome/widgets/mpd_widget.lua index 9da5152..f32440c 100644 --- a/awesome/widgets/mpd_widget.lua +++ b/awesome/widgets/mpd_widget.lua @@ -60,8 +60,10 @@ function widget:get_albumart() 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) @@ -77,7 +79,10 @@ end 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 @@ -137,22 +142,23 @@ end 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) conn:send("status", function(err, status) local songchanged = self._status.songid ~= status.songid + local statechanged = self._status.state ~= status.state self._status = status if not songchanged then self:update_widget() + if statechanged then + self:popup_oneshot(5) + end return end @@ -168,6 +174,13 @@ function widget:run() 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)