feat(wezterm): split into multiple files

This commit is contained in:
winston 2022-12-19 17:50:20 +01:00
parent f80e3568be
commit d5db172ab7
Signed by: winston
GPG key ID: 3786770EDBC2B481
5 changed files with 373 additions and 377 deletions

102
dot_config/wezterm/bar.lua Normal file
View file

@ -0,0 +1,102 @@
local wezterm = require("wezterm")
local fonts = require("fonts")
local DIVIDERS = {
LEFT = utf8.char(0xe0be),
RIGHT = utf8.char(0xe0bc),
}
-- custom tab bar
---@diagnostic disable-next-line: unused-local
wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_width)
local colours = config.resolved_palette.tab_bar
local active_tab_index = 0
for _, t in ipairs(tabs) do
if t.is_active == true then
active_tab_index = t.tab_index
end
end
local active_bg = config.resolved_palette.ansi[6]
local active_fg = colours.background
local inactive_bg = colours.inactive_tab.bg_color
local inactive_fg = colours.inactive_tab.fg_color
local new_tab_bg = colours.new_tab.bg_color
local s_bg, s_fg, e_bg, e_fg
-- the last tab
if tab.tab_index == #tabs - 1 then
if tab.is_active then
s_bg = active_bg
s_fg = active_fg
e_bg = new_tab_bg
e_fg = active_bg
else
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = new_tab_bg
e_fg = inactive_bg
end
elseif tab.tab_index == active_tab_index - 1 then
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = active_bg
e_fg = inactive_bg
elseif tab.is_active then
s_bg = active_bg
s_fg = active_fg
e_bg = inactive_bg
e_fg = active_bg
else
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = inactive_bg
e_fg = inactive_bg
end
local muxpanes = wezterm.mux.get_tab(tab.tab_id):panes()
local count = #muxpanes == 1 and "" or #muxpanes
local index = tab.tab_index + 1 .. ": "
return {
{ Background = { Color = s_bg } },
{ Foreground = { Color = s_fg } },
{
Text = " " .. index .. tab.active_pane.title .. fonts.numberStyle(count, "superscript") .. " ",
},
{ Background = { Color = e_bg } },
{ Foreground = { Color = e_fg } },
{ Text = DIVIDERS.RIGHT },
}
end)
-- custom status
---@diagnostic disable-next-line: unused-local
wezterm.on("update-status", function(window, pane)
local palette = window:effective_config().resolved_palette
local firstTabActive = window:mux_window():tabs_with_info()[1].is_active
local leader_text = ""
if window:leader_is_active() then
leader_text = ""
end
local divider_bg = firstTabActive and palette.ansi[6] or palette.tab_bar.inactive_tab.bg_color
window:set_left_status(wezterm.format({
{ Foreground = { Color = palette.background } },
{ Background = { Color = palette.ansi[5] } },
{ Text = leader_text },
{ Background = { Color = divider_bg } },
{ Foreground = { Color = palette.ansi[5] } },
{ Text = DIVIDERS.RIGHT },
}))
window:set_right_status(wezterm.format({
{ Background = { Color = palette.background } },
{ Foreground = { Color = palette.ansi[6] } },
{ Text = os.date(" %H:%M ") },
}))
end)

View file

@ -0,0 +1,86 @@
local wezterm = require("wezterm")
local M = {}
M.get_font = function(name)
-- fonts I like, with the settings I prefer
-- kept seperately from the rest of the config so that I can easily change them
local fonts = {
berkeley = {
font = {
family = "Berkeley Mono",
weight = "Bold",
},
size = 16,
},
comic = {
font = "Comic Code Ligatures",
size = 18,
},
fantasque = {
font = "Fantasque Sans Mono",
size = 20,
},
victor = {
font = {
family = "Victor Mono",
weight = "DemiBold",
harfbuzz_features = { "ss02=1" },
},
size = 18,
},
}
return {
font = wezterm.font_with_fallback({
fonts[name].font,
"Apple Color Emoji",
}),
size = fonts[name].size,
}
end
-- superscript/subscript
M.numberStyle = function(number, script)
local scripts = {
superscript = {
"",
"¹",
"²",
"³",
"",
"",
"",
"",
"",
"",
},
subscript = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
},
}
local numbers = scripts[script]
local number_string = tostring(number)
local result = ""
for i = 1, #number_string do
local char = number_string:sub(i, i)
local num = tonumber(char)
if num then
result = result .. numbers[num + 1]
else
result = result .. char
end
end
return result
end
return M

