如何在后续行中使用 conky 中 execi 的输出

如何在后续行中使用 conky 中 execi 的输出

我不是编码员,只是尝试使用 conky 作为 Linux 发行版的默认发行版的人。在这里我试图获得自动网络设置。

  1. 按照此处和其他地方的帖子,我可以使用此行打印活动网络接口:

    ${color2}活动:${color3}${execi -300 netup}${color}

“netup”指的是 /usr/local/bin/ 中的一个小脚本,其中只有一行:

ip addr show | awk '/inet.*brd/{print $NF; exit}'

在我的例子中, conky 线在屏幕上产生:活动:接口名称(见下图)。到目前为止,非常出色。

  1. 现在我想用该脚本输出的名称替换有关流量或任何其他网络信息的特定于接口的命令,这将为我和用户节省一定的麻烦。我尝试了这个,如果使用 wlan0 等,效果很好:

    向下:${downspeedf netup}kB/s ${alignr}向上:${upspeedf netup}kB/s ${downspeedgraph netup 30,120 000000 000000} ${alignr}${upspeedgraph netup 30,120 000000 000000}

这显然是不正确的,因为图表显示但没有内容。 没有内容的网络图

两个问题:1)有没有办法读取之前一行写的活动界面? 2)如果没有,我如何将netup脚本的输出合并到这些向下和向上的图中?

感谢任何帮助。

杰瑞

答案1

您可以做的是调用eval来延迟调用upspeedf等等,直到您调用了脚本并且它返回了接口的名称。

例如,

${eval $${downspeedgraph ${exec netup} 30,120 000000 000000} } 
${alignr}
${eval $${upspeedgraph   ${exec netup} 30,120 000000 000000} }

请注意,对于评估,其加倍$将变成单个。$不幸的是,您的脚本将在每个更新周期被调用,因此您可能需要优化您的脚本。如果使用execi间隔,则没有区别。

为了实现全面的多功能性,您将需要使用 lua 函数,这需要学习很多东西。如果您的接口只需要在启动时确定一次,那么为什么不编写一个小的启动脚本来查找接口名称并在运行 conky 之前编辑具有该名称的 .conkyrc 文件。


注意,${eval}在 1.10 版本之前已被破坏修补我认为适用于 1.10.3 或 .4。

相关内容