181 lines
3.8 KiB
Lua
181 lines
3.8 KiB
Lua
-- Pull in the wezterm API
|
|
local wezterm = require("wezterm")
|
|
local act = wezterm.action
|
|
|
|
-- This table will hold the configuration.
|
|
local config = {}
|
|
|
|
-- In newer versions of wezterm, use the config_builder which will
|
|
-- help provide clearer error messages
|
|
if wezterm.config_builder then
|
|
config = wezterm.config_builder()
|
|
end
|
|
|
|
-- 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 title = tab_title(tab)
|
|
return {
|
|
{ Text = ' ' .. title .. '' }
|
|
}
|
|
end)
|
|
|
|
-- Do not check for or show window with update information
|
|
config.check_for_updates = false
|
|
|
|
--| Font configuration
|
|
config.font = wezterm.font("Fisa Code")
|
|
config.font_size = 10.0
|
|
|
|
--| Enable gruvbox colour scheme
|
|
config.color_scheme = "gruvbox_material_dark_medium"
|
|
|
|
--| Pad window borders
|
|
config.window_padding = {
|
|
left = 10,
|
|
right = 10,
|
|
top = 10,
|
|
bottom = 10,
|
|
}
|
|
|
|
--| Disable modern tab bar
|
|
config.use_fancy_tab_bar = false
|
|
config.tab_max_width = 32
|
|
|
|
--| Tab bar colors
|
|
config.colors = {
|
|
tab_bar = {
|
|
background = "#32302f",
|
|
active_tab = {
|
|
bg_color = "#32302f",
|
|
fg_color = "#7daea3",
|
|
intensity = "Bold",
|
|
italic = true
|
|
},
|
|
inactive_tab = {
|
|
bg_color = "#32302f",
|
|
fg_color = "#a89984",
|
|
intensity = "Bold",
|
|
italic = true
|
|
},
|
|
inactive_tab_hover = {
|
|
bg_color = "#32302f",
|
|
fg_color = "#a89984",
|
|
intensity = "Bold",
|
|
italic = true
|
|
},
|
|
new_tab = {
|
|
bg_color = "#32302f",
|
|
fg_color = "#a89984",
|
|
intensity = "Bold",
|
|
italic = true
|
|
},
|
|
new_tab_hover = {
|
|
bg_color = "#32302f",
|
|
fg_color = "#a89984",
|
|
intensity = "Bold",
|
|
italic = true
|
|
}
|
|
}
|
|
}
|
|
|
|
--| Key assignments
|
|
config.keys = {
|
|
{ -- Spawn new tab
|
|
key = "Enter",
|
|
mods = "ALT",
|
|
action = act.SpawnTab("CurrentPaneDomain")
|
|
},
|
|
|
|
{ -- Focus previous tab
|
|
key = "LeftArrow",
|
|
mods = "ALT",
|
|
action = act.ActivateTabRelative(-1)
|
|
},
|
|
|
|
{ -- Focus next tab
|
|
key = "RightArrow",
|
|
mods = "ALT",
|
|
action = act.ActivateTabRelative(1)
|
|
},
|
|
|
|
{ -- Split pane vertically
|
|
key = "v",
|
|
mods = "ALT",
|
|
action = act.SplitVertical({domain = "CurrentPaneDomain"})
|
|
},
|
|
|
|
{ -- Split pane horizontally
|
|
key = "s",
|
|
mods = "ALT",
|
|
action = act.SplitHorizontal({domain = "CurrentPaneDomain"})
|
|
},
|
|
|
|
{ -- Move pane split down
|
|
key = "PageDown",
|
|
mods = "ALT",
|
|
action = act.AdjustPaneSize({"Down", 5})
|
|
},
|
|
|
|
{ -- Move pane split up
|
|
key = "PageUp",
|
|
mods = "ALT",
|
|
action = act.AdjustPaneSize({"Up", 5})
|
|
},
|
|
|
|
{ -- Focus next pane
|
|
key = "DownArrow",
|
|
mods = "ALT",
|
|
action = act.ActivatePaneDirection("Next")
|
|
},
|
|
|
|
{ -- Focus previous pane
|
|
key = "UpArrow",
|
|
mods = "ALT",
|
|
action = act.ActivatePaneDirection("Prev")
|
|
},
|
|
|
|
{ -- Close pane
|
|
key = "Escape",
|
|
mods = "ALT",
|
|
action = act.CloseCurrentPane({confirm = false})
|
|
},
|
|
|
|
{ -- Activate vi copy mode
|
|
key = "X",
|
|
mods = "CTRL",
|
|
action = act.ActivateCopyMode
|
|
},
|
|
|
|
{ -- Paste from clipboard
|
|
key = "V",
|
|
mods = "CTRL",
|
|
action = act.PasteFrom("Clipboard")
|
|
},
|
|
|
|
{ -- This lets us unify delete word across programs
|
|
key = "Backspace",
|
|
mods = "CTRL",
|
|
action = act.SendKey({key = "w", mods = "CTRL"})
|
|
},
|
|
}
|
|
-- Disable the default keybindings
|
|
config.disable_default_key_bindings = true
|
|
|
|
return config
|