local i_o = require 'i_o' local pure = require 'pure' local common = require 'common' local geometry = require 'geometry' return function(point) local TEXT_SPACING = 20 local __string_match = string.match local mk_header = pure.partial( common.mk_header, 'SYSTEM', geometry.SECTION_WIDTH, point.x ) local mk_stats = function(y) local obj = common.make_text_rows( point.x, y, geometry.SECTION_WIDTH, TEXT_SPACING, {'Kernel', 'Uptime', 'Last Upgrade', 'Last Sync'} ) local update = function(pacman_stats) local last_update, last_sync if pacman_stats then last_update, last_sync = __string_match(pacman_stats, "^%d+%s+([^%s]+)%s+([^%s]+).*") end -- TODO this doesn't need to be update every time common.text_rows_set(obj, 1, i_o.conky('$kernel')) common.text_rows_set(obj, 2, i_o.conky('$uptime')) common.text_rows_set(obj, 3, last_update) common.text_rows_set(obj, 4, last_sync) end local static = pure.partial(common.text_rows_draw_static, obj) local dynamic = pure.partial(common.text_rows_draw_dynamic, obj) return common.mk_acc(TEXT_SPACING * 3, update, static, dynamic) end return common.reduce_blocks_( point.y, { common.mk_block(mk_header, true, 0), common.mk_block(mk_stats, true, 0), } ) end