微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 awesomewm 工具提示中执行自定义命令

如何解决在 awesomewm 工具提示中执行自定义命令

我有一个简单的小部件来显示可用内存:

myFreeMemory = awful.widget.watch('bash -c "free -h | awk \'/^Mem:/ {print $3}\'"',1)

这一行产生一个数字。

我想为其创建一个运行自定义命令的工具提示

local free_memory_tooltip = awful.tooltip
{
    objects        = { myFreeMemory },timer_function = function()
        return "free -h"
    end,font = "monaco 18",timeout=0,opacity=0.9,bg="#000000",fg="#ffffff",align="top_left"
}

代替return "free -h",我应该用什么来执行这个命令并返回文本输出

解决方法

最简单的解决方案可能是使用 return io.popen("free -h"):read("*a"),但这使用了 io.popen,而这在 AwesomeWM 中最好避免。

最好的解决方案可能是自己为 /proc/meminfo 编写一个解析器。糟糕。

中间解决方案如下所示:

local last_result = ""
local function my_timer_function()
    local cmd = "free -h | awk '/^Mem:/ {print $3}'""
    awful.spawn.easy_async_with_shell(cmd,function(result)
        last_result = result
        free_memory_tooltip:set_markup(last_result)
    end)
    return last_result
end
-- Call it once to initialise its state; otherwise you would get a brief flicker of empty text
my_timer_function()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。