Updated Neovim Plugins as well as cleaned up aerospace config and sketbar config and added fastfetch config
236 lines
5.2 KiB
Lua
236 lines
5.2 KiB
Lua
-- Pull in the wezterm API
|
|
local wezterm = require("wezterm")
|
|
|
|
-- This will hold the configuration.
|
|
local config = wezterm.config_builder()
|
|
|
|
-- Wezterm plugins
|
|
|
|
local sessionizer = require("plugins/sessionizer")
|
|
local tabline = require("plugins/tabline")
|
|
local smart_splits = require("plugins/smart_splits")
|
|
|
|
-- This will hold the actions
|
|
|
|
local actions = wezterm.action
|
|
|
|
-- TMUX config
|
|
|
|
-- Leader key like in TMUX
|
|
|
|
config.leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1000 }
|
|
|
|
-- unix socket to enable sessions
|
|
|
|
config.unix_domains = {
|
|
{
|
|
name = "unix",
|
|
},
|
|
}
|
|
|
|
-- general keybindings
|
|
|
|
config.keys = {
|
|
{
|
|
key = "p",
|
|
mods = "CTRL",
|
|
action = wezterm.action.ShowDebugOverlay,
|
|
},
|
|
{
|
|
-- sessionizer
|
|
key = "s",
|
|
mods = "LEADER|SHIFT",
|
|
action = actions.PromptInputLine({
|
|
description = wezterm.format({
|
|
{ Attribute = { Intensity = "Bold" } },
|
|
{ Foreground = { AnsiColor = "Fuchsia" } },
|
|
{ Text = "Enter name for new workspace" },
|
|
}),
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
if line then
|
|
window:perform_action(
|
|
actions.SwitchToWorkspace({
|
|
name = line,
|
|
}),
|
|
pane
|
|
)
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
{
|
|
-- Maximize Pane
|
|
key = "m",
|
|
mods = "LEADER",
|
|
action = actions.TogglePaneZoomState,
|
|
},
|
|
-- Split Panes
|
|
{
|
|
key = "-",
|
|
mods = "LEADER",
|
|
action = actions.SplitVertical,
|
|
},
|
|
{
|
|
key = "|",
|
|
mods = "LEADER",
|
|
action = actions.SplitHorizontal,
|
|
},
|
|
-- Rename Session or Tab
|
|
{
|
|
key = ",",
|
|
mods = "LEADER",
|
|
action = wezterm.action.PromptInputLine({
|
|
description = "Enter new workspace name",
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
if line and line ~= "" then
|
|
window:set_workspace(line)
|
|
wezterm.notify("Workspace renamed to: " .. line, "WezTerm", { urgency = "normal" })
|
|
else
|
|
wezterm.notify("Workspace rename cancelled", "WezTerm", { urgency = "normal" })
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
{
|
|
key = ".",
|
|
mods = "LEADER",
|
|
action = wezterm.action.PromptInputLine({
|
|
description = "Enter new tab title",
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
if line and line ~= "" then
|
|
pane:tab():set_title(line)
|
|
wezterm.notify("Tab renamed to: " .. line, "WezTerm", { urgency = "normal" })
|
|
else
|
|
wezterm.notify("Tab rename cancelled", "WezTerm", { urgency = "normal" })
|
|
end
|
|
end),
|
|
}),
|
|
},
|
|
-- Create and Kill Tab
|
|
{
|
|
key = "c",
|
|
mods = "LEADER",
|
|
action = actions.SpawnCommandInNewTab,
|
|
},
|
|
{
|
|
key = "x",
|
|
mods = "LEADER",
|
|
action = wezterm.action_callback(function(window, pane)
|
|
local tab = pane:tab()
|
|
if tab then
|
|
local pane_count = #tab:panes()
|
|
if pane_count > 1 then
|
|
window:perform_action(wezterm.action.CloseCurrentPane({ confirm = false }), pane)
|
|
else
|
|
window:perform_action(wezterm.action.CloseCurrentTab({ confirm = false }), pane)
|
|
end
|
|
else
|
|
wezterm.notify("No tab found, cannot close", "WezTerm", { urgency = "normal" })
|
|
end
|
|
end),
|
|
},
|
|
-- Move Tab to index
|
|
{
|
|
key = "/",
|
|
mods = "LEADER",
|
|
action = wezterm.action.PromptInputLine({
|
|
description = "Move Tab to Index",
|
|
action = wezterm.action_callback(function(window, pane, line)
|
|
if not line or line == "" then
|
|
wezterm.notify("Tab move cancelled", "WezTerm", { urgency = "normal" })
|
|
return
|
|
end
|
|
local index = tonumber(line)
|
|
if not index then
|
|
wezterm.notify("Invalid index: must be a number", "WezTerm", { urgency = "normal" })
|
|
return
|
|
end
|
|
-- Convert 1-based user input to 0-based index
|
|
index = index - 1
|
|
local tab_count = #window:mux_window():tabs()
|
|
if index < 0 or index >= tab_count then
|
|
wezterm.notify(
|
|
"Invalid index: must be between 1 and " .. tab_count,
|
|
"WezTerm",
|
|
{ urgency = "normal" }
|
|
)
|
|
return
|
|
end
|
|
window:perform_action(wezterm.action.MoveTab(index), pane)
|
|
wezterm.notify("Tab moved to index: " .. (index + 1), "WezTerm", { urgency = "normal" })
|
|
end),
|
|
}),
|
|
},
|
|
-- Move to next and previous Tab
|
|
{
|
|
key = "n",
|
|
mods = "LEADER",
|
|
action = actions.ActivateTabRelative(1),
|
|
},
|
|
{
|
|
key = "p",
|
|
mods = "LEADER",
|
|
action = actions.ActivateTabRelative(-1),
|
|
},
|
|
-- Vim Mode
|
|
{
|
|
key = "]",
|
|
mods = "LEADER",
|
|
action = actions.ActivateCopyMode,
|
|
},
|
|
}
|
|
|
|
-- Go to Tab with index
|
|
|
|
for i = 1, 8 do
|
|
-- LEADER + number to move to that position
|
|
table.insert(config.keys, {
|
|
key = tostring(i),
|
|
mods = "LEADER",
|
|
action = actions.ActivateTab(i - 1),
|
|
})
|
|
end
|
|
|
|
-- This causes `wezterm` to act as though it was started as
|
|
-- `wezterm connect unix` by default, connecting to the unix
|
|
-- domain on startup.
|
|
-- If you prefer to connect manually, leave out this line.
|
|
config.default_gui_startup_args = { "connect", "unix" }
|
|
|
|
-- Tabline plugin
|
|
|
|
tabline.apply_to_config(config)
|
|
|
|
-- Append keys from plugins
|
|
|
|
for _, key in ipairs(sessionizer.keys) do
|
|
table.insert(config.keys, key)
|
|
end
|
|
|
|
for _, key in ipairs(smart_splits.keys) do
|
|
table.insert(config.keys, key)
|
|
end
|
|
|
|
-- Font Config
|
|
|
|
config.font = wezterm.font({
|
|
family = "JetBrainsMono Nerd Font",
|
|
assume_emoji_presentation = false,
|
|
})
|
|
config.font_size = 13
|
|
|
|
-- Color Scheme
|
|
|
|
config.color_scheme = "Catppuccin Macchiato"
|
|
|
|
-- Window Config
|
|
|
|
config.window_decorations = "RESIZE"
|
|
config.use_fancy_tab_bar = false
|
|
|
|
--Key Config
|
|
|
|
config.send_composed_key_when_left_alt_is_pressed = true
|
|
|
|
return config
|