47 lines
1.5 KiB
Lua
47 lines
1.5 KiB
Lua
|
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 }
|