conky에서 루프가 가능합니까?

conky에서 루프가 가능합니까?

루프 인하는 방법이 있나요 conky? 예를 들어, CPU 부하를 표시하는 스크립트가 있는데 .conky다른 컴퓨터로 이동할 때 다시 구성해야 합니다. 다음과 같은 사소한 스크립트

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 스크립트가 실행되고 변수는 grep에서 찾은 프로세서 수에 따라 listcpus와 같은 적절한 문자열이 됩니다 ."${cpu cpu1} ${cpu cpu2}"

답변2

새 줄을 추가하는 것을 잊지 마십시오. 그렇지 않으면 최신 conky에서 원치 않는 결과가 발생합니다.

한 줄에 여러 개의 루아를 로드하는 것도 중요합니다.

예:

~/.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 예외"가 발생할 수 있습니다.

관련 정보