}
function widget:update_widget()
+ if not self._currentsong then
+ self._textbox.text = ""
+ return
+ end
local text = ""
local artist = self._currentsong.artist
local title = self._currentsong.title
local file = self._currentsong.file
- if not artist then
+ if artist and title then
+ text = string.format("%s - %s", artist, title)
+ elseif title or file then
text = string.format("%s", title or file )
else
- text = string.format("%s - %s", artist, title)
+ text = "-"
end
self._textbox.text = text
end
local function sec_to_min(sec)
- m, s = math.modf((sec or 0.0) / 60)
+ local m, s = math.modf((sec or 0.0) / 60)
return string.format('%d:%02d', m, math.floor(s * 60))
end
function widget:get_info()
local status, song = self._status, self._currentsong
if not status.state then return nil end
+ if not status.song then return nil end
local info = {}
info.title = status.state .. " " .. status.song .. "/" .. status.playlistlength .. " " .. song_duration(status.elapsed, status.duration)
self._status = status
local table = self:get_info()
if not self._notification then return end
+ if not table then return end
naughty.replace_text(self._notification, table.title, table.text)
end)
end
conn:send("currentsong", function(_, song)
self._currentsong = song
+ if not song then
+ self:update_widget()
+ return
+ end
conn:albumart(song.file, function(_, art)
self._albumart = art
self:update_widget()
)
globalkeys = gears.table.join(globalkeys,
+ --TODO headphone support
+ awful.key({ }, "XF86AudioPlay", function() widget._connection:play() end,
+ { description = "play", group = "mpd" }),
+ awful.key({ }, "XF86AudioPause", function() widget._connection:pause() end,
+ { description = "pause", group = "mpd" }),
awful.key({ modkey }, "p", function() widget._connection:toggle_play() end,
{ description = "toogle play", group = "mpd" }),
awful.key({ modkey }, "'", function() widget:popup_oneshot(5) end,