如何解决从awful.spawn.easy_async添加小部件吗?
我想添加一个电源状态小部件,但前提是系统支持它(我在台式机上运行与笔记本电脑相同的配置)。显然,我可以检查主机名,但是我只想检查acpi是否可用。目前我有这个:
mybattery = nil
awful.spawn.easy_async("acpi",function(stdout,stderr,reason,exit_code)
if string.find(stdout,"^Battery") then
mybattery = batteryarc_widget{
show_current_level = true,arc_thickness = 1
}
end
end
)
然后将mybattery
添加为小部件。这失败了,大概是因为以后更新mybattery
不会更新wibar。事实结束后如何添加小部件?还是有更好的方法来做到这一点?我宁愿不同步致电acpi
。
后续行动:
由于此小部件在无法找到电池时会定期轮询acpi并弹出警告,因此我根本不想创建该小部件,除非它可以工作。因此,我接受了伊曼纽尔的其他建议。 vert_sep
只是一个分隔小部件,mybattery
随后会在配置中添加到wibar中。
mybattery = wiBox.container.background()
awful.spawn.easy_async("acpi",exit_code)
if string.find(stdout,"^Battery") then
local batteryarc_widget =
require("awesome-wm-widgets.batteryarc-widget.batteryarc")
local w = wiBox.layout.fixed.horizontal()
w:add(batteryarc_widget{
show_current_level = true,arc_thickness = 1})
w:add(vert_sep)
mybattery.widget = w
end
end
)
解决方法
有多种方法。您可以使用布局:add()
或:insert()
方法[1]。即使不使用它,也可以创建它。使用visible = false
或forced_width = 0
来确保它不显示。这具有微观的性能损失,但是比使用命令式布局方法更简单。第三种方法是添加一个占位符容器并在以后设置其.widget
。但是在那时,visible
技巧似乎更简单。
[1] https://awesomewm.org/apidoc/widget_layouts/wibox.layout.fixed.html#insert
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。