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