606 lines
19 KiB
Lua
606 lines
19 KiB
Lua
-- Pull in the wezterm API
|
|
local wezterm = require("wezterm")
|
|
local act = wezterm.action
|
|
|
|
-- Pull custom modules
|
|
local theme = require("theme-switcher")
|
|
-- local gpu_adapters = require("gpu-adapter")
|
|
local sessionizer = require("plugins.sessionizer")
|
|
local workspace = require("workspace")
|
|
|
|
local config = {}
|
|
|
|
-- This will hold the configuration.
|
|
if wezterm.config_builder then
|
|
config = wezterm.config_builder()
|
|
end
|
|
|
|
-- config.debug_key_events = true
|
|
|
|
-- Check the platform and configure settings accordingly
|
|
if wezterm.target_triple == "x86_64-pc-windows-msvc" then
|
|
config.default_prog = { "wsl.exe", "~", "-d", "Ubuntu-20.04" }
|
|
elseif wezterm.target_triple == "x86_64-apple-darwin" or wezterm.target_triple == "aarch64-apple-darwin" then
|
|
config.default_prog = { "/bin/zsh", "-l" }
|
|
config.font = wezterm.font_with_fallback({
|
|
{ family = "Fira Code", scale = 1.0 },
|
|
{ family = "MesloLGS NF", scale = 1.0 },
|
|
{ family = "Menlo", scale = 1.0 },
|
|
})
|
|
elseif wezterm.target_triple == "x86_64-unknown-linux-gnu" then
|
|
config.default_prog = { "/bin/bash" }
|
|
config.font = wezterm.font_with_fallback({
|
|
{ family = "Fira Code", scale = 1.0 },
|
|
{ family = "MesloLGS NF", scale = 1.0 },
|
|
{ family = "Ubuntu Mono", scale = 1.0 },
|
|
})
|
|
end
|
|
|
|
config.check_for_updates = true
|
|
config.use_ime = true
|
|
config.use_dead_keys = false
|
|
config.front_end = "WebGpu"
|
|
config.term = "xterm-256color"
|
|
config.line_height = 1.1
|
|
|
|
config.disable_default_key_bindings = false
|
|
|
|
config.animation_fps = 240
|
|
config.max_fps = 240
|
|
config.webgpu_power_preference = "HighPerformance"
|
|
-- config.webgpu_preferred_adapter = gpu_adapters:pick_best()
|
|
|
|
-- Change color scheme
|
|
theme.apply_to_config(config)
|
|
|
|
config.window_padding = {
|
|
left = 5,
|
|
right = 10,
|
|
top = 5,
|
|
bottom = 5,
|
|
}
|
|
|
|
config.inactive_pane_hsb = {
|
|
saturation = 0.9,
|
|
brightness = 0.7,
|
|
}
|
|
|
|
-- Activate if you need to debug spawn commands
|
|
-- config.exit_behavior = "Hold"
|
|
|
|
config.initial_rows = 50
|
|
config.initial_cols = 140
|
|
|
|
config.enable_scroll_bar = false
|
|
config.scrollback_lines = 3000
|
|
|
|
config.adjust_window_size_when_changing_font_size = false
|
|
config.window_decorations = "RESIZE | MACOS_FORCE_DISABLE_SHADOW"
|
|
config.enable_tab_bar = false
|
|
|
|
if config.enable_tab_bar then
|
|
config.use_fancy_tab_bar = false
|
|
config.tab_max_width = 25
|
|
config.show_new_tab_button_in_tab_bar = false
|
|
config.window_frame = {
|
|
font = wezterm.font({ family = "Meslo NF", weight = "Regular" }),
|
|
}
|
|
end
|
|
|
|
config.switch_to_last_active_tab_when_closing_tab = true
|
|
config.window_close_confirmation = "AlwaysPrompt"
|
|
|
|
config.audible_bell = "Disabled"
|
|
|
|
config.hyperlink_rules = {
|
|
-- Matches: a URL in parens: (URL)
|
|
{
|
|
regex = "\\((\\w+://\\S+)\\)",
|
|
format = "$1",
|
|
highlight = 1,
|
|
},
|
|
-- Matches: a URL in brackets: [URL]
|
|
{
|
|
regex = "\\[(\\w+://\\S+)\\]",
|
|
format = "$1",
|
|
highlight = 1,
|
|
},
|
|
-- Matches: a URL in curly braces: {URL}
|
|
{
|
|
regex = "\\{(\\w+://\\S+)\\}",
|
|
format = "$1",
|
|
highlight = 1,
|
|
},
|
|
-- Matches: a URL in angle brackets: <URL>
|
|
{
|
|
regex = "<(\\w+://\\S+)>",
|
|
format = "$1",
|
|
highlight = 1,
|
|
},
|
|
-- Then handle URLs not wrapped in brackets
|
|
{
|
|
regex = "[^(]\\b(\\w+://\\S+[)/a-zA-Z0-9-]+)",
|
|
format = "$1",
|
|
highlight = 1,
|
|
},
|
|
-- implicit mailto link
|
|
{
|
|
regex = "\\b\\w+@[\\w-]+(\\.[\\w-]+)+\\b",
|
|
format = "mailto:$0",
|
|
},
|
|
}
|
|
|
|
config.set_environment_variables = {
|
|
PATH = wezterm.home_dir .. "/.local/bin/scripts:" .. "/opt/homebrew/bin:" .. "/usr/local/bin:" .. os.getenv("PATH"),
|
|
}
|
|
|
|
config.leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1000 }
|
|
|
|
local keys = {
|
|
{ key = "LeftArrow", mods = "OPT", action = act.SendString("\x1bb") },
|
|
{ key = "RightArrow", mods = "OPT", action = act.SendString("\x1bw") },
|
|
|
|
-- The physical CMD key on OSX is the Alt key on Win/*nix, so map the common Alt-combo commands.
|
|
{ key = ".", mods = "CMD", action = act.SendString("\x1b.") },
|
|
{ key = "p", mods = "CMD", action = act.SendString("\x1bp") },
|
|
{ key = "n", mods = "CMD", action = act.SendString("\x1bn") },
|
|
{ key = "b", mods = "CMD", action = act.SendString("\x1bb") },
|
|
{ key = "f", mods = "CMD", action = act.SendString("\x1bf") },
|
|
|
|
-- Window management
|
|
{ key = "a", mods = "LEADER", action = act({ SendString = "`" }) },
|
|
{ key = "v", mods = "LEADER", action = act({ SplitVertical = { domain = "CurrentPaneDomain" } }) },
|
|
{ key = "b", mods = "LEADER", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) },
|
|
{ key = "z", mods = "LEADER", action = "TogglePaneZoomState" },
|
|
{ key = "c", mods = "LEADER", action = act({ SpawnTab = "CurrentPaneDomain" }) },
|
|
{ key = "n", mods = "LEADER", action = act({ ActivateTabRelative = 1 }) },
|
|
{ key = "p", mods = "LEADER", action = act({ ActivateTabRelative = -1 }) },
|
|
|
|
{ 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") },
|
|
|
|
{ key = "H", mods = "LEADER", action = act({ AdjustPaneSize = { "Left", 5 } }) },
|
|
{ key = "J", mods = "LEADER", action = act({ AdjustPaneSize = { "Down", 5 } }) },
|
|
{ key = "K", mods = "LEADER", action = act({ AdjustPaneSize = { "Up", 5 } }) },
|
|
{ key = "L", mods = "LEADER", action = act({ AdjustPaneSize = { "Right", 5 } }) },
|
|
|
|
{ key = "`", mods = "LEADER", action = act.ActivateLastTab },
|
|
{ key = " ", mods = "LEADER", action = act.ActivateTabRelative(1) },
|
|
{ key = "x", mods = "LEADER", action = act({ CloseCurrentPane = { confirm = true } }) },
|
|
|
|
{
|
|
key = "]",
|
|
mods = "LEADER",
|
|
action = act.SpawnCommandInNewTab({
|
|
args = { config.default_prog[1], "-c", "scripts/wzp" },
|
|
}),
|
|
},
|
|
|
|
{
|
|
key = "o",
|
|
mods = "LEADER",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
local editor = os.getenv("EDITOR") or "vi"
|
|
window:perform_action(wezterm.action.SendString(editor .. " ."), pane)
|
|
end),
|
|
},
|
|
|
|
{
|
|
key = "m",
|
|
mods = "LEADER",
|
|
action = act.SpawnCommandInNewTab({
|
|
args = { config.default_prog[1], "-c", "notetaker" },
|
|
}),
|
|
},
|
|
|
|
{
|
|
key = "m",
|
|
mods = "LEADER|SHIFT",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
window.perform_action(wezterm.action.SendString("most_recent_note"), pane)
|
|
end),
|
|
},
|
|
|
|
-- {
|
|
-- key = "j",
|
|
-- mods = "LEADER",
|
|
-- action = wezterm.action_callback(function(window, pane)
|
|
-- -- Get a list of tab titles
|
|
-- local tabs = window:tabs_with_info()
|
|
-- local tab_titles = {}
|
|
-- for _, tab in ipairs(tabs) do
|
|
-- table.insert(tab_titles, tab.index .. ": " .. tab.active_pane.title)
|
|
-- end
|
|
--
|
|
-- -- Join the tab titles with newlines
|
|
-- local tab_list = table.concat(tab_titles, "\n")
|
|
--
|
|
-- -- Run fzf on the tab list
|
|
-- local result = wezterm.run_child_process({
|
|
-- "sh", "-c", "echo -e '" .. tab_list .. "' | fzf --reverse"
|
|
-- })
|
|
--
|
|
-- -- Extract the selected tab index
|
|
-- if result.exit_status == 0 then
|
|
-- local selected_tab = tonumber(result.stdout:match("^(%d+):"))
|
|
-- if selected_tab then
|
|
-- window:perform_action(wezterm.action { ActivateTab = selected_tab - 1 }, pane)
|
|
-- end
|
|
-- end
|
|
-- end),
|
|
-- },
|
|
|
|
--open wezterm config quickly
|
|
-- {
|
|
-- key = ",",
|
|
-- mods = "LEADER",
|
|
-- action = wezterm.action.SpawnCommandInNewTab({
|
|
-- set_environment_variables = {
|
|
-- TERM = "screen-256color",
|
|
-- },
|
|
-- args = {
|
|
-- config.default_prog[1],
|
|
-- "-c",
|
|
-- os.getenv("EDITOR") or "vim",
|
|
-- os.getenv("~") .. "/.config/wezterm/.wezterm.lua",
|
|
-- },
|
|
-- }),
|
|
-- },
|
|
|
|
{
|
|
key = "r",
|
|
mods = "LEADER",
|
|
action = act.ReloadConfiguration,
|
|
},
|
|
|
|
-- Swich to default workspace
|
|
{
|
|
key = "y",
|
|
mods = "CTRL | SHIFT",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
wezterm.log_info("Switching to default workspace")
|
|
workspace.switch_workspace(window, pane, { name = "default" })
|
|
end),
|
|
},
|
|
|
|
-- Switch to previous workspace
|
|
{
|
|
key = "u",
|
|
mods = "CTRL | SHIFT",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
workspace.switch_to_previous_workspace(window, pane)
|
|
end),
|
|
},
|
|
|
|
{
|
|
key = "w",
|
|
mods = "CMD",
|
|
action = wezterm.action.CloseCurrentTab({ confirm = true }),
|
|
},
|
|
|
|
--Switch to monitoring workspace
|
|
{
|
|
key = ".",
|
|
mods = "CTRL | SHIFT",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
workspace.switch_workspace(window, pane, {
|
|
name = "monitoring",
|
|
spawn = {
|
|
args = { "btm" },
|
|
},
|
|
})
|
|
end),
|
|
},
|
|
|
|
-- Create a new workspace with a randomm name and switch to it
|
|
{
|
|
key = "i",
|
|
mods = "CTRL | SHIFT",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
workspace.switch_workspace(window, pane)
|
|
end),
|
|
},
|
|
|
|
-- Rename workspaces
|
|
{
|
|
key = "r",
|
|
mods = "CTRL|SHIFT",
|
|
action = act.PromptInputLine({
|
|
description = wezterm.format({
|
|
{ Attribute = { Intensity = "Bold" } },
|
|
{ Foreground = { AnsiColor = "Fuchsia" } },
|
|
{ Text = "Enter name for new workspace" },
|
|
}),
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
-- line will be `nil` if they hit escape without entering anything
|
|
-- An empty string if they just hit enter
|
|
-- Or the actual line of text they wrote
|
|
if line then
|
|
window:perform_action(
|
|
workspace.switch_workspace({
|
|
name = line,
|
|
}),
|
|
pane
|
|
)
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
|
|
-- Trigger QuickSelect for path-based file opening
|
|
{
|
|
key = "O",
|
|
mods = "CTRL|SHIFT",
|
|
action = wezterm.action.QuickSelectArgs({
|
|
label = "Open file",
|
|
patterns = {
|
|
[[/[\w./-]+]], -- Absolute paths
|
|
[[\./[\w./-]+]], -- Relative paths
|
|
},
|
|
action = wezterm.action_callback(function(window, pane)
|
|
local selection = window:get_selection_text_for_pane(pane)
|
|
if selection and #selection > 0 then
|
|
-- Check if the file exists
|
|
local success = wezterm.run_child_process({
|
|
"sh",
|
|
"-c",
|
|
"test -e '" .. selection .. "'",
|
|
}) == nil
|
|
|
|
if success then
|
|
-- Open with terminal editor in a new workspace
|
|
window:perform_action(
|
|
wezterm.action.SpawnWindow({
|
|
workspace = "file:" .. selection, -- Workspace named after the file
|
|
args = { "nvim", selection }, -- Change to "vim" or "nano" if preferred
|
|
}),
|
|
pane
|
|
)
|
|
else
|
|
-- Fallback to opening with the default app
|
|
wezterm.log_info("Opening with default app: " .. selection)
|
|
wezterm.open_with(selection)
|
|
end
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
|
|
--Show launcher in fuzzy selecton mode
|
|
{
|
|
key = "s",
|
|
mods = "CTRL | SHIFT",
|
|
action = act.ShowLauncherArgs({
|
|
flags = "FUZZY|WORKSPACES",
|
|
}),
|
|
},
|
|
|
|
{ key = "w", mods = "LEADER", action = act.ShowTabNavigator },
|
|
|
|
-- Activate Copy Mode
|
|
{ key = "[", mods = "LEADER", action = act.ActivateCopyMode },
|
|
-- Paste from Copy Mode
|
|
{ key = "y", mods = "LEADER", action = act.PasteFrom("PrimarySelection") },
|
|
}
|
|
|
|
local key_tables = {
|
|
copy_mode = {
|
|
{ key = "c", mods = "CTRL", action = act.CopyMode("Close") },
|
|
{ key = "q", mods = "NONE", action = act.CopyMode("Close") },
|
|
{ key = "Escape", mods = "NONE", action = act.CopyMode("Close") },
|
|
|
|
{ key = "h", mods = "NONE", action = act.CopyMode("MoveLeft") },
|
|
{ key = "j", mods = "NONE", action = act.CopyMode("MoveDown") },
|
|
{ key = "k", mods = "NONE", action = act.CopyMode("MoveUp") },
|
|
{ key = "l", mods = "NONE", action = act.CopyMode("MoveRight") },
|
|
|
|
{ key = "LeftArrow", mods = "NONE", action = act.CopyMode("MoveLeft") },
|
|
{ key = "DownArrow", mods = "NONE", action = act.CopyMode("MoveDown") },
|
|
{ key = "UpArrow", mods = "NONE", action = act.CopyMode("MoveUp") },
|
|
{ key = "RightArrow", mods = "NONE", action = act.CopyMode("MoveRight") },
|
|
|
|
{ key = "RightArrow", mods = "ALT", action = act.CopyMode("MoveForwardWord") },
|
|
{ key = "f", mods = "ALT", action = act.CopyMode("MoveForwardWord") },
|
|
{ key = "Tab", mods = "NONE", action = act.CopyMode("MoveForwardWord") },
|
|
|
|
{ key = "LeftArrow", mods = "ALT", action = act.CopyMode("MoveBackwardWord") },
|
|
{ key = "b", mods = "ALT", action = act.CopyMode("MoveBackwardWord") },
|
|
{ key = "Tab", mods = "SHIFT", action = act.CopyMode("MoveBackwardWord") },
|
|
|
|
{ key = "0", mods = "NONE", action = act.CopyMode("MoveToStartOfLine") },
|
|
{ key = "Enter", mods = "NONE", action = act.CopyMode("MoveToStartOfNextLine") },
|
|
|
|
{ key = "$", mods = "NONE", action = act.CopyMode("MoveToEndOfLineContent") },
|
|
{ key = "$", mods = "SHIFT", action = act.CopyMode("MoveToEndOfLineContent") },
|
|
{ key = "^", mods = "NONE", action = act.CopyMode("MoveToStartOfLineContent") },
|
|
{ key = "^", mods = "SHIFT", action = act.CopyMode("MoveToStartOfLineContent") },
|
|
|
|
{ key = "v", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Cell" }) },
|
|
{ key = "V", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Line" }) },
|
|
{ key = "V", mods = "SHIFT", action = act.CopyMode({ SetSelectionMode = "Line" }) },
|
|
{ key = "v", mods = "CTRL", action = act.CopyMode({ SetSelectionMode = "Block" }) },
|
|
|
|
{ key = "G", mods = "NONE", action = act.CopyMode("MoveToScrollbackBottom") },
|
|
{ key = "G", mods = "SHIFT", action = act.CopyMode("MoveToScrollbackBottom") },
|
|
{ key = "g", mods = "NONE", action = act.CopyMode("MoveToScrollbackTop") },
|
|
|
|
{ key = "H", mods = "NONE", action = act.CopyMode("MoveToViewportTop") },
|
|
{ key = "H", mods = "SHIFT", action = act.CopyMode("MoveToViewportTop") },
|
|
{ key = "M", mods = "NONE", action = act.CopyMode("MoveToViewportMiddle") },
|
|
{ key = "M", mods = "SHIFT", action = act.CopyMode("MoveToViewportMiddle") },
|
|
{ key = "L", mods = "NONE", action = act.CopyMode("MoveToViewportBottom") },
|
|
{ key = "L", mods = "SHIFT", action = act.CopyMode("MoveToViewportBottom") },
|
|
|
|
{ key = "o", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEnd") },
|
|
{ key = "O", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEndHoriz") },
|
|
{ key = "O", mods = "SHIFT", action = act.CopyMode("MoveToSelectionOtherEndHoriz") },
|
|
|
|
{ key = "PageUp", mods = "NONE", action = act.CopyMode("PageUp") },
|
|
{ key = "PageDown", mods = "NONE", action = act.CopyMode("PageDown") },
|
|
|
|
{ key = "b", mods = "CTRL", action = act.CopyMode("PageUp") },
|
|
{ key = "f", mods = "CTRL", action = act.CopyMode("PageDown") },
|
|
|
|
-- Enter y to copy and quit the copy mode.
|
|
{
|
|
key = "y",
|
|
mods = "NONE",
|
|
action = act.Multiple({
|
|
act.CopyTo("ClipboardAndPrimarySelection"),
|
|
act.CopyMode("Close"),
|
|
}),
|
|
},
|
|
|
|
-- Enter search mode to edit the pattern.
|
|
-- When the search pattern is an empty string the existing pattern is preserved
|
|
{ key = "/", mods = "NONE", action = act({ Search = { CaseSensitiveString = "" } }) },
|
|
{ key = "?", mods = "NONE", action = act({ Search = { CaseInSensitiveString = "" } }) },
|
|
{ key = "n", mods = "CTRL", action = act({ CopyMode = "NextMatch" }) },
|
|
{ key = "p", mods = "CTRL", action = act({ CopyMode = "PriorMatch" }) },
|
|
},
|
|
|
|
search_mode = {
|
|
{ key = "Escape", mods = "NONE", action = act({ CopyMode = "Close" }) },
|
|
-- Go back to copy mode when pressing enter, so that we can use unmodified keys like "n"
|
|
-- to navigate search results without conflicting with typing into the search area.
|
|
{ key = "Enter", mods = "NONE", action = "ActivateCopyMode" },
|
|
{ key = "c", mods = "CTRL", action = "ActivateCopyMode" },
|
|
{ key = "n", mods = "CTRL", action = act({ CopyMode = "NextMatch" }) },
|
|
{ key = "p", mods = "CTRL", action = act({ CopyMode = "PriorMatch" }) },
|
|
{ key = "r", mods = "CTRL", action = act.CopyMode("CycleMatchType") },
|
|
{ key = "u", mods = "CTRL", action = act.CopyMode("ClearPattern") },
|
|
{
|
|
key = "PageUp",
|
|
mods = "NONE",
|
|
action = act.CopyMode("PriorMatchPage"),
|
|
},
|
|
{
|
|
key = "PageDown",
|
|
mods = "NONE",
|
|
action = act.CopyMode("NextMatchPage"),
|
|
},
|
|
{ key = "UpArrow", mods = "NONE", action = act.CopyMode("PriorMatch") },
|
|
{ key = "DownArrow", mods = "NONE", action = act.CopyMode("NextMatch") },
|
|
},
|
|
}
|
|
|
|
-- -- move prompt to the bottom
|
|
-- local function move_prompt_to_bottom()
|
|
-- os.execute("tput cup $LINES")
|
|
-- end
|
|
|
|
config.keys = keys
|
|
config.key_tables = key_tables
|
|
|
|
local user_config = {
|
|
projects = {
|
|
{ path = wezterm.home_dir .. "/.dotfiles" },
|
|
{ path = wezterm.home_dir .. "/Documents" },
|
|
{ path = wezterm.home_dir .. "/Library/CloudStorage/GoogleDrive-*.com/My Drive" },
|
|
},
|
|
key = "f",
|
|
mods = "LEADER",
|
|
add_to_launch_menu = false,
|
|
warmup = false,
|
|
warmup_delay_ms = 150,
|
|
}
|
|
|
|
sessionizer.apply_to_config(config, user_config)
|
|
|
|
-- wezterm.on("window-config-reload", function()
|
|
-- -- Set up the meeting notifier to check every 60 seconds
|
|
-- -- meeting_notifier.setup_update_timer(15)
|
|
-- meeting_notifier.test_meeting_notifier()
|
|
-- end)
|
|
|
|
wezterm.on("mux-is-process-stateful", function(_)
|
|
return nil
|
|
end)
|
|
|
|
-- wezterm.on("update-right-status", function(window, pane)
|
|
-- local ssh_domain = pane:get_user_vars().SSH_CONNECTION or ""
|
|
--
|
|
-- -- Check if '.prod' is in the SSH connection string
|
|
-- if ssh_domain:find("%.prod") then
|
|
-- -- Default to Solarized Light Red
|
|
-- local fallback_red_color = "#dc322f"
|
|
-- local overrides = window:get_config_overrides() or {}
|
|
--
|
|
-- -- Attempt to get the red color from the current color scheme
|
|
-- local red_color = fallback_red_color
|
|
-- if overrides.color_scheme and overrides.color_scheme.red then
|
|
-- red_color = overrides.color_scheme.red
|
|
-- end
|
|
--
|
|
-- -- Set the production-specific overrides
|
|
-- window:set_config_overrides({
|
|
-- colors = {
|
|
-- background = red_color, -- Use theme-appropriate red or fallback
|
|
-- },
|
|
-- })
|
|
--
|
|
-- -- Set a clear label in the terminal
|
|
-- window:set_right_status(wezterm.format({
|
|
-- { Text = "🚨 PRODUCTION SERVER 🚨", Foreground = "white", Background = red_color, Bold = true },
|
|
-- }))
|
|
-- else
|
|
-- -- Reset to default background and clear status for non-prod
|
|
-- window:set_config_overrides(nil)
|
|
-- window:set_right_status("")
|
|
-- end
|
|
-- end)
|
|
|
|
wezterm.on("user-var-changed", function(window, pane, name, value)
|
|
local overrides = window:get_config_overrides() or {}
|
|
if name == "ZEN_MODE" then
|
|
local incremental = value:find("+")
|
|
local number_value = tonumber(value)
|
|
if incremental ~= nil then
|
|
while number_value > 0 do
|
|
window:perform_action(wezterm.action.IncreaseFontSize, pane)
|
|
number_value = number_value - 1
|
|
end
|
|
overrides.enable_tab_bar = false
|
|
elseif number_value < 0 then
|
|
window:perform_action(wezterm.action.ResetFontSize, pane)
|
|
overrides.font_size = nil
|
|
else
|
|
overrides.font_size = number_value
|
|
end
|
|
end
|
|
window:set_config_overrides(overrides)
|
|
end)
|
|
|
|
-- wezterm.on("format-tab-title", function(tab)
|
|
-- local pane = tab.active_pane
|
|
-- local title = pane.title
|
|
--
|
|
-- if pane.domain_name ~= "local" then
|
|
-- title = title .. " - (" .. pane.current_working_dir .. ")"
|
|
-- end
|
|
--
|
|
-- return title
|
|
-- end)
|
|
|
|
-- wezterm.on("update-right-status", function(window)
|
|
-- local stat = window:active_workspace()
|
|
--
|
|
-- if window:active_key_table() then
|
|
-- stat = window:active_key_table()
|
|
-- end
|
|
-- if window:leader_is_active() then
|
|
-- stat = "L"
|
|
-- end
|
|
--
|
|
-- local date = wezterm.strftime("%a %b %-d %H:%M")
|
|
--
|
|
-- window:set_right_status(wezterm.format({
|
|
-- { Text = stat },
|
|
-- { Text = " | " },
|
|
-- { Text = date },
|
|
-- }))
|
|
-- end)
|
|
|
|
return config
|