Description
Hi.
At the moment:
The mem-usage
widget "requires"
the mem-usage-linux
plugin which "requires"
the timer
plugin.
But for me, personally, this middle layer of indirection (the mem-usage-linux
plugin) doesn't help me. For me, it just makes the code harder to understand and follow (this might be because I am new to lua and luastatus).
So, I am trying to combine the mem-usage
widget and the mem-usage-linux
plugin into 1 file: a new mem-usage
widget that "requires" the timer
plugin.
Here's what I have so far:
widget = {
plugin = './plugins/timer/plugin-timer.so',
opts = {period = 2},
cb = function()
local f = assert(io.open('/proc/meminfo', 'r'))
local r = {}
for line in f:lines() do
local key, value, unit = line:match('(%w+):%s+(%w+)%s+(%w+)')
if key == 'MemTotal' then
r.total = {value = tonumber(value), unit = unit}
elseif key == 'MemAvailable' then
r.avail = {value = tonumber(value), unit = unit}
end
end
f:close()
local used_kb = r.total.value - r.avail.value
return string.format('[%3.2f GiB]', used_kb / 1024 / 1024)
end
}
I can "successfully" run this new widget and it produces what appears to be correct output, thus:
[1.10 GiB]
[1.03 GiB]
[1.02 GiB]
[1.03 GiB]
[1.00 GiB]
[0.99 GiB]
[0.98 GiB]
[0.99 GiB]
[0.98 GiB]
[0.99 GiB]
[1.01 GiB]
[1.00 GiB]
[0.99 GiB]
[1.02 GiB]
and it appears to only produce new output when the value changes (which, I think, is like the other widgets), so I think this is correct. But... I am new to lua and luastatus, so I don't feel sure that my code is functionally equivalent. Could somebody who possesses more lua-fu than me please have a look at this code and confirm whether or not it is functionally equivalent to the original source, and also whether or not it can be made more simple/easier to understand?
Thank you! Jaime