style: enhance tab bar with new separators and themes

This commit is contained in:
2024-09-24 14:40:11 -04:00
parent a645ad613a
commit a7bcc92586
11 changed files with 531 additions and 206 deletions
+9 -79
View File
@@ -4,53 +4,15 @@
local cur_hour = WEZTERM.time.now():format("%H")
local function get_hour_angle(hour)
return (hour / 12) * 360
end
local hour_angle = get_hour_angle(cur_hour)
local hour_angle = require("funcs").get_hour_angle(cur_hour)
return {
-- Color Scheme
color_scheme = "Catppuccin Macchiato",
color_scheme = "Catppuccin Mocha",
-- Tab Bar Colors
colors = {
tab_bar = {
background = "#1a1b26",
inactive_tab_edge = "#484D69",
active_tab = {
bg_color = "#CA9EE6",
fg_color = "#232634",
intensity = "Normal",
underline = "None",
italic = false,
strikethrough = false,
},
inactive_tab = {
bg_color = "#484D69",
fg_color = "#C6D0F5",
},
inactive_tab_hover = {
bg_color = "#3b3052",
fg_color = "#C6D0F5",
italic = true,
intensity = "Bold",
},
new_tab = {
bg_color = "#1a1b26",
fg_color = "#C6D0F5",
intensity = "Bold",
underline = "None",
italic = false,
strikethrough = false,
},
new_tab_hover = {
bg_color = "#CA9EE6",
fg_color = "#232634",
italic = true,
intensity = "Bold",
},
},
-- Compose Cursor
compose_cursor = "#a5e3a0",
-- Visual Bell
visual_bell = "#E78284",
},
@@ -78,47 +40,15 @@ return {
angle = hour_angle,
},
},
-- Specifies the set of colors that are interpolated in the gradient.
-- Accepts CSS style color specs, from named colors, through rgb
-- strings and more
colors = {
-- "#303446",
"#24273a",
"#1e1e2e",
},
-- Instead of specifying `colors`, you can use one of a number of
-- predefined, preset gradients.
-- A list of presets is shown in a section below.
-- preset = "Warm",
-- Specifies the interpolation style to be used.
-- "Linear", "Basis" and "CatmullRom" as supported.
-- The default is "Linear".
interpolation = "Linear",
-- How the colors are blended in the gradient.
-- "Rgb", "LinearRgb", "Hsv" and "Oklab" are supported.
-- The default is "Rgb".
blend = "Rgb",
-- To avoid vertical color banding for horizontal gradients, the
-- gradient position is randomly shifted by up to the `noise` value
-- for each pixel.
-- Smaller values, or 0, will make bands more prominent.
-- The default value is 64 which gives decent looking results
-- on a retina macbook pro display.
-- noise = 64,
-- By default, the gradient smoothly transitions between the colors.
-- You can adjust the sharpness by specifying the segment_size and
-- segment_smoothness parameters.
-- segment_size configures how many segments are present.
-- segment_smoothness is how hard the edge is; 0.0 is a hard edge,
-- 1.0 is a soft edge.
-- segment_size = 11,
-- segment_smoothness = 0.0,
interpolation = "CatmullRom",
blend = "Oklab",
noise = 128,
segment_size = 7,
segment_smoothness = 1.0,
},
}
+7 -49
View File
@@ -2,64 +2,22 @@
-- │ FONTS │
-- ╰─────────────────────────────────────────────────────────╯
local types = require("types")
return {
-- Terminal Font Size
font_size = 11.5,
font_size = 12.0,
-- Terminal Font
font = WEZTERM.font_with_fallback({
{
-- Font Family
family = "Iosevka Term",
-- Font Weight
weight = "Medium",
-- Character Varients and Ligatures
harfbuzz_features = {
"VSAH=7",
"VSAF=3",
"VSAI=3",
"VSAJ=8",
"VSAM=4",
"VLAB=5",
"cv10=7",
"cv41=3",
"cv44=6",
"cv07=4",
},
},
"Symbols Nerd Font",
"Symbols Nerd Font Mono",
"VictorMono Nerd Font",
"Hack",
"MonaspaceKrypton Nerd Font",
"Roboto",
"Cascadia Code",
}),
font = WEZTERM.font_with_fallback(types.font),
-- Tab Font
window_frame = {
font = WEZTERM.font({
-- Tab Font Family
family = "Iosevka",
-- Tab Font Weight
weight = "Medium",
-- Character Varients and Ligatures
harfbuzz_features = {
"VSAH=7",
"VSAF=3",
"VSAI=3",
"VSAJ=8",
"VSAM=4",
"VLAB=5",
"cv10=7",
"cv41=3",
"cv44=6",
"cv07=4",
},
}),
font = WEZTERM.font(types.win_font),
-- Tab Font Size
font_size = 10,
},
-- Cell Width
-- Cell Sizing
cell_width = 1.0,
line_height = 1.0,
-- ANSI Colors
bold_brightens_ansi_colors = "BrightAndBold",
-- FreeType Load Flags
+140 -28
View File
@@ -2,14 +2,16 @@
-- │ KEYS │
-- ╰─────────────────────────────────────────────────────────╯
-- Define action class
-- Define objects
local act = WEZTERM.action
return {
-- Leader key
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Leader key ━━━━━━━━━━━━━━━━━━━━━━━━━━
leader = { key = " ", mods = "CTRL", timeout_milliseconds = 1500 },
-- ━━━━━━━━━━━━━━━━━━━━━━━━━ Global Key Mappings ━━━━━━━━━━━━━━━━━━━━━
keys = {
-- Close window
{ key = "q", mods = "LEADER|SHIFT|CTRL", action = act.QuitApplication },
-- Split pane
{ key = "|", mods = "LEADER|SHIFT", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) },
{ key = "_", mods = "LEADER|SHIFT", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) },
@@ -19,12 +21,39 @@ return {
{ key = "j", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Down") },
{ key = "k", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Up") },
{ key = "l", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Right") },
-- Move pane to new window
{
key = "!",
mods = "LEADER | SHIFT",
action = WEZTERM.action_callback(function(_, pane)
pane:move_to_new_window()
end),
},
-- Toggle pane zoom
{
key = "z",
mods = "SHIFT|CTRL",
action = act.TogglePaneZoomState,
},
{
key = "z",
mods = "LEADER",
action = act.TogglePaneZoomState,
},
-- Close pane
{ key = "q", mods = "LEADER", action = act.CloseCurrentPane({ confirm = true }) },
{ key = "q", mods = "SHIFT|CTRL", action = act.CloseCurrentPane({ confirm = true }) },
-- Resize pane
{ key = "h", mods = "ALT", action = act.AdjustPaneSize({ "Left", 1 }) },
{ key = "j", mods = "ALT", action = act.AdjustPaneSize({ "Down", 1 }) },
{ key = "k", mods = "ALT", action = act.AdjustPaneSize({ "Up", 1 }) },
{ key = "l", mods = "ALT", action = act.AdjustPaneSize({ "Right", 1 }) },
-- Resize pane mode
{ key = "r", mods = "LEADER", action = act.ActivateKeyTable({ name = "resize_mode", one_shot = false }) },
{ key = "p", mods = "LEADER", action = act.ActivateKeyTable({ name = "window_mode", one_shot = false }) },
-- Tab Manipulation
{ key = "PageUp", mods = "CTRL", action = act.ActivateTabRelative(1) },
@@ -32,14 +61,7 @@ return {
{ key = "PageDown", mods = "CTRL", action = act.ActivateTabRelative(-1) },
{ key = "PageDown", mods = "SHIFT|CTRL", action = act.MoveTabRelative(-1) },
-- Miscellaneous
{ key = "a", mods = "LEADER|CTRL", action = act.SendKey({ key = "a", mods = "CTRL" }) },
{ key = ";", mods = "CTRL", action = act.ActivateCommandPalette },
{ key = "F1", mods = "LEADER", action = act.ShowDebugOverlay },
{ key = "s", mods = "LEADER|CTRL", action = act.ShowLauncherArgs({ flags = "DOMAINS" }) },
{ key = "z", mods = "LEADER|CTRL", action = act.TogglePaneZoomState },
{ key = "n", mods = "LEADER|CTRL", action = act.SpawnWindow },
{
{ -- Quick launch
key = "x",
mods = "LEADER|CTRL",
action = act.ShowLauncherArgs({
@@ -48,6 +70,28 @@ return {
}),
},
-- Search
{ key = "f", mods = "LEADER", action = act.Search("CurrentSelectionOrEmptyString") },
{ key = "f", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") },
-- Miscellaneous
{ key = "a", mods = "LEADER|CTRL", action = act.SendKey({ key = "a", mods = "CTRL" }) },
{ key = ";", mods = "CTRL", action = act.ActivateCommandPalette },
{ key = "F1", mods = "LEADER", action = act.ShowDebugOverlay },
{
key = "u",
mods = "LEADER|CTRL",
action = act.AttachDomain("SSH:aws-discord"),
},
{
key = "s",
mods = "LEADER|CTRL",
action = act.ShowLauncherArgs({ title = "Connect to SSH server", flags = "FUZZY|DOMAINS" }),
},
{ key = "z", mods = "LEADER|CTRL", action = act.TogglePaneZoomState },
{ key = "n", mods = "LEADER|CTRL", action = act.SpawnWindow },
{ key = "x", mods = "LEADER", action = act.ActivateCopyMode },
-- Naming
{ -- Rename [W]orkspace
key = "w",
@@ -66,9 +110,10 @@ return {
mods = "LEADER|CTRL",
action = act.PromptInputLine({
description = "Enter new name for the tab:",
action = WEZTERM.action_callback(function(window, _, line)
action = WEZTERM.action_callback(function(_, pane, line)
if line then
WEZTERM.mux.rename_workspace(window:active_workspace(), line)
local tab = pane:tab()
tab:set_title(line)
end
end),
}),
@@ -79,33 +124,100 @@ return {
action = act.Multiple({
WEZTERM.action_callback(function(_, _)
RESURRECT.save_state(RESURRECT.workspace_state.get_workspace_state())
RESURRECT.window_state.save_window_action()
end),
}),
},
{ -- [R]estore Session
key = "r",
mods = "ALT",
action = act.Multiple({
WEZTERM.action_callback(function(win, pane)
RESURRECT.fuzzy_load(win, pane, function(id, _)
id = string.match(id, "([^/]+)$")
id = string.match(id, "(.+)%..+$")
local state = RESURRECT.load_state(id, "workspace")
action = WEZTERM.action_callback(function(win, pane)
RESURRECT.fuzzy_load(win, pane, function(id)
local type = string.match(id, "^([^/]+)") -- match before '/'
id = string.match(id, "([^/]+)$") -- match after '/'
id = string.match(id, "(.+)%..+$") -- remove file extension
local state
if type == "workspace" then
state = RESURRECT.load_state(id, "workspace")
RESURRECT.workspace_state.restore_workspace(state, {
relative = true,
restore_text = true,
on_pane_restore = RESURRECT.tab_state.default_on_pane_restore,
})
end)
end),
}),
},
{
key = "!",
mods = "LEADER | SHIFT",
action = WEZTERM.action_callback(function(_, pane)
pane:move_to_new_window()
elseif type == "window" then
state = RESURRECT.load_state(id, "window")
RESURRECT.window_state.restore_window(pane:window(), state, {
relative = true,
restore_text = true,
on_pane_restore = RESURRECT.tab_state.default_on_pane_restore,
-- uncomment this line to use active tab when restoring
-- tab = win:active_tab(),
})
end
end)
end),
},
},
-- ━━━━━━━━━━━━━━━━━━━━━━ Conditional Key Mappings ━━━━━━━━━━━━━━━━━━━
key_tables = {
resize_mode = { ---------- Resize Pane Mode -------------------------
{ key = "LeftArrow", action = act.AdjustPaneSize({ "Left", 1 }) },
{ key = "h", action = act.AdjustPaneSize({ "Left", 1 }) },
{ key = "RightArrow", action = act.AdjustPaneSize({ "Right", 1 }) },
{ key = "l", action = act.AdjustPaneSize({ "Right", 1 }) },
{ key = "UpArrow", action = act.AdjustPaneSize({ "Up", 1 }) },
{ key = "k", action = act.AdjustPaneSize({ "Up", 1 }) },
{ key = "DownArrow", action = act.AdjustPaneSize({ "Down", 1 }) },
{ key = "j", action = act.AdjustPaneSize({ "Down", 1 }) },
-- Cancel the mode by pressing escape
{ key = "Escape", action = "PopKeyTable" },
},
window_mode = { --------- Activate Pane Mode ----------------------
{ key = "LeftArrow", action = act.ActivatePaneDirection("Left") },
{ key = "h", action = act.ActivatePaneDirection("Left") },
{ key = "RightArrow", action = act.ActivatePaneDirection("Right") },
{ key = "l", action = act.ActivatePaneDirection("Right") },
{ key = "UpArrow", action = act.ActivatePaneDirection("Up") },
{ key = "k", action = act.ActivatePaneDirection("Up") },
{ key = "DownArrow", action = act.ActivatePaneDirection("Down") },
{ key = "j", action = act.ActivatePaneDirection("Down") },
},
},
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━ Mouse Bindings ━━━━━━━━━━━━━━━━━━━━━━━━
mouse_bindings = {
{ -- Left-Click: (Up) Select Text
event = { Up = { streak = 1, button = "Left" } },
mods = "NONE",
action = act.CompleteSelection("ClipboardAndPrimarySelection"),
},
{ -- Ctrl+Left-Click: (Up) Open Hyperlink
event = { Up = { streak = 1, button = "Left" } },
mods = "CTRL",
action = act.OpenLinkAtMouseCursor,
},
-- { -- Ctrl+Double-Left-Click: (Up) Open Hyperlink
-- event = { Up = { streak = 2, button = "Left" } },
-- mods = "CTRL",
-- action = act.OpenLinkAtMouseCursor,
-- },
{ -- Ctrl+WheelUp: Go to previous tab
event = { Down = { streak = 1, button = { WheelUp = 1 } } },
mods = "CTRL",
action = act.ActivateTabRelative(-1),
},
{ -- Ctrl+WheelDown: Go to next tab
event = { Down = { streak = 1, button = { WheelDown = 1 } } },
mods = "CTRL",
action = act.ActivateTabRelative(1),
},
},
}
+6 -3
View File
@@ -10,6 +10,9 @@ return {
initial_rows = 38,
tab_max_width = 60,
tab_bar_at_bottom = false,
unicode_version = 14,
-- Resize by cell
use_resize_increments = true,
@@ -17,9 +20,6 @@ return {
-- Use Retro tab bar
use_fancy_tab_bar = false,
-- Prefer to spawn tabs rather than windows
prefer_to_spawn_tabs = true,
-- Set the window padding
window_padding = {
left = "0%",
@@ -47,6 +47,9 @@ return {
-- Terminal Variable
term = "wezterm",
--Honor kitty protocol inputs
enable_kitty_keyboard = true,
-- Rendering
front_end = "WebGpu",
webgpu_power_preference = "HighPerformance",