X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/d16094bc6811118f778e334a1bbf5fdafd966644..741b65d5eac36c8800610c2bad62ebd621998cc8:/widgets/contrib/task.lua?ds=sidebyside

diff --git a/widgets/contrib/task.lua b/widgets/contrib/task.lua
index 946966a..1b8f119 100644
--- a/widgets/contrib/task.lua
+++ b/widgets/contrib/task.lua
@@ -25,29 +25,34 @@ local task = {}
 
 local task_notification = nil
 
-function task:hide()
+function findLast(haystack, needle)
+    local i=haystack:match(".*"..needle.."()")
+    if i==nil then return nil else return i-1 end
+end
+
+function task.hide()
     if task_notification ~= nil then
         naughty.destroy(task_notification)
         task_notification = nil
     end
 end
 
-function task:show(scr_pos)
-    task:hide()
+function task.show(scr_pos)
+    task.hide()
 
-    local f, c_text
+    local f, c_text, scrp
 
-    if task.followmouse then
-        local scrp = mouse.screen
+    if task.followtag then
+        scrp = awful.screen.focused()
     else
-        local scrp = scr_pos or task.scr_pos
+        scrp = scr_pos or task.scr_pos
     end
 
     f = io.popen('task ' .. task.cmdline)
     c_text = "<span font='"
              .. task.font .. " "
              .. task.font_size .. "'>"
-             .. f:read("*all"):gsub("\n*$", "")
+             .. awful.util.escape(f:read("*all"):gsub("\n*$", ""))
              .. "</span>"
     f:close()
 
@@ -62,15 +67,15 @@ function task:show(scr_pos)
                                      })
 end
 
-function task:prompt_add()
+function task.prompt_add()
   awful.prompt.run({ prompt = "Add task: " },
-      mypromptbox[mouse.screen].widget,
+      mypromptbox[awful.screen.focused()].widget,
       function (...)
           local f = io.popen("task add " .. ...)
           c_text = "\n<span font='"
                    .. task.font .. " "
                    .. task.font_size .. "'>"
-                   .. f:read("*all")
+                   .. awful.util.escape(f:read("*all"))
                    .. "</span>"
           f:close()
 
@@ -87,9 +92,9 @@ function task:prompt_add()
       awful.util.getdir("cache") .. "/history_task_add")
 end
 
-function task:prompt_search()
+function task.prompt_search()
   awful.prompt.run({ prompt = "Search task: " },
-      mypromptbox[mouse.screen].widget,
+      mypromptbox[awful.screen.focused()].widget,
       function (...)
           local f = io.popen("task " .. ...)
           c_text = f:read("*all"):gsub(" \n*$", "")
@@ -102,7 +107,7 @@ function task:prompt_search()
               c_text = "<span font='"
                        .. task.font .. " "
                        .. task.font_size .. "'>"
-                       .. c_text
+                       .. awful.util.escape(c_text)
                        .. "</span>"
           end
 
@@ -114,32 +119,32 @@ function task:prompt_search()
               fg       = task.fg,
               bg       = task.bg,
               timeout  = task.timeout,
-              screen   = mouse.screen
+              screen   = awful.screen.focused()
           })
       end,
       nil,
       awful.util.getdir("cache") .. "/history_task")
 end
 
-function task:attach(widget, args)
+function task.attach(widget, args)
     local args       = args or {}
 
     task.font_size   = tonumber(args.font_size) or 12
-    task.font        = beautiful.font:sub(beautiful.font:find(""),
-                       beautiful.font:find(" "))
+    task.font        = args.font or beautiful.font:sub(beautiful.font:find(""),
+                       findLast(beautiful.font, " "))
     task.fg          = args.fg or beautiful.fg_normal or "#FFFFFF"
     task.bg          = args.bg or beautiful.bg_normal or "#FFFFFF"
     task.position    = args.position or "top_right"
     task.timeout     = args.timeout or 7
     task.scr_pos     = args.scr_pos or 1
-    task.followmouse = args.followmouse or false
+    task.followtag   = args.followtag or false
     task.cmdline     = args.cmdline or "next"
 
     task.notify_icon = icons_dir .. "/taskwarrior/task.png"
     task.notify_icon_small = icons_dir .. "/taskwarrior/tasksmall.png"
 
-    widget:connect_signal("mouse::enter", function () task:show(task.scr_pos) end)
-    widget:connect_signal("mouse::leave", function () task:hide() end)
+    widget:connect_signal("mouse::enter", function () task.show(task.scr_pos) end)
+    widget:connect_signal("mouse::leave", function () task.hide() end)
 end
 
 return setmetatable(task, { __call = function(_, ...) return create(...) end })