1local wezterm = require("wezterm")
2local mux = wezterm.mux
3
4wezterm.on("gui-startup", function(cmd)
5 local tab, pane, window = mux.spawn_window(cmd or {})
6 window:gui_window():maximize()
7end)
8
9local window_decorations = "RESIZE"
10if is_linux then
11 window_decorations = "TITLE | RESIZE"
12end
13
14return {
15 term = "wezterm",
16 default_prog = { zsh_bin, "-l" },
17
18 mux_env_remove = {
19 "SSH_AUTH_SOCK",
20 "SSH_CLIENT",
21 "SSH_CONNECTION",
22 "GPG_TTY",
23 },
24
25 front_end = "WebGpu",
26 font = wezterm.font_with_fallback({ "Dank Mono", "codicon", "Font Awesome 6 Pro" }),
27 allow_square_glyphs_to_overflow_width = "Always",
28 font_size = font_size,
29 line_height = 1.1,
30 max_fps = 120,
31
32 enable_wayland = true,
33 enable_scroll_bar = false,
34 enable_kitty_keyboard = true,
35 check_for_updates = false,
36 window_close_confirmation = "NeverPrompt",
37 native_macos_fullscreen_mode = true,
38 warn_about_missing_glyphs = false,
39 bold_brightens_ansi_colors = false,
40 window_decorations = window_decorations,
41 window_background_opacity = 0.999,
42 hide_mouse_cursor_when_typing = false,
43 underline_thickness = "160%",
44
45 use_fancy_tab_bar = false,
46 tab_bar_at_bottom = true,
47 tab_max_width = 24,
48 tab_bar_style = {
49 active_tab_left = empty,
50 active_tab_right = empty,
51 inactive_tab_left = empty,
52 inactive_tab_right = empty,
53 inactive_tab_hover_left = empty,
54 inactive_tab_hover_right = empty,
55 },
56
57 inactive_pane_hsb = {
58 hue = 1.0,
59 saturation = 1.0,
60 brightness = 1.0,
61 },
62
63 window_frame = {
64 font = wezterm.font_with_fallback({ "Dank Mono", "codicon" }),
65 font_size = font_size,
66 active_titlebar_bg = colors.black,
67 inactive_titlebar_bg = colors.black,
68 },
69
70 window_padding = {
71 left = "3px",
72 right = "3px",
73 top = "4px",
74 bottom = "4px",
75 },
76
77 colors = {
78 background = colors.black,
79 foreground = colors.white,
80 cursor_border = colors.grey,
81 cursor_fg = colors.grey,
82 cursor_bg = colors.white,
83 selection_bg = colors.grey,
84 selection_fg = colors.white,
85 split = colors.split,
86 ansi = {
87 colors.black,
88 colors.red,
89 colors.green,
90 colors.yellow,
91 colors.blue,
92 colors.magenta,
93 colors.aqua,
94 colors.white,
95 },
96 brights = {
97 colors.grey,
98 colors.brightRed,
99 colors.brightGreen,
100 colors.orange,
101 colors.brightBlue,
102 colors.magenta,
103 colors.cyan,
104 colors.muted,
105 },
106 tab_bar = {
107 background = colors.black,
108 active_tab = {
109 bg_color = colors.black,
110 fg_color = colors.yellow,
111 intensity = "Bold",
112 },
113 inactive_tab_edge = colors.black,
114 inactive_tab = {
115 bg_color = colors.black,
116 fg_color = colors.muted,
117 },
118 inactive_tab_hover = {
119 bg_color = colors.black,
120 fg_color = colors.blue,
121 },
122 new_tab = {
123 bg_color = colors.black,
124 fg_color = colors.blue,
125 },
126 }
127 },
128
129 send_composed_key_when_left_alt_is_pressed = false,
130 send_composed_key_when_right_alt_is_pressed = true,
131 leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1000 },
132 keys = {
133 { key = "a", mods = "LEADER|CTRL", action = wezterm.action({ SendString="\x01" }) },
134 { key = "%", mods = "LEADER|SHIFT", action = wezterm.action({ SplitHorizontal = { domain = "CurrentPaneDomain" } }) },
135 { key = "\"", mods = "LEADER|SHIFT", action = wezterm.action({ SplitVertical = { domain = "CurrentPaneDomain" } }) },
136 { key = "c", mods = "LEADER", action = wezterm.action({ SpawnTab = "CurrentPaneDomain" }) },
137 { key = "h", mods = "CTRL", action = wezterm.action({ ActivatePaneDirection = "Left" }) },
138 { key = "j", mods = "CTRL", action = wezterm.action({ ActivatePaneDirection = "Down" }) },
139 { key = "k", mods = "CTRL", action = wezterm.action({ ActivatePaneDirection = "Up" }) },
140 { key = "l", mods = "CTRL", action = wezterm.action({ ActivatePaneDirection = "Right" }) },
141 { key = "h", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Left" }) },
142 { key = "j", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Down" }) },
143 { key = "k", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Up" }) },
144 { key = "l", mods = "LEADER", action = wezterm.action({ ActivatePaneDirection = "Right" }) },
145 { key = "H", mods = "LEADER|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Left", 2 } }) },
146 { key = "J", mods = "LEADER|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Down", 2 } }) },
147 { key = "K", mods = "LEADER|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Up", 2 } }) },
148 { key = "L", mods = "LEADER|SHIFT", action = wezterm.action({ AdjustPaneSize = { "Right", 2 } }) },
149 { key = "n", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = 1 }) },
150 { key = "p", mods = "LEADER", action = wezterm.action({ ActivateTabRelative = -1 }) },
151 { key = "l", mods = "LEADER", action = "ActivateLastTab" },
152 { key = "&", mods = "LEADER|SHIFT", action = wezterm.action({ CloseCurrentTab = { confirm = true } }) },
153 { key = "x", mods = "LEADER", action = wezterm.action({ CloseCurrentPane = { confirm = true } }) },
154 { key = "-", mods = "LEADER", action = wezterm.action({ ClearScrollback = "ScrollbackAndViewport" }) },
155 { key = "[", mods = "LEADER", action = "ActivateCopyMode" },
156 { key = "z", mods = "LEADER", action = "TogglePaneZoomState" },
157 { key = "s", mods = "LEADER", action = "ShowLauncher" },
158 },
159}