使用格式函数的 awesome wm/vicious 小部件:引发了错误的参数错误。

我正在使用vicious(v2.1.3-1)配置awesome wm(v3.5.5-1)中的小部件。我想在小部件中显示时间,然后在悬停在时间小部件上时在工具提示中显示日期。

以下使用rc.lua文件中的vicious的代码可以正常工作:

myclock = wibox.widget.textbox()
vicious.register(myclock, vicious.widgets.date, " <span color='#ffffff'>%H:%M</span> ")
myclock_tooltip =  awful.tooltip ({ objects = { myclock } })
vicious.register(myclock_tooltip, vicious.widgets.date, " %a %d %b ", 60)

然而,当我尝试结合两个vicious.register语句(基于vicious的自述文件中的_Format functions_部分):

myclock = wibox.widget.textbox()
myclock_tooltip =  awful.tooltip ({ objects = { myclock } })
vicious.register(myclock, vicious.widgets.date,
    function (widget, args)
        myclock_tooltip.set_text(" %a %d %b ")
        return " <span color='#ffffff'>%H:%M</span> "
    end)

我得到以下错误:

/usr/share/lua/5.2/vicious/widgets/date.lua:23: bad argument #1 to 'date' (string expected, got function)

有什么建议我的问题在哪里?

点赞
用户258523
用户258523

我从技术角度认为你没有做错任何事情。 我认为(并且快速查看源代码也证实了这一点),那个小部件不接受函数格式。

看起来有些小部件采用格式字符串(由小部件函数使用),而有些则接受格式函数(将小部件函数结果作为参数调用),但我没有看到任何明显的指示。 例如,将date.lua中的“worker”函数与uptime.lua中的函数进行比较。

“date.lua”函数在调用os.date时使用了format参数(这正是生成错误信息的原因,请在本地尝试调用 os.date(function()end))。

“uptime.lua”函数根本不使用“format”参数(可能由“vicious”在该函数的返回值上内部调用。

值得一提的是,要求更新文档以使其更清晰(或者更新文档并提交补丁进行修复)可能是值得的。

2014-09-23 22:10:23
用户436275
用户436275

你为什么需要那个格式化函数呢?下面的代码不起作用吗?

myclock = wibox.widget.textbox()
myclock_tooltip =  awful.tooltip ({ objects = { myclock } })
vicious.register(myclock, vicious.widgets.date, " <span color='#fffff'>%H:%M</span> ")
myclock_tooltip_timer = timer({ timeout = 3600 })
myclock_tooltip_timer:connect_signal("timeout", function()
    myclock_tooltip:set_text(os.date(" %a %d %b "))
end)
myclock_tooltip_timer:start()
myclock_tooltip_timer:emit_signal("timeout")

这段代码使用了“正常”的 vicious 部件,通过一个单独的计时器每小时更新你的工具提示。

2014-09-24 09:22:03