Evie Litherland-Smith
b102f9e209
Reduce complexity and in flake.nix and be more efficient in re-using things Removed some reduandant files in home/ and tidied up the structure somewhat Moved things from desktop, gui, etc... to top level Changed env to shell, indiv shell expressions import relevant others
61 lines
2.3 KiB
Lua
61 lines
2.3 KiB
Lua
local wezterm = require "wezterm"
|
|
|
|
-- The filled in variant of the powerline ) symbol
|
|
local SOLID_RIGHT_SEP = require("utf8").char(0xe0b4)
|
|
|
|
local M = {}
|
|
M.setup = function(scheme)
|
|
wezterm.on("format-tab-title", function(tab, tabs, _, _, hover, max_width)
|
|
local text_fg
|
|
if tab.is_active then
|
|
text_fg = scheme.tab_bar.active_tab.fg_color
|
|
else
|
|
text_fg = scheme.tab_bar.inactive_tab.fg_color
|
|
end
|
|
local title = wezterm.truncate_right(tab.active_pane.title, max_width - 2)
|
|
local colours = wezterm.color.gradient({
|
|
colors = { scheme.tab_bar.active_tab.bg_color, scheme.tab_bar.new_tab.bg_color },
|
|
}, #tabs + 1)
|
|
local elements = {}
|
|
table.insert(elements, "ResetAttributes")
|
|
table.insert(elements, { Background = { Color = colours[tab.tab_index + 1] } })
|
|
table.insert(elements, { Foreground = { Color = text_fg } })
|
|
table.insert(elements, { Text = " " })
|
|
if tab.is_active then
|
|
table.insert(elements, { Attribute = { Underline = "Single" } })
|
|
table.insert(elements, { Attribute = { Intensity = "Bold" } })
|
|
end
|
|
if hover then table.insert(elements, { Attribute = { Italic = true } }) end
|
|
table.insert(elements, { Text = title })
|
|
table.insert(elements, "ResetAttributes")
|
|
table.insert(elements, { Background = { Color = colours[tab.tab_index + 2] } })
|
|
table.insert(elements, { Foreground = { Color = colours[tab.tab_index + 1] } })
|
|
table.insert(elements, { Text = SOLID_RIGHT_SEP })
|
|
table.insert(elements, "ResetAttributes")
|
|
return elements
|
|
end)
|
|
end
|
|
|
|
M._new_tab_format = function(scheme)
|
|
return {
|
|
{ Background = { Color = scheme.tab_bar.new_tab.bg_color } },
|
|
{ Foreground = { Color = scheme.tab_bar.new_tab.fg_color } },
|
|
{ Text = " +" },
|
|
"ResetAttributes",
|
|
{ Background = { Color = scheme.tab_bar.background } },
|
|
{ Foreground = { Color = scheme.tab_bar.new_tab.bg_color } },
|
|
{ Text = SOLID_RIGHT_SEP },
|
|
"ResetAttributes",
|
|
}
|
|
end
|
|
|
|
M.new_tab = function(scheme) return wezterm.format(M._new_tab_format(scheme)) end
|
|
|
|
M.new_tab_hover = function(scheme)
|
|
local format = M._new_tab_format(scheme)
|
|
table.insert(format, 1, { Attribute = { Italic = true } })
|
|
return wezterm.format(format)
|
|
end
|
|
|
|
return M
|