View file

@ -0,0 +1,117 @@
local wezterm = require("wezterm")
local act = wezterm.action
return {
-- use 'Backslash' to split horizontally
{
key = "\\",
mods = "LEADER",
action = act({ SplitHorizontal = { domain = "CurrentPaneDomain" } }),
},
-- and 'Minus' to split vertically
{
key = "-",
mods = "LEADER",
action = act({ SplitVertical = { domain = "CurrentPaneDomain" } }),
},
-- 'hjkl' to move between panes
{ key = "h", mods = "LEADER", action = act({ ActivatePaneDirection = "Left" }) },
{ key = "j", mods = "LEADER", action = act({ ActivatePaneDirection = "Down" }) },
{ key = "k", mods = "LEADER", action = act({ ActivatePaneDirection = "Up" }) },
{ key = "l", mods = "LEADER", action = act({ ActivatePaneDirection = "Right" }) },
-- -- Shift + 'hjkl' to resize panes
{ key = "h", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Left", 5 } }) },
{ key = "j", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Down", 5 } }) },
{ key = "k", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Up", 5 } }) },
{ key = "l", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Right", 5 } }) },
-- numbers to navigate to tabs
{ key = "1", mods = "LEADER", action = act({ ActivateTab = 0 }) },
{ key = "2", mods = "LEADER", action = act({ ActivateTab = 1 }) },
{ key = "3", mods = "LEADER", action = act({ ActivateTab = 2 }) },
{ key = "4", mods = "LEADER", action = act({ ActivateTab = 3 }) },
{ key = "5", mods = "LEADER", action = act({ ActivateTab = 4 }) },
{ key = "6", mods = "LEADER", action = act({ ActivateTab = 5 }) },
{ key = "7", mods = "LEADER", action = act({ ActivateTab = 6 }) },
{ key = "8", mods = "LEADER", action = act({ ActivateTab = 7 }) },
{ key = "9", mods = "LEADER", action = act({ ActivateTab = 8 }) },
{ key = "9", mods = "LEADER", action = act({ ActivateTab = 9 }) },
{ key = "0", mods = "LEADER", action = act({ ActivateTab = -1 }) },
{ key = "1", mods = "SUPER", action = act({ ActivateTab = 0 }) },
{ key = "2", mods = "SUPER", action = act({ ActivateTab = 1 }) },
{ key = "3", mods = "SUPER", action = act({ ActivateTab = 2 }) },
{ key = "4", mods = "SUPER", action = act({ ActivateTab = 3 }) },
{ key = "5", mods = "SUPER", action = act({ ActivateTab = 4 }) },
{ key = "6", mods = "SUPER", action = act({ ActivateTab = 5 }) },
{ key = "7", mods = "SUPER", action = act({ ActivateTab = 6 }) },
{ key = "8", mods = "SUPER", action = act({ ActivateTab = 7 }) },
{ key = "9", mods = "SUPER", action = act({ ActivateTab = 8 }) },
{ key = "9", mods = "SUPER", action = act({ ActivateTab = 9 }) },
{ key = "0", mods = "SUPER", action = act({ ActivateTab = -1 }) },
-- 'c' to create a new tab
{ key = "c", mods = "LEADER", action = act({ SpawnTab = "CurrentPaneDomain" }) },
-- 'x' to kill the current pane
{ key = "x", mods = "LEADER", action = act({ CloseCurrentPane = { confirm = true } }) },
-- 'z' to toggle the zoom for the current pane
{ key = "z", mods = "LEADER", action = "TogglePaneZoomState" },
-- 'v' to visually select in the current pane
{ key = "v", mods = "LEADER", action = "ActivateCopyMode" },
-- 'r' to rotate panes
{ key = "r", mods = "LEADER", action = act.RotatePanes("Clockwise") },
{ key = " ", mods = "LEADER", action = act.QuickSelect },
{
key = "o",
mods = "LEADER",
action = act.QuickSelectArgs({
label = "open url",
patterns = {
"https?://\\S+",
},
action = wezterm.action_callback(function(window, pane)
local url = window:get_selection_text_for_pane(pane)
wezterm.open_with(url)
end),
}),
},
-- copypasta
{ key = "Enter", mods = "ALT", action = act.ToggleFullScreen },
{ key = "-", mods = "CTRL", action = act.DecreaseFontSize },
{ key = "-", mods = "SUPER", action = act.DecreaseFontSize },
{ key = "=", mods = "CTRL", action = act.IncreaseFontSize },
{ key = "=", mods = "SUPER", action = act.IncreaseFontSize },
{ key = "0", mods = "CTRL", action = act.ResetFontSize },
{ key = "0", mods = "SUPER", action = act.ResetFontSize },
{ key = "c", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") },
{ key = "c", mods = "SUPER", action = act.CopyTo("Clipboard") },
{ key = "v", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") },
{ key = "v", mods = "SUPER", action = act.PasteFrom("Clipboard") },
{ key = "f", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") },
{ key = "f", mods = "SUPER", action = act.Search("CurrentSelectionOrEmptyString") },
{ key = "l", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay },
{ key = "p", mods = "LEADER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "Activate" }) },
{ key = "P", mods = "LEADER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "SwapWithActive" }) },
{ key = "p", mods = "SUPER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "Activate" }) },
{ key = "P", mods = "SUPER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "SwapWithActive" }) },
{ key = "R", mods = "LEADER", action = act.ReloadConfiguration },
-- mostly OS defaults
{ key = "n", mods = "SHIFT|CTRL", action = act.SpawnWindow },
{ key = "n", mods = "SUPER", action = act.SpawnWindow },
{ key = "t", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") },
{ key = "t", mods = "SUPER", action = act.SpawnTab("CurrentPaneDomain") },
{ key = "w", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) },
{ key = "w", mods = "SUPER", action = act.CloseCurrentTab({ confirm = true }) },
{
key = "u",
mods = "SHIFT|CTRL",
action = act.CharSelect({
copy_on_select = true,
copy_to = "ClipboardAndPrimarySelection",
}),
},
}

View file

@ -0,0 +1,28 @@
local wezterm = require("wezterm")
local M = {}
M.scheme_for_appearance = function(appearance, theme)
if string.match(wezterm.target_triple, "linux") then
return theme.dark
end
if appearance:find("Dark") then
return theme.dark
else
return theme.light
end
end
M.get_custom_colorschemes = function()
local oledppuccin = wezterm.color.get_builtin_schemes()["Catppuccin Mocha"]
oledppuccin.background = "#000000"
oledppuccin.tab_bar.background = "#040404"
oledppuccin.tab_bar.inactive_tab.bg_color = "#0f0f0f"
oledppuccin.tab_bar.new_tab.bg_color = "#080808"
return {
["OLEDppuccin"] = oledppuccin,
}
end
return M

View file

@ -1,383 +1,46 @@
-- vim:foldmethod=marker -- vim:foldmethod=marker
local wezterm = require("wezterm") local wezterm = require("wezterm")
local fonts = require("fonts")
local theme = require("theme")
require("bar")
-- fonts I like, with the settings I prefer {{{ local font = fonts.get_font("berkeley")
-- kept seperately from the rest of the config so that I can easily change them
local fonts = {
berkeley = {
font = {
family = "Berkeley Mono",
weight = "Bold",
},
size = 16,
},
comic = {
font = "Comic Code Ligatures",
size = 18,
},
fantasque = {
font = "Fantasque Sans Mono",
size = 20,
},
operator = {
font = {
family = "Operator Mono",
weight = "Book",
},
size = 18,
},
victor = {
font = {
family = "Victor Mono",
weight = "DemiBold",
harfbuzz_features = { "ss02=1" },
},
size = 18,
},
}
local function get_font(name)
return {
font = wezterm.font_with_fallback({
fonts[name].font,
"Apple Color Emoji",
}),
size = fonts[name].size,
}
end
-- }}}
-- superscript/subscript {{{
local function numberStyle(number, script)
local scripts = {
superscript = {
"",
"¹",
"²",
"³",
"",
"",
"",
"",
"",
"",
},
subscript = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
},
}
local numbers = scripts[script]
local number_string = tostring(number)
local result = ""
for i = 1, #number_string do
local char = number_string:sub(i, i)
local num = tonumber(char)
if num then
result = result .. numbers[num + 1]
else
result = result .. char
end
end
return result
end
-- }}}
-- custom tab bar {{{
---@diagnostic disable-next-line: unused-local
wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_width)
local RIGHT_DIVIDER = utf8.char(0xe0bc)
local colours = config.resolved_palette.tab_bar
local active_tab_index = 0
for _, t in ipairs(tabs) do
if t.is_active == true then
active_tab_index = t.tab_index
end
end
local active_bg = config.resolved_palette.ansi[6]
local active_fg = colours.background
local inactive_bg = colours.inactive_tab.bg_color
local inactive_fg = colours.inactive_tab.fg_color
local new_tab_bg = colours.new_tab.bg_color
local s_bg, s_fg, e_bg, e_fg
-- the last tab
if tab.tab_index == #tabs - 1 then
if tab.is_active then
s_bg = active_bg
s_fg = active_fg
e_bg = new_tab_bg
e_fg = active_bg
else
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = new_tab_bg
e_fg = inactive_bg
end
elseif tab.tab_index == active_tab_index - 1 then
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = active_bg
e_fg = inactive_bg
elseif tab.is_active then
s_bg = active_bg
s_fg = active_fg
e_bg = inactive_bg
e_fg = active_bg
else
s_bg = inactive_bg
s_fg = inactive_fg
e_bg = inactive_bg
e_fg = inactive_bg
end
local muxpanes = wezterm.mux.get_tab(tab.tab_id):panes()
local count = #muxpanes == 1 and "" or #muxpanes
return {
{ Background = { Color = s_bg } },
{ Foreground = { Color = s_fg } },
{
Text = " "
.. tab.tab_index + 1
.. ": "
.. tab.active_pane.title
.. numberStyle(count, "superscript")
.. " ",
},
{ Background = { Color = e_bg } },
{ Foreground = { Color = e_fg } },
{ Text = RIGHT_DIVIDER },
}
end)
-- }}}
-- custom status {{{
---@diagnostic disable-next-line: unused-local
wezterm.on("update-status", function(window, pane)
local palette = window:effective_config().resolved_palette
local firstTabActive = window:mux_window():tabs_with_info()[1].is_active
local RIGHT_DIVIDER = utf8.char(0xe0b0)
local text = ""
if window:leader_is_active() then
text = ""
end
local divider_bg = firstTabActive and palette.ansi[6] or palette.tab_bar.inactive_tab.bg_color
window:set_left_status(wezterm.format({
{ Foreground = { Color = palette.background } },
{ Background = { Color = palette.ansi[5] } },
{ Text = text },
{ Background = { Color = divider_bg } },
{ Foreground = { Color = palette.ansi[5] } },
{ Text = RIGHT_DIVIDER },
}))
end)
-- }}}
local custom = wezterm.color.get_builtin_schemes()["Catppuccin Mocha"]
custom.background = "#000000"
custom.tab_bar.background = "#040404"
custom.tab_bar.inactive_tab.bg_color = "#0f0f0f"
custom.tab_bar.new_tab.bg_color = "#080808"
local darkTheme = "OLEDppuccin"
local lightTheme = "Catppuccin Latte"
local function update_nvim(appearance)
local f = io.popen("nvr --serverlist")
if f ~= nil and f:lines() ~= nil then
local theme = appearance:find("Dark") and "dark" or "light"
for name in f:lines() do
io.popen("nvr --servername " .. name .. ' -c "set background=' .. theme .. '"')
end
end
end
local function scheme_for_appearance(appearance)
if string.match(wezterm.target_triple, "linux") then
return darkTheme
end
-- this isn't fully baked yet
-- update_nvim(appearance)
if appearance:find("Dark") then
return darkTheme
else
return lightTheme
end
end
local font = get_font("berkeley")
local act = wezterm.action
return { return {
disable_default_key_bindings = true, -- keys
-- keyboard shortcuts {{{ disable_default_key_bindings = true,
leader = { key = "s", mods = "CTRL", timeout_milliseconds = 5000 }, leader = { key = "s", mods = "CTRL", timeout_milliseconds = 5000 },
keys = { keys = require("shortcuts"),
-- use 'Backslash' to split horizontally -- font
{ font = font.font,
key = "\\", font_size = font.size,
mods = "LEADER", -- window
action = act({ SplitHorizontal = { domain = "CurrentPaneDomain" } }), window_decorations = "RESIZE",
}, window_padding = {
-- and 'Minus' to split vertically left = 0,
{ right = 0,
key = "-", top = 0,
mods = "LEADER", bottom = 0,
action = act({ SplitVertical = { domain = "CurrentPaneDomain" } }), },
}, inactive_pane_hsb = {
-- 'hjkl' to move between panes saturation = 1.0,
{ key = "h", mods = "LEADER", action = act({ ActivatePaneDirection = "Left" }) }, brightness = 0.6,
{ key = "j", mods = "LEADER", action = act({ ActivatePaneDirection = "Down" }) }, },
{ key = "k", mods = "LEADER", action = act({ ActivatePaneDirection = "Up" }) }, -- theme
{ key = "l", mods = "LEADER", action = act({ ActivatePaneDirection = "Right" }) }, color_schemes = theme.get_custom_colorschemes(),
-- -- Shift + 'hjkl' to resize panes color_scheme = theme.scheme_for_appearance(wezterm.gui.get_appearance(), {
{ key = "h", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Left", 5 } }) }, dark = "OLEDppuccin",
{ key = "j", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Down", 5 } }) }, light = "Catppuccin Latte",
{ key = "k", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Up", 5 } }) }, }),
{ key = "l", mods = "LEADER|SHIFT", action = act({ AdjustPaneSize = { "Right", 5 } }) }, -- tab bar
-- numbers to navigate to tabs hide_tab_bar_if_only_one_tab = false,
{ key = "1", mods = "LEADER", action = act({ ActivateTab = 0 }) }, tab_bar_at_bottom = true,
{ key = "2", mods = "LEADER", action = act({ ActivateTab = 1 }) }, tab_max_width = 32,
{ key = "3", mods = "LEADER", action = act({ ActivateTab = 2 }) }, use_fancy_tab_bar = false,
{ key = "4", mods = "LEADER", action = act({ ActivateTab = 3 }) }, -- etc.
{ key = "5", mods = "LEADER", action = act({ ActivateTab = 4 }) }, adjust_window_size_when_changing_font_size = false,
{ key = "6", mods = "LEADER", action = act({ ActivateTab = 5 }) }, audible_bell = "Disabled",
{ key = "7", mods = "LEADER", action = act({ ActivateTab = 6 }) }, clean_exit_codes = { 130 },
{ key = "8", mods = "LEADER", action = act({ ActivateTab = 7 }) }, default_cursor_style = "BlinkingBar",
{ key = "9", mods = "LEADER", action = act({ ActivateTab = 8 }) }, enable_scroll_bar = false,
{ key = "9", mods = "LEADER", action = act({ ActivateTab = 9 }) },
{ key = "0", mods = "LEADER", action = act({ ActivateTab = -1 }) },
{ key = "1", mods = "SUPER", action = act({ ActivateTab = 0 }) },
{ key = "2", mods = "SUPER", action = act({ ActivateTab = 1 }) },
{ key = "3", mods = "SUPER", action = act({ ActivateTab = 2 }) },
{ key = "4", mods = "SUPER", action = act({ ActivateTab = 3 }) },
{ key = "5", mods = "SUPER", action = act({ ActivateTab = 4 }) },
{ key = "6", mods = "SUPER", action = act({ ActivateTab = 5 }) },
{ key = "7", mods = "SUPER", action = act({ ActivateTab = 6 }) },
{ key = "8", mods = "SUPER", action = act({ ActivateTab = 7 }) },
{ key = "9", mods = "SUPER", action = act({ ActivateTab = 8 }) },
{ key = "9", mods = "SUPER", action = act({ ActivateTab = 9 }) },
{ key = "0", mods = "SUPER", action = act({ ActivateTab = -1 }) },
-- 'c' to create a new tab
{ key = "c", mods = "LEADER", action = act({ SpawnTab = "CurrentPaneDomain" }) },
-- 'x' to kill the current pane
{ key = "x", mods = "LEADER", action = act({ CloseCurrentPane = { confirm = true } }) },
-- 'z' to toggle the zoom for the current pane
{ key = "z", mods = "LEADER", action = "TogglePaneZoomState" },
-- 'v' to visually select in the current pane
{ key = "v", mods = "LEADER", action = "ActivateCopyMode" },
-- 'r' to rotate panes
{ key = "r", mods = "LEADER", action = act.RotatePanes("Clockwise") },
{ key = " ", mods = "LEADER", action = act.QuickSelect },
{
key = "o",
mods = "LEADER",
action = wezterm.action.QuickSelectArgs({
label = "open url",
patterns = {
"https?://\\S+",
},
action = wezterm.action_callback(function(window, pane)
local url = window:get_selection_text_for_pane(pane)
wezterm.open_with(url)
end),
}),
},
-- copypasta
{ key = "Enter", mods = "ALT", action = act.ToggleFullScreen },
{ key = "-", mods = "CTRL", action = act.DecreaseFontSize },
{ key = "-", mods = "SUPER", action = act.DecreaseFontSize },
{ key = "=", mods = "CTRL", action = act.IncreaseFontSize },
{ key = "=", mods = "SUPER", action = act.IncreaseFontSize },
{ key = "0", mods = "CTRL", action = act.ResetFontSize },
{ key = "0", mods = "SUPER", action = act.ResetFontSize },
{ key = "c", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") },
{ key = "c", mods = "SUPER", action = act.CopyTo("Clipboard") },
{ key = "v", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") },
{ key = "v", mods = "SUPER", action = act.PasteFrom("Clipboard") },
{ key = "f", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") },
{ key = "f", mods = "SUPER", action = act.Search("CurrentSelectionOrEmptyString") },
{ key = "l", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay },
{ key = "p", mods = "LEADER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "Activate" }) },
{ key = "P", mods = "LEADER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "SwapWithActive" }) },
{ key = "p", mods = "SUPER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "Activate" }) },
{ key = "P", mods = "SUPER", action = act.PaneSelect({ alphabet = "asdfghjkl;", mode = "SwapWithActive" }) },
{ key = "R", mods = "LEADER", action = act.ReloadConfiguration },
-- mostly OS defaults
{ key = "n", mods = "SHIFT|CTRL", action = act.SpawnWindow },
{ key = "n", mods = "SUPER", action = act.SpawnWindow },
{ key = "t", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") },
{ key = "t", mods = "SUPER", action = act.SpawnTab("CurrentPaneDomain") },
{ key = "w", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) },
{ key = "w", mods = "SUPER", action = act.CloseCurrentTab({ confirm = true }) },
{
key = "u",
mods = "SHIFT|CTRL",
action = act.CharSelect({
copy_on_select = true,
copy_to = "ClipboardAndPrimarySelection",
}),
},
},
-- }}}
-- font
font = font.font,
font_size = font.size,
use_fancy_tab_bar = false,
tab_bar_at_bottom = true,
tab_max_width = 32,
-- window
window_decorations = "RESIZE",
window_background_opacity = 0.95,
window_padding = {
left = 0,
right = 0,
top = 0,
bottom = 0,
},
inactive_pane_hsb = {
saturation = 1.0,
brightness = 0.8,
},
-- don't attempt to resize the window (tiling wm)
adjust_window_size_when_changing_font_size = false,
-- theme
color_schemes = {
["OLEDppuccin"] = custom,
},
color_scheme = scheme_for_appearance(wezterm.gui.get_appearance()),
-- nightly only
clean_exit_codes = { 130 },
-- bell
audible_bell = "Disabled",
-- biggest mistake
max_fps = 240,
-- scrollbar, currently hidden by default, but better make sure
enable_scroll_bar = false,
hide_tab_bar_if_only_one_tab = false,
} }