From 57bab3542bab39c89824a084890936d9be3ed5af Mon Sep 17 00:00:00 2001 From: mutlusun Date: Mon, 12 Mar 2018 21:16:22 +0100 Subject: [PATCH 1/4] adds critical charging state to FreeBSDs battery widget --- widgets/bat_freebsd.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/widgets/bat_freebsd.lua b/widgets/bat_freebsd.lua index 919ed6b..22e4762 100644 --- a/widgets/bat_freebsd.lua +++ b/widgets/bat_freebsd.lua @@ -30,6 +30,8 @@ local function worker(format, warg) state = "↯" elseif bat_info["State"] == "charging" then state = "+" + elseif bat_info["State"] == "critical charging" then + state = "+" elseif bat_info["State"] == "discharging" then state = "-" else From 0280ac22430dc329e5071b0c1d9efe154031defa Mon Sep 17 00:00:00 2001 From: mutlusun Date: Sat, 10 Mar 2018 12:54:05 +0100 Subject: [PATCH 2/4] freebsd memory clean ups and correct calculation --- README.md | 5 ++--- widgets/mem_freebsd.lua | 37 ++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 93b1f18..a6818d8 100644 --- a/README.md +++ b/README.md @@ -323,9 +323,8 @@ Supported platforms: Linux, FreeBSD. total system memory, 4th as free memory, 5th as swap usage in percent, 6th as swap usage, 7th as total system swap, 8th as free swap and 9th as memory usage with buffers and cache - * FreeBSD: see above, but 10th value as memory usage with buffers and cache - as percent and 11th value as wired memory (memory used by kernel) is - reported + * FreeBSD: see above, but 9th value is not returned (always `-1`) and there + is a 10th value giving wired memory **vicious.widgets.mpd** diff --git a/widgets/mem_freebsd.lua b/widgets/mem_freebsd.lua index 618c418..59dc968 100644 --- a/widgets/mem_freebsd.lua +++ b/widgets/mem_freebsd.lua @@ -16,6 +16,7 @@ local function worker(format) local vm_stats = helpers.sysctl_table("vm.stats.vm") local _mem = { buf = {}, total = nil } + -- Get memory space in bytes _mem.total = tonumber(vm_stats.v_page_count) * pagesize _mem.buf.f = tonumber(vm_stats.v_free_count) * pagesize _mem.buf.a = tonumber(vm_stats.v_active_count) * pagesize @@ -23,35 +24,33 @@ local function worker(format) _mem.buf.c = tonumber(vm_stats.v_cache_count) * pagesize _mem.buf.w = tonumber(vm_stats.v_wire_count) * pagesize - -- rework into Megabytes - _mem.total = math.floor(_mem.total/(1024*1024)) - _mem.buf.f = math.floor(_mem.buf.f/(1024*1024)) - _mem.buf.a = math.floor(_mem.buf.a/(1024*1024)) - _mem.buf.i = math.floor(_mem.buf.i/(1024*1024)) - _mem.buf.c = math.floor(_mem.buf.c/(1024*1024)) - _mem.buf.w = math.floor(_mem.buf.w/(1024*1024)) + -- Rework into megabytes + _mem.total = math.floor(_mem.total/1048576) + _mem.buf.f = math.floor(_mem.buf.f/1048576) + _mem.buf.a = math.floor(_mem.buf.a/1048576) + _mem.buf.i = math.floor(_mem.buf.i/1048576) + _mem.buf.c = math.floor(_mem.buf.c/1048576) + _mem.buf.w = math.floor(_mem.buf.w/1048576) -- Calculate memory percentage - _mem.free = _mem.buf.f + _mem.buf.c - _mem.inuse = _mem.buf.a + _mem.buf.i + _mem.free = _mem.buf.f + _mem.buf.c + _mem.buf.i + _mem.inuse = _mem.total - _mem.free _mem.wire = _mem.buf.w - _mem.bcuse = _mem.total - _mem.buf.f _mem.usep = math.floor(_mem.inuse / _mem.total * 100) _mem.inusep= math.floor(_mem.inuse / _mem.total * 100) - _mem.buffp = math.floor(_mem.bcuse / _mem.total * 100) - _mem.wirep = math.floor(_mem.wire / _mem.total * 100) -- Get swap states - local vm = helpers.sysctl_table("vm") + local vm_swap_total = tonumber(helpers.sysctl("vm.swap_total")) + local vm_swap_enabled = tonumber(helpers.sysctl("vm.swap_enabled")) local _swp = { buf = {}, total = nil } - if tonumber(vm.swap_enabled) == 1 and tonumber(vm.swap_total) > 0 then - -- Get swap space - _swp.total = tonumber(vm.swap_total) + if vm_swap_enabled == 1 and vm_swap_total > 0 then + -- Get swap space in bytes + _swp.total = vm_swap_total _swp.buf.f = _swp.total - tonumber(vm_stats.v_swapin) -- Rework into megabytes - _swp.total = math.floor(_swp.total/(1024*1024)) - _swp.buf.f = math.floor(_swp.buf.f/(1024*1024)) + _swp.total = math.floor(_swp.total/1048576) + _swp.buf.f = math.floor(_swp.buf.f/1048576) -- Calculate percentage _swp.inuse = _swp.total - _swp.buf.f _swp.usep = math.floor(_swp.inuse / _swp.total * 100) @@ -64,7 +63,7 @@ local function worker(format) return { _mem.usep, _mem.inuse, _mem.total, _mem.free, _swp.usep, _swp.inuse, _swp.total, _swp.buf.f, - _mem.bcuse, _mem.buffp, _mem.wirep } + -1, _mem.wire } end return setmetatable(mem_freebsd, { __call = function(_, ...) return worker(...) end }) From df5fa774289707ece1e517ec9429431e8e9c2cbb Mon Sep 17 00:00:00 2001 From: Andreas Geisenhainer Date: Mon, 12 Mar 2018 21:01:07 +0100 Subject: [PATCH 3/4] memory freebsd: re-organizes memory assignment for used and unused memory * removes unused variables * enhances one-character-variables for better readabilitiy * fixes calculation errors ** used memory: active, inactive, and wired ** available memory: cached, laundry, and free see https://wiki.freebsd.org/Memory for more information --- README.md | 4 ++-- widgets/mem_freebsd.lua | 29 ++++++++++++++--------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index a6818d8..e0d4e56 100644 --- a/README.md +++ b/README.md @@ -323,8 +323,8 @@ Supported platforms: Linux, FreeBSD. total system memory, 4th as free memory, 5th as swap usage in percent, 6th as swap usage, 7th as total system swap, 8th as free swap and 9th as memory usage with buffers and cache - * FreeBSD: see above, but 9th value is not returned (always `-1`) and there - is a 10th value giving wired memory + * FreeBSD: see above, but there are two more values: the 9th value is wired memory + in percent and the 10th value giving wired memory **vicious.widgets.mpd** diff --git a/widgets/mem_freebsd.lua b/widgets/mem_freebsd.lua index 59dc968..81ea146 100644 --- a/widgets/mem_freebsd.lua +++ b/widgets/mem_freebsd.lua @@ -18,32 +18,31 @@ local function worker(format) -- Get memory space in bytes _mem.total = tonumber(vm_stats.v_page_count) * pagesize - _mem.buf.f = tonumber(vm_stats.v_free_count) * pagesize - _mem.buf.a = tonumber(vm_stats.v_active_count) * pagesize - _mem.buf.i = tonumber(vm_stats.v_inactive_count) * pagesize - _mem.buf.c = tonumber(vm_stats.v_cache_count) * pagesize - _mem.buf.w = tonumber(vm_stats.v_wire_count) * pagesize + _mem.buf.free = tonumber(vm_stats.v_free_count) * pagesize + _mem.buf.laundry = tonumber(vm_stats.v_laundry_count) * pagesize + _mem.buf.cache = tonumber(vm_stats.v_cache_count) * pagesize + _mem.buf.wired = tonumber(vm_stats.v_wire_count) * pagesize -- Rework into megabytes _mem.total = math.floor(_mem.total/1048576) - _mem.buf.f = math.floor(_mem.buf.f/1048576) - _mem.buf.a = math.floor(_mem.buf.a/1048576) - _mem.buf.i = math.floor(_mem.buf.i/1048576) - _mem.buf.c = math.floor(_mem.buf.c/1048576) - _mem.buf.w = math.floor(_mem.buf.w/1048576) + _mem.buf.free = math.floor(_mem.buf.free/1048576) + _mem.buf.laundry = math.floor(_mem.buf.laundry/1048576) + _mem.buf.cache = math.floor(_mem.buf.cache/1048576) + _mem.buf.wired = math.floor(_mem.buf.wired/1048576) -- Calculate memory percentage - _mem.free = _mem.buf.f + _mem.buf.c + _mem.buf.i + _mem.free = _mem.buf.free + _mem.buf.cache + _mem.buf.laundry + -- used memory basically consists of active+inactive+wired _mem.inuse = _mem.total - _mem.free - _mem.wire = _mem.buf.w + _mem.wire = _mem.buf.wired _mem.usep = math.floor(_mem.inuse / _mem.total * 100) - _mem.inusep= math.floor(_mem.inuse / _mem.total * 100) + _mem.wirep = math.floor(_mem.wire / _mem.total * 100) -- Get swap states local vm_swap_total = tonumber(helpers.sysctl("vm.swap_total")) local vm_swap_enabled = tonumber(helpers.sysctl("vm.swap_enabled")) local _swp = { buf = {}, total = nil } - + if vm_swap_enabled == 1 and vm_swap_total > 0 then -- Get swap space in bytes _swp.total = vm_swap_total @@ -63,7 +62,7 @@ local function worker(format) return { _mem.usep, _mem.inuse, _mem.total, _mem.free, _swp.usep, _swp.inuse, _swp.total, _swp.buf.f, - -1, _mem.wire } + _mem.wirep, _mem.wire } end return setmetatable(mem_freebsd, { __call = function(_, ...) return worker(...) end }) From 0c2313dcdde8ec1aba2c8dadc5273aa2fcbe7381 Mon Sep 17 00:00:00 2001 From: Andreas Geisenhainer Date: Wed, 14 Mar 2018 19:15:09 +0100 Subject: [PATCH 4/4] mem: adds information about used memory without freeable parts * used memory (values 1 and 2) are: everything but free+cache * laundry is counted as freeable, but not free. ** "notfreeable memory" (values 11 and 12) are: active+inactive+wired --- README.md | 10 ++++++---- widgets/mem_freebsd.lua | 17 ++++++++++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e0d4e56..d47dab2 100644 --- a/README.md +++ b/README.md @@ -323,8 +323,10 @@ Supported platforms: Linux, FreeBSD. total system memory, 4th as free memory, 5th as swap usage in percent, 6th as swap usage, 7th as total system swap, 8th as free swap and 9th as memory usage with buffers and cache - * FreeBSD: see above, but there are two more values: the 9th value is wired memory - in percent and the 10th value giving wired memory + * FreeBSD: see above, but there are four more values: the 9th value is wired memory + in percent, the 10th value is wired memory. The 11th and 12th value return + 'not freeable memory' (basically active+inactive+wired) in percent and megabytes, + respectively. **vicious.widgets.mpd** @@ -804,8 +806,8 @@ Format functions can be used as well: naughty.notify({ title = "Battery indicator", text = vicious.call(vicious.widgets.bat, function(widget, args) return string.format("%s: %10sh\n%s: %14d%%\n%s: %12dW", - "Remaining time", args[3], - "Wear level", args[4], + "Remaining time", args[3], + "Wear level", args[4], "Present rate", args[5]) end, "0") }) end) diff --git a/widgets/mem_freebsd.lua b/widgets/mem_freebsd.lua index 81ea146..b3c1fae 100644 --- a/widgets/mem_freebsd.lua +++ b/widgets/mem_freebsd.lua @@ -31,12 +31,15 @@ local function worker(format) _mem.buf.wired = math.floor(_mem.buf.wired/1048576) -- Calculate memory percentage - _mem.free = _mem.buf.free + _mem.buf.cache + _mem.buf.laundry + _mem.free = _mem.buf.free + _mem.buf.cache -- used memory basically consists of active+inactive+wired _mem.inuse = _mem.total - _mem.free + _mem.notfreeable = _mem.inuse - _mem.buf.laundry _mem.wire = _mem.buf.wired + _mem.usep = math.floor(_mem.inuse / _mem.total * 100) _mem.wirep = math.floor(_mem.wire / _mem.total * 100) + _mem.notfreeablep = math.floor(_mem.notfreeable / _mem.total * 100) -- Get swap states local vm_swap_total = tonumber(helpers.sysctl("vm.swap_total")) @@ -46,23 +49,23 @@ local function worker(format) if vm_swap_enabled == 1 and vm_swap_total > 0 then -- Get swap space in bytes _swp.total = vm_swap_total - _swp.buf.f = _swp.total - tonumber(vm_stats.v_swapin) + _swp.buf.free = _swp.total - tonumber(vm_stats.v_swapin) -- Rework into megabytes _swp.total = math.floor(_swp.total/1048576) - _swp.buf.f = math.floor(_swp.buf.f/1048576) + _swp.buf.free = math.floor(_swp.buf.free/1048576) -- Calculate percentage - _swp.inuse = _swp.total - _swp.buf.f + _swp.inuse = _swp.total - _swp.buf.free _swp.usep = math.floor(_swp.inuse / _swp.total * 100) else _swp.usep = -1 _swp.inuse = -1 _swp.total = -1 - _swp.buf.f = -1 + _swp.buf.free = -1 end return { _mem.usep, _mem.inuse, _mem.total, _mem.free, - _swp.usep, _swp.inuse, _swp.total, _swp.buf.f, - _mem.wirep, _mem.wire } + _swp.usep, _swp.inuse, _swp.total, _swp.buf.free, + _mem.wirep, _mem.wire, _mem.notfreeablep, _mem.notfreeable } end return setmetatable(mem_freebsd, { __call = function(_, ...) return worker(...) end })