仅当界面可用时才激活 vicious.widgets.net 小部件

Activate vicious.widgets.net widget only if interface is available

我的 rc.lua 中有以下使用 vicious 的小部件:

-- Initialize widget Ethernet
ethwidget = wibox.widget.textbox()                                                                                                                            
-- Register widget       
    vicious.register(ethwidget, vicious.widgets.net, 'Eth0: <span color="#CC9933">down: ${eth0 down_kb} kB/s</span> <span color="#7F9F7F"> up: ${eth0 up_kb}  kB/s</span><span color="#cccccc"> [ ${eth0 rx_gb} GB //  ${eth0 tx_gb} GB ] | </span>', 2)

问题是我有一台最新的 macbook pro,如果我没有插入 ethernet adapter,那么我只能看到例如${eth0 down_kb} 打印在我的 wibox 上。我如何添加一个条件,以便只有在插入以太网适配器时才插入小部件?

我提出了一个运行良好的解决方案。我找到了这个 link http://awesome.naquadah.narkive.com/wpn4XSWl/netwidget-with-two-interfaces,现在我的代码如下:

eths = { 'eth0', 'wlp3s0' }
netwidget = wibox.widget.textbox()
vicious.register( netwidget, vicious.widgets.net,
function(widget,args)
t=''  
for i = 1, #eths do
e = eths[i]       
if args["{"..e.." carrier}"] == 1 then
    if e == 'wlp3s0' then
        t=t..'|'..'Wifi: <span color="#CC9933"> down: '..args['{'..e..' down_kb}']..' kbps</span>  <span color="#7F9F7F">up: ' ..args['{'..e..' up_kb}']..'   kbps </span>'..'[ '..args['{'..e..' rx_gb}'].. ' GB // ' ..args['{'..e..' tx_gb}']..' GB ] '
    else          
        t=t..'|'..'Eth0: <span color="#CC9933"> down: '..args['{'..e..' down_kb}']..' kbps</span>  <span color="#7F9F7F">up: ' ..args['{'..e..' up_kb}']..'   kbps </span>'..'[ '..args['{'..e..' rx_gb}'].. ' GB // ' ..args['{'..e..' tx_gb}']..' GB ] '
    end
end
end               
if string.len(t)>0 then -- remove leading '|'
return string.sub(t,2,-1)
end               
return 'No network'
end                                                                                                                                                           
, 1 )

然后按如下方式添加小部件(我使用的是 awesome v3.5.9 (Mighty Ravendark)):

bottom_layout:add(netwidget)