mirror of
https://github.com/acedanger/dotfiles.git
synced 2025-12-06 06:40:11 -08:00
71 lines
1.8 KiB
Lua
71 lines
1.8 KiB
Lua
---@module "events.format-tab-title"
|
|
---@author sravioli
|
|
---@license GNU-GPLv3
|
|
|
|
---@diagnostic disable: undefined-field
|
|
|
|
local wt = require "wezterm"
|
|
|
|
local Utils = require "utils"
|
|
local str = Utils.fn.str
|
|
local Icon = Utils.class.icon
|
|
local tabicons = Icon.Sep.tb
|
|
|
|
wt.on("format-tab-title", function(tab, _, _, config, hover, max_width)
|
|
if config.use_fancy_tab_bar or not config.enable_tab_bar then
|
|
return
|
|
end
|
|
|
|
local theme = config.color_schemes[config.color_scheme]
|
|
local bg = theme.tab_bar.background
|
|
local fg
|
|
|
|
local Title = Utils.class.layout:new "TabTitle"
|
|
|
|
local tab_idx = tab.tab_index
|
|
local attributes = {}
|
|
|
|
---set colors based on states
|
|
if tab.is_active then
|
|
fg = theme.ansi[5]
|
|
attributes = { "Bold" }
|
|
elseif hover then
|
|
fg = theme.tab_bar.inactive_tab_hover.bg_color
|
|
else
|
|
fg = theme.brights[1]
|
|
end
|
|
|
|
---Check if any pane has unseen output
|
|
local unseen_output = false
|
|
for _, p in ipairs(tab.panes) do
|
|
if p.has_unseen_output then
|
|
unseen_output = true
|
|
break
|
|
end
|
|
end
|
|
|
|
local pane = tab.active_pane
|
|
local tab_title = (tab.tab_title and #tab.tab_title > 0) and tab.tab_title or pane.title
|
|
local title = str.format_tab_title(pane, tab_title, config, max_width)
|
|
|
|
---add the either the leftmost element or the normal left separator. This is done to
|
|
---esure a bit of space from the left margin.
|
|
Title:append(bg, fg, tab_idx == 0 and tabicons.leftmost or tabicons.left, attributes)
|
|
|
|
---add the tab number. can be substituted by the `has_unseen_output` notification
|
|
Title:append(
|
|
fg,
|
|
bg,
|
|
(unseen_output and Icon.Notification or Icon.Nums[tab_idx + 1] or "") .. " ",
|
|
attributes
|
|
)
|
|
|
|
---the formatted tab title
|
|
Title:append(fg, bg, title, attributes)
|
|
|
|
---the right tab bar separator
|
|
Title:append(bg, fg, Icon.Sep.block .. tabicons.right, attributes)
|
|
|
|
return Title
|
|
end)
|