从 awful.spawn.easy_async 添加小部件?
Add a widget from 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 并在找不到电池时弹出警告,所以我根本不想创建该小部件,除非它可以工作。因此,根据 Emmanuel 的其他建议,这就是我的最终结果。 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
。然而在这一点上,visible
技巧似乎更简单。
[1] https://awesomewm.org/apidoc/widget_layouts/wibox.layout.fixed.html#insert
我想添加一个电源状态小部件,但前提是系统支持它(我 运行 在台式机上使用与笔记本电脑相同的配置)。显然我可以检查主机名,但我宁愿只检查 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 并在找不到电池时弹出警告,所以我根本不想创建该小部件,除非它可以工作。因此,根据 Emmanuel 的其他建议,这就是我的最终结果。 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
。然而在这一点上,visible
技巧似乎更简单。
[1] https://awesomewm.org/apidoc/widget_layouts/wibox.layout.fixed.html#insert