.dotfiles/configs/wezterm/wezterm.lua

147 lines
5.0 KiB
Lua
Raw Normal View History

2022-10-24 15:24:37 +02:00
local wezterm = require 'wezterm'
local act = wezterm.action
2022-08-23 14:58:15 +02:00
2022-10-24 15:24:37 +02:00
local default_prog
local default_cwd
local font_size
local tab_font_size
local initial_rows
local inital_cols
2022-09-02 16:15:54 +02:00
2022-10-24 15:24:37 +02:00
if string.find(wezterm.target_triple, "windows") then
default_prog = { "wsl.exe" };
default_cwd = os.getenv("HOME");
tab_font_size = 9.0;
font_size = 10.7;
initial_rows = 43;
initial_cols = 180;
end
if string.find(wezterm.target_triple, "darwin") then
tab_font_size = 15.0;
font_size = 16;
initial_rows = 38;
initial_cols = 120;
end
local keys = {
-- Keyboard Navigation
--- delete words backwards
{ key = "Backspace", mods = "CTRL", action = { SendKey = { key = "U", mods = "CTRL" } } },
{ key = "Backspace", mods = "CMD", action = { SendKey = { key = "U", mods = "CTRL" } } },
{ key = "Backspace", mods = "ALT", action = { SendKey = { key = "W", mods = "CTRL" } } },
--- home and end
{ key = "LeftArrow", mods = "CTRL", action = { SendKey = { key = "Home" } } },
{ key = "LeftArrow", mods = "CMD", action = { SendKey = { key = "Home" } } },
{ key = "RightArrow", mods = "CTRL", action = { SendKey = { key = "End" } } },
{ key = "RightArrow", mods = "CMD", action = { SendKey = { key = "End" } } },
--- move one word
{ key = "LeftArrow", mods = "ALT", action = { SendKey = { key = "LeftArrow", mods = "CTRL" } } },
{ key = "RightArrow", mods = "ALT", action = { SendKey = { key = "RightArrow", mods = "CTRL" } } },
--- ctrl + jk keyboard navigation
{ key = "k", mods = "ALT", action = { SendKey = { key = "UpArrow" } } },
{ key = "k", mods = "CMD", action = { SendKey = { key = "UpArrow" } } },
{ key = "j", mods = "ALT", action = { SendKey = { key = "DownArrow" } } },
{ key = "j", mods = "CMD", action = { SendKey = { key = "DownArrow" } } },
--- accept completion on ctrl|alt|cmd + .
{ key = ".", mods = "CTRL", action = { SendKey = { key = "RightArrow" } } },
{ key = ".", mods = "ALT", action = { SendKey = { key = "RightArrow" } } },
{ key = ".", mods = "CMD", action = { SendKey = { key = "RightArrow" } } },
-- Fullscreen
{ key = "Enter", mods = "CTRL", action = "ToggleFullScreen" },
{ key = "Enter", mods = "CMD", action = "ToggleFullScreen" },
{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
-- Clear Screen
{ key = "l", mods = "CMD", action = { SendKey = { key = "l", mods = "CTRL" } } },
{ key = "l", mods = "ALT", action = { SendKey = { key = "l", mods = "CTRL" } } },
{ key = "k", mods = "CMD", action = { SendKey = { key = "l", mods = "CTRL" } } },
-- Copy/Paste
{ key = "c", mods = "ALT", action = "Copy" },
{ key = "c", mods = "CMD", action = "Copy" },
{ key = "v", mods = "ALT", action = "Paste" },
{ key = "v", mods = "CMD", action = "Paste" },
-- Open New Window
{ key = "t", mods = "CMD", action = { SpawnTab = "CurrentPaneDomain" } },
{ key = "t", mods = "ALT", action = { SpawnTab = "CurrentPaneDomain" } },
{ key = "n", mods = "CMD", action = "SpawnWindow" },
{ key = "n", mods = "ALT", action = "SpawnWindow" },
{ key = "w", mods = "ALT", action = { EmitEvent = "CloseCurrentTab" } },
{ key = "w", mods = "CMD", action = { EmitEvent = "CloseCurrentTab" } },
-- Open the config
{ key = ",", mods = "ALT", action = { SendString = "vim ~/.config/wezterm/wezterm.lua\r\n" } },
{ key = ",", mods = "CMD", action = { SendString = "vim ~/.config/wezterm/wezterm.lua\r\n" } },
};
-- ALT-Tab
for i = 1, 9 do
table.insert(keys, { key = tostring(i), mods = "ALT", action = wezterm.action { ActivateTab = i - 1 } })
table.insert(keys, { key = tostring(i), mods = "CTRL", action = wezterm.action { ActivateTab = i - 1 } });
end
-- Delegate close confirmation to some apps such as VIM, etc.
wezterm.on("CloseCurrentTab", function(window, pane)
function is_vim()
local current_process = pane:get_title():upper()
return current_process:sub(- #"NVIM") == "NVIM" or current_process:sub(1, #"NVIM") == "NVIM" or
current_process:sub(- #"VIM") == "VIM" or current_process:sub(1, #"VIM") == "VIM" or
current_process:sub(- #"VI") == "VI" or current_process:sub(1, #"VI") == "VI"
end
if is_vim() then
window:perform_action(wezterm.action {
SendKey = { key = "Z", mods = "CTRL" }
}, pane)
2022-10-06 21:14:32 +02:00
else
2022-10-24 15:24:37 +02:00
window:perform_action(wezterm.action {
CloseCurrentTab = { confirm = false }
}, pane)
2022-10-06 21:14:32 +02:00
end
2022-10-24 15:24:37 +02:00
end)
-- Colors
local colors = {
-- Tab Bar Ayu Mirage
}
local color_schemes = {
["Ayu"] = {
background = "#0f1419",
}
};
2022-10-06 21:14:32 +02:00
2022-08-23 14:58:15 +02:00
return {
2022-10-24 15:24:37 +02:00
-- General
default_prog = default_prog,
default_cwd = default_cwd,
exit_behavior = "Close",
-- Key Bindings
keys = keys,
-- Window
initial_rows = initial_rows,
initial_cols = initial_cols,
window_padding = { left = 1, right = 1, top = 0, bottom = 0 },
-- Appearance and Colors
color_scheme = "Ayu",
colors = colors,
color_schemes = color_schemes,
window_decorations = "RESIZE",
default_cursor_style = "SteadyBlock",
audible_bell = "Disabled",
font_size = font_size,
harfbuzz_features = { "calt=0", "clig=0", "liga=0" },
window_frame = { font_size = tab_font_size, }
2022-08-23 14:58:15 +02:00
}
2022-10-24 15:24:37 +02:00