Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 是否从sterely.spawn.easy\u async添加小部件?_Lua_Awesome Wm - Fatal编程技术网

Lua 是否从sterely.spawn.easy\u async添加小部件?

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

我想添加一个电源状态小部件,但前提是系统支持它(我在桌面上运行的配置与笔记本电脑相同)。显然,我可以检查主机名,但我宁愿只检查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",
                       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]