O principal problema ao usar name="diskio_read"
e diskio_write
com o dado widget do gráfico de barras lua é que essas duas funções retornam números como 2.33KiB
em vez de inteiros simples como 12345
. O widget usa apenas a função lua tonumber()
para converter os valores retornados, e isso falha nessas sequências.
O outro problema é que, é claro, você precisa definir max=
para algum valor adequado (por exemplo, 100000000), já que o disco io não é dimensionado para 100%, como o cpu.
Você pode contornar o primeiro problema, se você não estiver usando nenhum outro recurso conky, redefinindo a variável global que solicita que os valores sejam humanos legíveis :
conky.config = {
format_human_readable = false,
...
Como alternativa, você pode editar o arquivo de widget, bargraph.lua
, na função setup_bar_graph()
, alterar a linha:
value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
para algo como
local result = conky_parse(string.format('${%s %s}', t.name, t.arg))
value = tonumber(result)
if value==nil then value = my_tonumber(result) end
e adicione sua própria função tonumber antes da função conky_main_bars()
.
-- https://unix.stackexchange.com/a/409006/119298
function my_tonumber(n)
local capture = {string.match(n,"^(%d+\.?%d*)([KMGTPB])")}
if #capture<=0 then return 0 end
local v = tonumber(capture[1])
if #capture==1 then return v end
if capture[2]=="K" then return v*1024 end
if capture[2]=="M" then return v*1024*1024 end
if capture[2]=="G" then return v*1024*1024*1024 end
if capture[2]=="T" then return v*1024*1024*1024*1024 end
return v
end