是否可以在 conky 中循環

是否可以在 conky 中循環

有沒有辦法循環進去conky?例如,我有一個.conky顯示 cpu 負載的腳本,但是,當我移動到另一台機器時必須重新配置它。像這樣的簡單腳本

sudo grep "processor" /proc/cpuinfo | wc -l

提供有關核心數量的信息和或許在循環中使用,例如

${cpu cpu{1}}

答案1

我不是 conky/lua 專家,所以可能有更好的方法,但這可行。你需要在~/mylua.lua包含以下內容的檔案中建立一個 lua 腳本

    local file = io.popen("grep -c processor /proc/cpuinfo")
    local numcpus = file:read("*n")
    file:close()
    listcpus = ""
    for i = 1,numcpus
    do  listcpus = listcpus.."${cpu cpu"..tostring(i).."} "
    end

    function conky_mycpus()
     return listcpus
    end

然後在你的部分~/.conkyrc中加入conky.config={

lua_load = '~/mylua.lua',

(或對於 1.10 之前的舊 conky 版本lua_load ~/mylua.lua)並且在您想要獲得 cpu 值的地方,該行

${lua_parse conky_mycpus}

當 conky 啟動時,將執行 lua 腳本,且變數listcpus最終將成為適當的字串"${cpu cpu1} ${cpu cpu2}",例如 ,取決於 grep 找到的處理器數量。

答案2

不要忘記新增行,否則會導致最新的 conky 出現不必要的結果。

在一行中載入多個 luas 也很重要。

例子:

〜/.conky/lua/cpu.lua

function conky_mycpus()
        local file = io.popen("grep -c processor /proc/cpuinfo")
        local numcpus = file:read("*n")
        file:close()
        listcpus = ""
        for i = 1,numcpus
         do listcpus = listcpus.."${offset 15}Core "..tostring(i).." ${color ff8300}${cpubar cpu"..tostring(i).." 6}${color FFFDE2}\n"
        end

        return listcpus
end

滿載

lua_load             = "/usr/local/share/lua/5.3/corky.lua ~/.conky/lua/cpu.lua",

如果你沒有在一次 lua_load 中載入所有 lua 文件,它可能會拋出「NIL Exceptions」。

相關內容