local wezterm = require 'wezterm' local function basename(s) return string.gsub(s or '', '(.*[/\\])(.*)', '%2') end local SEPARATOR = ' | ' local function setup() -- STATUSBAR -- show currently active key table in lower right status bar -- mimicing Vim modes wezterm.on('update-status', function(window, pane) local displayed = { left = {}, right = {} } local keytable = window:active_key_table() if keytable then displayed.left[#displayed.left + 1] = 'MODE: ' .. keytable end local workspace = window:active_workspace() if workspace and workspace ~= 'default' then displayed.left[#displayed.left + 1] = 'WORKSPACE: ' .. workspace end local bat = '' for _, b in ipairs(wezterm.battery_info()) do bat = '🔋 ' .. string.format('%.0f%%', b.state_of_charge * 100) .. ' ' .. b.state end displayed.right[#displayed.right + 1] = bat local currentprogram = pane:get_foreground_process_name() displayed.right[#displayed.right + 1] = basename(currentprogram) local statusleft = '' for _, v in ipairs(displayed.left) do statusleft = statusleft .. v .. SEPARATOR end local statusright = '' for _, v in ipairs(displayed.right) do statusright = statusright .. v .. SEPARATOR end window:set_left_status(statusleft or '') window:set_right_status(statusright or '') end) end return { setup = setup }