如何在後續行使用 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 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。

相關內容