X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/7584d13fc11bb519ba09528c9fb132a31474a31c..65300b0098d1b005fd4c1ed9d54bc2a7912a289f:/widgets/mpd.lua

diff --git a/widgets/mpd.lua b/widgets/mpd.lua
index 6a327b0..ce48014 100644
--- a/widgets/mpd.lua
+++ b/widgets/mpd.lua
@@ -11,22 +11,22 @@ local helpers      = require("lain.helpers")
 local async        = require("lain.asyncshell")
 
 local escape_f     = require("awful.util").escape
+local focused      = require("awful.screen").focused
 local naughty      = require("naughty")
 local wibox        = require("wibox")
 
-local os           = { execute  = os.execute,
-                       getenv   = os.getenv }
-local math         = { floor    = math.floor }
-local mouse        = mouse
-local string       = { format   = string.format,
-                       match    = string.match,
-                       gmatch   = string.gmatch }
+local os           = { execute = os.execute,
+                       getenv  = os.getenv }
+local math         = { floor   = math.floor }
+local string       = { format  = string.format,
+                       match   = string.match,
+                       gmatch  = string.gmatch }
 
 local setmetatable = setmetatable
 
 -- MPD infos
 -- lain.widgets.mpd
-local mpd = {}
+local mpd = helpers.make_widget_textbox()
 
 local function worker(args)
     local args        = args or {}
@@ -38,7 +38,7 @@ local function worker(args)
     local cover_size  = args.cover_size or 100
     local default_art = args.default_art or ""
     local notify      = args.notify or "on"
-    local followmouse = args.followmouse or false
+    local followtag   = args.followtag or false
     local echo_cmd    = args.echo_cmd or "echo"
     local settings    = args.settings or function() end
 
@@ -46,8 +46,6 @@ local function worker(args)
     local mpdh = "telnet://" .. host .. ":" .. port
     local echo = echo_cmd .. " 'password " .. password .. "\nstatus\ncurrentsong\nclose'"
 
-    mpd.widget = wibox.widget.textbox('')
-
     mpd_notification_preset = {
         title   = "Now playing",
         timeout = 6
@@ -70,6 +68,8 @@ local function worker(args)
                 artist       = "N/A",
                 title        = "N/A",
                 album        = "N/A",
+                genre        = "N/A",
+                track        = "N/A",
                 date         = "N/A",
                 time         = "N/A",
                 elapsed      = "N/A"
@@ -83,6 +83,8 @@ local function worker(args)
                     elseif k == "Artist"         then mpd_now.artist       = escape_f(v)
                     elseif k == "Title"          then mpd_now.title        = escape_f(v)
                     elseif k == "Album"          then mpd_now.album        = escape_f(v)
+                    elseif k == "Genre"          then mpd_now.genre        = escape_f(v)
+                    elseif k == "Track"          then mpd_now.track        = escape_f(v)
                     elseif k == "Date"           then mpd_now.date         = escape_f(v)
                     elseif k == "Time"           then mpd_now.time         = v
                     elseif k == "elapsed"        then mpd_now.elapsed      = string.match(v, "%d+")
@@ -116,13 +118,14 @@ local function worker(args)
                         current_icon = default_art
                     end
 
-                    if followmouse then
-                        mpd_notification_preset.screen = mouse.screen
+                    if followtag then
+                        mpd_notification_preset.screen = focused()
                     end
 
                     mpd.id = naughty.notify({
                         preset = mpd_notification_preset,
-                        icon = current_icon,
+                        icon = os.execute(string.format("ls %s &> /dev/null", current_icon))
+                               and current_icon,
                         replaces_id = mpd.id,
                     }).id
                 end
@@ -135,7 +138,7 @@ local function worker(args)
 
     helpers.newtimer("mpd", timeout, mpd.update)
 
-    return setmetatable(mpd, { __index = mpd.widget })
+    return mpd
 end
 
 return setmetatable(mpd, { __call = function(_, ...) return worker(...) end })