add wezterm config
- Id
- 5f2ea89f6d480aa0b89b3c6f2483aecfb9633729
- Author
- Caio
- Commit time
- 2023-06-26T16:28:29+02:00
Created config/wezterm/keys.lua
+local wezterm = require 'wezterm'
+local act = wezterm.action
+
+local mod = {}
+
+function mod.setup(config)
+ config.disable_default_key_bindings = true
+
+ config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
+
+ config.keys = {
+ { key = 'a', mods = 'LEADER|CTRL', action = wezterm.action.SendKey { key = 'a', mods = 'CTRL' }, },
+
+ { key = 'c', mods = 'LEADER', action = act.SpawnTab 'CurrentPaneDomain' },
+ { key = 'K', mods = 'LEADER', action = act.CloseCurrentTab{ confirm = true } },
+ { key = ',', mods = 'LEADER', action = act.PromptInputLine {
+ description = 'Enter new tab name',
+ action = wezterm.action_callback(function(window, pane, line)
+ if line then
+ window:active_tab():set_title(line)
+ end
+ end),
+ }},
+
+ { key = 'a', mods = 'LEADER', action = act.ActivateLastTab },
+ { key = 'n', mods = 'LEADER', action = act.ActivateTabRelative(1) },
+ { key = 'p', mods = 'LEADER', action = act.ActivateTabRelative(-1) },
+ { key = '1', mods = 'LEADER', action = act.ActivateTab(0) },
+ { key = '2', mods = 'LEADER', action = act.ActivateTab(1) },
+ { key = '3', mods = 'LEADER', action = act.ActivateTab(2) },
+ { key = '4', mods = 'LEADER', action = act.ActivateTab(3) },
+ { key = '5', mods = 'LEADER', action = act.ActivateTab(4) },
+ { key = '6', mods = 'LEADER', action = act.ActivateTab(5) },
+ { key = '7', mods = 'LEADER', action = act.ActivateTab(6) },
+ { key = '8', mods = 'LEADER', action = act.ActivateTab(7) },
+ { key = '9', mods = 'LEADER', action = act.ActivateTab(8) },
+
+ { key = '-', mods = 'LEADER', action = act.SplitVertical{ domain = 'CurrentPaneDomain' } },
+ { key = '\\', mods = 'LEADER', action = act.SplitHorizontal{ domain = 'CurrentPaneDomain' } },
+ { key = 'z', mods = 'LEADER', action = act.TogglePaneZoomState },
+
+ { key = ')', mods = 'SHIFT|CTRL', action = act.ResetFontSize },
+ { key = '+', mods = 'SHIFT|CTRL', action = act.IncreaseFontSize },
+ { key = '_', mods = 'SHIFT|CTRL', action = act.DecreaseFontSize },
+
+ { key = 'C', mods = 'SHIFT|CTRL', action = act.CopyTo 'Clipboard' },
+ { key = 'V', mods = 'SHIFT|CTRL', action = act.PasteFrom 'Clipboard' },
+ { key = 'Insert', mods = 'CTRL', action = act.CopyTo 'PrimarySelection' },
+ { key = 'Insert', mods = 'SHIFT', action = act.PasteFrom 'PrimarySelection' },
+
+ { key = 'N', mods = 'SHIFT|CTRL', action = act.SpawnWindow },
+ { key = 'L', mods = 'SHIFT|CTRL', action = act.ShowDebugOverlay },
+ { key = 'P', mods = 'SHIFT|CTRL', action = act.ActivateCommandPalette },
+ { key = 'R', mods = 'SHIFT|CTRL', action = act.ReloadConfiguration },
+
+ { key = '[', mods = 'LEADER', action = act.ActivateCopyMode },
+ { key = 'f', mods = 'LEADER', action = act.Search 'CurrentSelectionOrEmptyString' },
+ { key = 'phys:Space', mods = 'LEADER', action = act.QuickSelect },
+
+ { key = 'PageUp', mods = 'SHIFT', action = act.ScrollByPage(-1) },
+ { key = 'PageDown', mods = 'SHIFT', action = act.ScrollByPage(1) },
+
+ { key = 'h', mods = 'LEADER', action = act.ActivatePaneDirection 'Left' },
+ { key = 'l', mods = 'LEADER', action = act.ActivatePaneDirection 'Right' },
+ { key = 'k', mods = 'LEADER', action = act.ActivatePaneDirection 'Up' },
+ { key = 'j', mods = 'LEADER', action = act.ActivatePaneDirection 'Down' },
+
+ { key = 'H', mods = 'LEADER', action = act.AdjustPaneSize{ 'Left', 5 } },
+ { key = 'L', mods = 'LEADER', action = act.AdjustPaneSize{ 'Right', 5 } },
+ { key = 'K', mods = 'LEADER', action = act.AdjustPaneSize{ 'Up', 5 } },
+ { key = 'J', mods = 'LEADER', action = act.AdjustPaneSize{ 'Down', 5 } },
+ }
+
+ config.key_tables = {
+ copy_mode = {
+ { key = 'Enter', mods = 'NONE', action = act.CopyMode 'MoveToStartOfNextLine' },
+ { key = 'Escape', mods = 'NONE', action = act.CopyMode 'Close' },
+
+ { key = 'v', mods = 'NONE', action = act.CopyMode{ SetSelectionMode = 'Cell' } },
+ { key = 'v', mods = 'CTRL', action = act.CopyMode{ SetSelectionMode = 'Block' } },
+
+ { key = '$', mods = 'NONE', action = act.CopyMode 'MoveToEndOfLineContent' },
+ { key = '0', mods = 'NONE', action = act.CopyMode 'MoveToStartOfLine' },
+
+ { key = 'G', mods = 'NONE', action = act.CopyMode 'MoveToScrollbackBottom' },
+ { key = 'g', mods = 'NONE', action = act.CopyMode 'MoveToScrollbackTop' },
+
+ { key = 'V', mods = 'NONE', action = act.CopyMode{ SetSelectionMode = 'Line' } },
+ { key = 'b', mods = 'CTRL', action = act.CopyMode 'PageUp' },
+ { key = 'c', mods = 'CTRL', action = act.CopyMode 'Close' },
+
+ { key = 'd', mods = 'CTRL', action = act.CopyMode{ MoveByPage = (0.5) } },
+ { key = 'u', mods = 'CTRL', action = act.CopyMode{ MoveByPage = (-0.5) } },
+
+ { key = 'b', mods = 'NONE', action = act.CopyMode 'MoveBackwardWord' },
+ { key = 'e', mods = 'NONE', action = act.CopyMode 'MoveForwardWordEnd' },
+ { key = 'w', mods = 'NONE', action = act.CopyMode 'MoveForwardWord' },
+
+ { 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 = 'y', mods = 'NONE', action = act.Multiple{ { CopyTo = 'ClipboardAndPrimarySelection' }, { CopyMode = 'Close' } } },
+ },
+
+ search_mode = {
+ { key = 'Enter', mods = 'NONE', action = act.CopyMode 'PriorMatch' },
+ { key = 'Escape', mods = 'NONE', action = act.CopyMode 'Close' },
+ { 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' },
+ },
+ }
+
+ return config
+end
+
+return mod
Created config/wezterm/schemes.lua
+return {
+ -- zenbones light, with a dimmer bg and no black/white swap
+ ['light'] = {
+ background = "#e8e4e3",
+ foreground = "#2c363c",
+ cursor_bg = "#2c363c",
+ cursor_fg = "#e8e4e3",
+ cursor_border = "#2c363c",
+ selection_bg = "#d2dfe7",
+ selection_fg = "#2c363c",
+
+ ansi = {
+ "#2c363c",
+ "#a8334c",
+ "#617437",
+ "#944927",
+ "#286486",
+ "#88507d",
+ "#3b8992",
+ "#f0edec",
+ },
+
+ brights = {
+ "#44525b",
+ "#9c2842",
+ "#55672a",
+ "#87411e",
+ "#1f5a7a",
+ "#864079",
+ "#2f7c85",
+ "#dcd2ce",
+ }
+ },
+
+ -- zenbones dark, with a warmer background
+ ['dark'] = {
+ background = "#221f1d",
+ foreground = "#b4bdc3",
+ cursor_bg = "#c4cacf",
+ cursor_fg = "#221f1d",
+ cursor_border = "#c4cacf",
+ selection_bg = "#3d4042",
+ selection_fg = "#b4bdc3",
+
+ ansi = {
+ "#221f1d",
+ "#de6e7c",
+ "#819b69",
+ "#b77e64",
+ "#6099c0",
+ "#b279a7",
+ "#66a5ad",
+ "#b4bdc3",
+ },
+
+ brights = {
+ "#403833",
+ "#e8838f",
+ "#8bae68",
+ "#d68c67",
+ "#61abda",
+ "#cf86c1",
+ "#65b8c1",
+ "#888f94",
+ }
+ },
+}
Created config/wezterm/wezterm.lua
+local wezterm = require('wezterm')
+
+local config = wezterm.config_builder()
+
+config.font = wezterm.font('JetBrains Mono')
+config.font_size = 12.0
+
+config.hide_tab_bar_if_only_one_tab = true
+config.unzoom_on_switch_pane = true
+config.tab_bar_at_bottom = true
+config.use_fancy_tab_bar = false
+
+config.color_schemes = require('schemes')
+config.color_scheme = 'light'
+
+config.inactive_pane_hsb = {
+ saturation = 1.0,
+ brightness = 0.95,
+}
+
+local scheme = config.color_schemes[config.color_scheme]
+
+local bg = scheme.background
+local fg = scheme.foreground
+
+config.colors = {
+ tab_bar = {
+ background = bg,
+
+ active_tab = {
+ bg_color = fg,
+ fg_color = bg,
+ intensity = 'Bold',
+ },
+
+ inactive_tab = {
+ bg_color = bg,
+ fg_color = fg,
+ },
+
+ new_tab = {
+ bg_color = bg,
+ fg_color = fg,
+ },
+
+ new_tab_hover = {
+ bg_color = bg,
+ fg_color = fg,
+ },
+ }
+}
+
+config.window_padding = {
+ left = 0,
+ right = 0,
+ top = 0,
+ bottom = 0,
+}
+
+function tab_title(tab_info)
+ local title = tab_info.tab_title
+ -- if the tab title is explicitly set, take that
+ if title and #title > 0 then
+ return title
+ end
+ -- Otherwise, use the title from the active pane in that tab
+ return tab_info.active_pane.title
+end
+
+wezterm.on(
+ 'format-tab-title',
+ function(tab, tabs, panes, config, hover, max_width)
+ local background = bg
+ local foreground = fg
+
+ local title = tab_title(tab)
+ if tab.is_active then
+ title = wezterm.truncate_right(title, max_width)
+ background = fg
+ foreground = bg
+ else
+ title = wezterm.truncate_right((tab.tab_index + 1) .. ':' .. title, max_width)
+ end
+
+ return {
+ { Text = ' '},
+ { Background = { Color = background } },
+ { Foreground = { Color = foreground } },
+ { Text = title },
+ { Text = ' '},
+ }
+ end
+)
+
+require('keys').setup(config)
+
+return config