Lua 是否从sterely.spawn.easy\u async添加小部件?
我想添加一个电源状态小部件,但前提是系统支持它(我在桌面上运行的配置与笔记本电脑相同)。显然,我可以检查主机名,但我宁愿只检查acpi是否可用。目前,我有:Lua 是否从sterely.spawn.easy\u async添加小部件?,lua,awesome-wm,Lua,Awesome Wm,我想添加一个电源状态小部件,但前提是系统支持它(我在桌面上运行的配置与笔记本电脑相同)。显然,我可以检查主机名,但我宁愿只检查acpi是否可用。目前,我有: mybattery = nil awful.spawn.easy_async("acpi", function(stdout, stderr, reason, exit_code) if strin
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",
function(stdout, stderr, reason, 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
。然而,在这一点上,可见
技巧似乎更简单
[1]