2021-08-08 15:58:53 -04:00
|
|
|
local i_o = require 'i_o'
|
2021-07-29 22:18:29 -04:00
|
|
|
local common = require 'common'
|
|
|
|
local geometry = require 'geometry'
|
2021-08-08 19:12:31 -04:00
|
|
|
local pure = require 'pure'
|
|
|
|
local impure = require 'impure'
|
2017-07-19 00:36:15 -04:00
|
|
|
|
2022-07-16 23:48:01 -04:00
|
|
|
-- ASSUME pathspecs will be at least 1 long
|
|
|
|
return function(config, main_state, point)
|
2021-07-17 23:12:59 -04:00
|
|
|
local SPACING = 20
|
|
|
|
local BAR_PAD = 100
|
|
|
|
local SEPARATOR_SPACING = 20
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- smartd
|
|
|
|
|
2022-07-14 18:20:08 -04:00
|
|
|
local mk_smart = function(y)
|
|
|
|
local obj = common.make_text_row(
|
2022-07-14 20:13:29 -04:00
|
|
|
point.x,
|
2022-07-14 18:20:08 -04:00
|
|
|
y,
|
|
|
|
geometry.SECTION_WIDTH,
|
|
|
|
'SMART Daemon'
|
|
|
|
)
|
2022-07-16 00:27:27 -04:00
|
|
|
local update = function()
|
|
|
|
if main_state.trigger10 == 0 then
|
2022-07-14 18:20:08 -04:00
|
|
|
local pid = i_o.execute_cmd('pidof smartd', nil, '*n')
|
|
|
|
common.text_row_set(obj, (pid == '') and 'Error' or 'Running')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return common.mk_acc(
|
2022-07-16 00:00:06 -04:00
|
|
|
geometry.SECTION_WIDTH,
|
2022-07-14 18:20:08 -04:00
|
|
|
0,
|
|
|
|
update,
|
|
|
|
pure.partial(common.text_row_draw_static, obj),
|
|
|
|
pure.partial(common.text_row_draw_dynamic, obj)
|
|
|
|
)
|
|
|
|
end
|
2021-07-17 23:12:59 -04:00
|
|
|
|
2022-07-14 18:20:08 -04:00
|
|
|
local mk_sep = pure.partial(
|
|
|
|
common.mk_seperator,
|
|
|
|
geometry.SECTION_WIDTH,
|
2022-07-14 20:13:29 -04:00
|
|
|
point.x
|
2021-07-17 23:12:59 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- filesystem bar chart
|
|
|
|
|
2022-07-14 18:20:08 -04:00
|
|
|
local mk_bars = function(y)
|
2022-07-17 01:25:53 -04:00
|
|
|
local paths = pure.map_keys('path', config.fs_paths)
|
|
|
|
local names = pure.map_keys('name', config.fs_paths)
|
|
|
|
-- local paths, names = table.unpack(pure.unzip(config.fs_paths))
|
2022-07-14 18:20:08 -04:00
|
|
|
local CONKY_CMDS = pure.map(
|
|
|
|
pure.partial(string.format, '${fs_used_perc %s}', true),
|
|
|
|
paths
|
|
|
|
)
|
|
|
|
local obj = common.make_compound_bar(
|
2022-07-14 20:13:29 -04:00
|
|
|
point.x,
|
2022-07-14 18:20:08 -04:00
|
|
|
y,
|
|
|
|
geometry.SECTION_WIDTH,
|
|
|
|
BAR_PAD,
|
|
|
|
names,
|
|
|
|
SPACING,
|
|
|
|
12,
|
|
|
|
80
|
|
|
|
)
|
|
|
|
local read_fs = function(index, cmd)
|
|
|
|
common.compound_bar_set(obj, index, i_o.conky_numeric(cmd))
|
|
|
|
end
|
2022-07-16 00:27:27 -04:00
|
|
|
local update = function()
|
|
|
|
if main_state.trigger10 == 0 then
|
2022-07-14 18:20:08 -04:00
|
|
|
impure.ieach(read_fs, CONKY_CMDS)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return common.mk_acc(
|
2022-07-16 00:00:06 -04:00
|
|
|
geometry.SECTION_WIDTH,
|
2022-07-16 23:48:01 -04:00
|
|
|
(#config.fs_paths - 1) * SPACING,
|
2022-07-14 18:20:08 -04:00
|
|
|
update,
|
|
|
|
pure.partial(common.compound_bar_draw_static, obj),
|
|
|
|
pure.partial(common.compound_bar_draw_dynamic, obj)
|
|
|
|
)
|
2021-07-17 23:12:59 -04:00
|
|
|
end
|
2017-07-19 00:36:15 -04:00
|
|
|
|
2021-07-17 23:12:59 -04:00
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- main functions
|
2017-07-19 00:36:15 -04:00
|
|
|
|
2022-07-14 20:13:29 -04:00
|
|
|
return common.reduce_blocks_(
|
2022-07-14 22:49:08 -04:00
|
|
|
'FILE SYSTEMS',
|
|
|
|
point,
|
|
|
|
geometry.SECTION_WIDTH,
|
2022-07-16 23:48:01 -04:00
|
|
|
{{mk_smart, config.show_smart, SEPARATOR_SPACING}},
|
|
|
|
common.mk_section(SEPARATOR_SPACING, mk_sep, {mk_bars, true, 0})
|
2022-07-14 18:20:08 -04:00
|
|
|
)
|
2021-07-17 00:17:22 -04:00
|
|
|
end
|