From 0d6f8ce5ccd223d324e006ce0f0cff7e0474adee Mon Sep 17 00:00:00 2001 From: Ibrahim Muftee Date: Mon, 4 Aug 2025 16:53:40 -0500 Subject: feat(wezterm): small tweaks from work --- dot_config/wezterm/tabs.lua | 81 +++++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 22 deletions(-) (limited to 'dot_config/wezterm/tabs.lua') diff --git a/dot_config/wezterm/tabs.lua b/dot_config/wezterm/tabs.lua index 53c5548..49e570e 100644 --- a/dot_config/wezterm/tabs.lua +++ b/dot_config/wezterm/tabs.lua @@ -1,24 +1,61 @@ local wezterm = require("wezterm") -local M = { - tab_bar_style = { - active_tab_left = wezterm.format({ - { Background = { Color = "#3c3836" } }, - { Foreground = { Color = "#ebdbb2" } }, - }), - active_tab_right = wezterm.format({ - { Background = { Color = "#3c3836" } }, - { Foreground = { Color = "#ebdbb2" } }, - }), - inactive_tab_left = wezterm.format({ - { Background = { Color = "#665c34" } }, - { Foreground = { Color = "#bdae93" } }, - }), - inactive_tab_right = wezterm.format({ - { Background = { Color = "#665c34" } }, - { Foreground = { Color = "#bdae93" } }, - }), - }, -} - -return M +-- The filled in variant of the < symbol +local SOLID_LEFT_ARROW = wezterm.nerdfonts.pl_right_hard_divider + +-- The filled in variant of the > symbol +local SOLID_RIGHT_ARROW = wezterm.nerdfonts.pl_left_hard_divider + +-- This function returns the suggested title for a tab. +-- It prefers the title that was set via `tab:set_title()` +-- or `wezterm cli set-tab-title`, but falls back to the +-- title of the active pane in that tab. +function tab_title(tab_info) + local title = tab_info.tab_title + -- if the tab title is explicitly set, take that + if title and #title > 0 then + return title + end + -- Otherwise, use the title from the active pane + -- in that tab + return tab_info.active_pane.title +end + +wezterm.on( + 'format-tab-title', + function(tab, tabs, panes, config, hover, max_width) + local edge_background = '#0b0022' + local background = '#1b1032' + local foreground = '#808080' + + if tab.is_active then + background = '#2b2042' + foreground = '#c0c0c0' + elseif hover then + background = '#3b3052' + foreground = '#909090' + end + + local edge_foreground = background + + local title = tab_title(tab) + + -- ensure that the titles fit in the available space, + -- and that we have room for the edges. + title = wezterm.truncate_right(title, max_width - 2) + + return { + { Background = { Color = edge_background } }, + { Foreground = { Color = edge_foreground } }, + { Text = SOLID_LEFT_ARROW }, + { Background = { Color = background } }, + { Foreground = { Color = foreground } }, + { Text = title }, + { Background = { Color = edge_background } }, + { Foreground = { Color = edge_foreground } }, + { Text = SOLID_RIGHT_ARROW }, + } + end +) + +return {} -- cgit v1.2.3