Dotfiles V.1.1.5
Updated Neovim Plugins as well as cleaned up aerospace config and sketbar config and added fastfetch config
This commit is contained in:
235
.config/wezterm/wezterm.lua
Normal file
235
.config/wezterm/wezterm.lua
Normal file
@@ -0,0 +1,235 @@
|
||||
-- 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
|
||||
Reference in New Issue
Block a user