local wezterm = require "wezterm" -- Update right status with "mode" wezterm.on('update-right-status', function(window, pane) local name = window:active_key_table() if name then name = " " .. string.upper(string.sub(name, 1, 1)) .. " " end window:set_right_status(name or '') end) -- Toggle opacity local opacity = 0.8 wezterm.on('toggle-opacity', function(window, pane) if opacity == 0.8 then opacity = 0.9 elseif opacity == 0.9 then opacity = 1.0 else opacity = 0.8 end window:set_config_overrides({ window_background_opacity = opacity }) end) -- config local cfg = wezterm.config_builder() cfg.default_prog = { "nu", "--config", "~/.config/nushell/config.nu", "--env-config", "~/.config/nushell/env.nu" } cfg.window_close_confirmation = 'NeverPrompt' cfg.window_background_opacity = opacity cfg.window_decorations = "INTEGRATED_BUTTONS|RESIZE" cfg.integrated_title_button_style = "Gnome" cfg.integrated_title_buttons = { "Maximize", "Close" } cfg.font = wezterm.font_with_fallback { "Monaspace Neon", "Iosevka", "Hack" } cfg.leader = { key = "Space", mods = "CTRL", timeout_milliseconds = math.maxinteger, } cfg.keys = { { key = "p", mods = "LEADER", action = wezterm.action.ActivateKeyTable({ name = "pane_mode", one_shot = false }) }, { key = "h", mods = "SHIFT|CTRL|ALT", action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, { key = "v", mods = "SHIFT|CTRL|ALT", action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }) }, { key = "c", mods = "SHIFT|CTRL|ALT", action = wezterm.action.CloseCurrentPane({ confirm = false }) }, { key = "s", mods = "SHIFT|CTRL|ALT", action = wezterm.action.PaneSelect({ alphabet = "1234567890", mode = "SwapWithActive" }) }, { key = "o", mods = "SHIFT|CTRL|ALT", action = wezterm.action.EmitEvent("toggle-opacity") }, { key = "LeftArrow", mods = "SHIFT|CTRL", action = wezterm.action.ActivateTabRelative(-1) }, { key = "RightArrow", mods = "SHIFT|CTRL", action = wezterm.action.ActivateTabRelative(1) }, { key = "1", mods = "LEADER", action = wezterm.action.ActivateTab(0) }, { key = "2", mods = "LEADER", action = wezterm.action.ActivateTab(1) }, { key = "3", mods = "LEADER", action = wezterm.action.ActivateTab(2) }, { key = "4", mods = "LEADER", action = wezterm.action.ActivateTab(3) }, { key = "5", mods = "LEADER", action = wezterm.action.ActivateTab(4) }, { key = "6", mods = "LEADER", action = wezterm.action.ActivateTab(5) }, { key = "7", mods = "LEADER", action = wezterm.action.ActivateTab(6) }, { key = "8", mods = "LEADER", action = wezterm.action.ActivateTab(7) }, { key = "9", mods = "LEADER", action = wezterm.action.ActivateTab(8) }, { key = "0", mods = "LEADER", action = wezterm.action.ActivateTab(-1) }, } cfg.key_tables = { pane_mode = { { key = "h", action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, { key = "v", action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }) }, { key = "c", action = wezterm.action.CloseCurrentPane({ confirm = false }) }, { key = "s", action = wezterm.action.PaneSelect({ alphabet = "1234567890", mode = "SwapWithActive" }) }, { key = "LeftArrow", action = wezterm.action.ActivatePaneDirection("Left") }, { key = "UpArrow", action = wezterm.action.ActivatePaneDirection("Up") }, { key = "RightArrow", action = wezterm.action.ActivatePaneDirection("Right") }, { key = "DownArrow", action = wezterm.action.ActivatePaneDirection("Down") }, { key = "Delete", action = wezterm.action.CloseCurrentPane({ confirm = false }) }, { key = "LeftArrow", mods = "SHIFT", action = wezterm.action.AdjustPaneSize({ "Left", 1 }) }, { key = "RightArrow", mods = "SHIFT", action = wezterm.action.AdjustPaneSize({ "Right", 1 }) }, { key = "UpArrow", mods = "SHIFT", action = wezterm.action.AdjustPaneSize({ "Up", 1 }) }, { key = "DownArrow", mods = "SHIFT", action = wezterm.action.AdjustPaneSize({ "Down", 1 }) }, { key = "Escape", action = "PopKeyTable" }, }, } -- Plugins wezterm.plugin.require("https://github.com/catppuccin/wezterm").apply_to_config(cfg, { sync = true, sync_flavors = { light = "latte", dark = "mocha", } }) wezterm.plugin.require("https://github.com/nekowinston/wezterm-bar").apply_to_config(cfg, { clock = { enabled = false, } }) return cfg