117 lines
2.7 KiB
Lua
117 lines
2.7 KiB
Lua
local wezterm = require("wezterm")
|
|
local act = wezterm.action
|
|
|
|
return {
|
|
leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1002 },
|
|
|
|
keys = {
|
|
{
|
|
key = "w",
|
|
mods = "CMD",
|
|
action = act.CloseCurrentPane({ confirm = true }),
|
|
},
|
|
|
|
-- activate resize mode
|
|
{
|
|
key = "r",
|
|
mods = "LEADER",
|
|
action = act.ActivateKeyTable({
|
|
name = "resize_pane",
|
|
one_shot = false,
|
|
}),
|
|
},
|
|
|
|
-- focus panes
|
|
{
|
|
key = "k",
|
|
mods = "LEADER",
|
|
action = act.ActivatePaneDirection("Left"),
|
|
},
|
|
{
|
|
key = "i",
|
|
mods = "LEADER",
|
|
action = act.ActivatePaneDirection("Right"),
|
|
},
|
|
{
|
|
key = "e",
|
|
mods = "LEADER",
|
|
action = act.ActivatePaneDirection("Up"),
|
|
},
|
|
{
|
|
key = "n",
|
|
mods = "LEADER",
|
|
action = act.ActivatePaneDirection("Down"),
|
|
},
|
|
|
|
-- add new panes
|
|
{
|
|
key = "v",
|
|
mods = "LEADER",
|
|
action = act.SplitVertical({ domain = "CurrentPaneDomain" }),
|
|
},
|
|
{
|
|
key = "h",
|
|
mods = "LEADER",
|
|
action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }),
|
|
},
|
|
|
|
-- Rename current workspace
|
|
{
|
|
key = "$",
|
|
mods = "LEADER|SHIFT",
|
|
action = act.PromptInputLine({
|
|
description = "Enter new workspace name",
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
if line then
|
|
wezterm.mux.rename_workspace(wezterm.mux.get_active_workspace(), line)
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
|
|
-- Prompt for a name to use for a new workspace and switch to it.
|
|
{
|
|
key = "w",
|
|
mods = "LEADER|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(
|
|
act.SwitchToWorkspace({
|
|
name = line,
|
|
}),
|
|
pane
|
|
)
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
},
|
|
|
|
key_tables = {
|
|
resize_pane = {
|
|
{ key = "LeftArrow", action = act.AdjustPaneSize({ "Left", 5 }) },
|
|
{ key = "k", action = act.AdjustPaneSize({ "Left", 5 }) },
|
|
|
|
{ key = "RightArrow", action = act.AdjustPaneSize({ "Right", 5 }) },
|
|
{ key = "i", action = act.AdjustPaneSize({ "Right", 5 }) },
|
|
|
|
{ key = "UpArrow", action = act.AdjustPaneSize({ "Up", 2 }) },
|
|
{ key = "e", action = act.AdjustPaneSize({ "Up", 3 }) },
|
|
|
|
{ key = "DownArrow", action = act.AdjustPaneSize({ "Down", 2 }) },
|
|
{ key = "n", action = act.AdjustPaneSize({ "Down", 2 }) },
|
|
|
|
{ key = "Escape", action = "PopKeyTable" },
|
|
},
|
|
},
|
|
}
|