🧃

大学生、WindowsでWezterm(Nightly)の設定を構築する備忘録

に公開

後続のためにWeztermの設定方法を残しておこうと思います。
もともと『大学生、Windowsにおける快適な操作環境を思案』という記事に全文載せるつもりでしたが、Weztermに限定した記事があれば読みやすいという事で分離しています。

Windowsで行うWeztermの設定方法を探している人向けなので、ソフトウェアの概要は他の人に任せます。

Weztermのダウンロードページはこちらです。
https://github.com/wezterm/wezterm/releases

Weztermの基本的な設定方法

Weztermの基礎的な設定を知りたい方は下記の記事を読むと理解できます。・・・打つのが面倒くさいのでこちらを読んでください。・・・簡単な説明はしておきます。
https://zenn.dev/mozumasu/articles/mozumasu-wezterm-customization
https://coralpink.github.io/commentary/index.html

Weztermの設定にはLuaを使用します。

wezterm.lua
-- wezterm API を取り込む
local wezterm = require("wezterm")
-- 設定を保持する
local config = wezterm.config_builder()

-- ここに設定を書き込む

-- 最後に設定をweztermに返す。
return config

まず、LuaでWeztermを設定するときに必要なこととして、Weztermで用意されているAPI(Weztermの設定)を読み込む必要があります。
次に、wezterm.config_builder()を使用して設定した内容を保持するようにします。ここはconfig = {}でもいいです。
最後にreturn configで設定した内容をWezterm側に送ります。
以上です。

簡単ですね。

ここでWeztermの設定を行ったファイルを例として載せます。また、この設定は半年前の内容なので、この後記載する現在の設定と非常に差異があります。

コード
wezterm.lua
-- wezterm API を取り込む
local wezterm = require("wezterm")

-- 設定を保持する
local config = wezterm.config_builder()
config.automatically_reload_config = true

config.window_close_confirmation = "NeverPrompt"
config.keys = require("keybinds").keys
config.key_tables = require("keybinds").key_tables
config.mouse_bindings = require('mousebinds').mouse_bindings
config.disable_default_mouse_bindings = false

local text_width = 12
if wezterm.target_triple == "x86_64-pc-windows-msvc" then
    config.default_prog = {"pwsh.exe"}
elseif wezterm.target_triple == "x86_64-apple-darwin" then
    config.default_prog = {'zsh.exe'}
end
config.use_ime = true
config.animation_fps = 60
config.scrollback_lines = 1000
config.front_end = "WebGpu"
config.window_decorations = 'RESIZE|INTEGRATED_BUTTONS'
local scheme = 'Night Owl (Gogh)'
config.color_scheme = scheme
config.window_background_opacity = 0.9
config.win32_system_backdrop = "Disable"
config.font = wezterm.font("UDEV Gothic JPDOC", {weight="Regular",stretch="Normal",italic=false})
config.font_size = 12.0
config.default_cursor_style = "BlinkingBar"
config.cursor_blink_rate = 500
config.animation_fps = 1
config.cursor_blink_ease_in = 'Constant'
config.cursor_blink_ease_out = 'Constant'

-- タブ
config.use_fancy_tab_bar = true
config.tab_bar_at_bottom = false
config.hide_tab_bar_if_only_one_tab = false
config.show_new_tab_button_in_tab_bar = false
-- config.show_close_tab_button_in_tabs = false
config.window_frame = {
    font = wezterm.font("Roboto"),
    font_size = 10.0,
    inactive_titlebar_bg = "None",
    active_titlebar_bg = "None",
}
config.colors = {
    tab_bar = { inactive_tab_edge = "none" },
}

-- カラースキーム変更
config.window_background_gradient = {
    colors = { wezterm.get_builtin_color_schemes()[scheme].background }
}

-- タブタイトル
local SOLID_LEFT_ARROW = wezterm.nerdfonts.pl_right_hard_divider
local SOLID_RIGHT_ARROW = wezterm.nerdfonts.pl_left_hard_divider
wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_width)
    local foreground = "#FFFFFF"
    local background = hover and "#355484" or "#7e7e7e"
    if tab.is_active then
        background = "#6584B4"
    end
    local edge_background = "none"
    local edge_foreground = background

    -- pwsh.exe
    icon = wezterm.nerdfonts.md_console_line
    icon_foreground = "#00AAFF"
    bar_title = "PowerShell 7 (x64)"
    if tab.active_pane.title == "cmd.exe" then
        icon = wezterm.nerdfonts.md_console_line
        icon_foreground = "#999999"
        bar_title = "CommandPrompt"
    elseif tab.active_pane.title == "wsl.exe" then
        icon = wezterm.nerdfonts.md_console_line
        icon_foreground = "#FFAA00"
        bar_title = "wsl"
    elseif tab.active_pane.title == "nvim.exe" then
        icon = wezterm.nerdfonts.custom_neovim
        icon_foreground = "#30c030"
        bar_title = "Neovim"
    elseif tab.active_pane.title == "btm.exe" then
        icon = wezterm.nerdfonts.cod_circuit_board
        icon_foreground = "#F0F0F0"
        bar_title = "bottom"
    end
    for _ = #bar_title, text_width - 1, 1 do
        bar_title = bar_title .. " "
    end

    local zoomed = tab.active_pane.is_zoomed and wezterm.nerdfonts.md_magnify_plus_outline or ''

    local title = "" .. zoomed .. wezterm.truncate_right(bar_title, text_width) .. ""
    return {
        { Background = { Color = edge_background } },
        { Foreground = { Color = icon_foreground } },
        { Text = icon },
        { Text = "" },
        { Background = { Color = edge_background } },
        { Foreground = { Color = edge_foreground } },
        { Text = SOLID_LEFT_ARROW },
        { Background = { Color = background } },
        { Foreground = { Color = foreground } },
        { Text = title },
        { Background = { Color = edge_background } },
        { Foreground = { Color = edge_foreground } },
        { Text = SOLID_RIGHT_ARROW },
    }
end)

-- 最後に設定をweztermに返す。
return config

全部で116行です。
Keybinds.luaの設定はこちらを参考にしてください。
https://zenn.dev/mozumasu/articles/mozumasu-wezterm-customization

最終的な見た目

最終的な見た目

設定を分離させる

ここからはWeztermを使いやすくしていきましょう。

コンフィグを読み込むLuaファイル

そのためにはまず、Pluginにあるluaファイルを読み取るwezterm.luaを作成します。configディレクトリに設定ファイルを入れて読み込むようにすることで、コードの可読性を上げることができます。
ここではWezTermでターミナルを自分なりのデザインにしよう![Mac向け]GitHubを参考にします。

wezterm.lua
local wezterm = require("wezterm")
local config = wezterm.config_builder()
function merge_config(config, new_config)
    for k, v in pairs(new_config) do
        config[k] = v
    end
end
local tab = require("config/tab")
merge_config(config, tab)
return config

使いやすいように少々改良しましょう。

wezterm.lua
local wezterm = require("wezterm")
local config = wezterm.config_builder()
local function merge_config(file)
    for k, v in pairs(require(file)) do
        config[k] = v
    end
end
merge_config("config/tabbar")
return config

configディレクトリにあるtabbar.luaを読み込むコードです。
wezterm.globをうまく使えばconfig内にあるファイルをすべて自動で読み取ることもできますが・・・ここではファイルを指定して管理する方面で進めていきます。

/
├─ wezterm.lua
└─ config
   ├─ ここに設定を入れていく
   ├─ colorscheme.lua
   └─ *.lua

ディレクトリツリーを2秒で書けるアプリを作りましたDir Makerを使うと分かりやすくディレクトリツリーが作れます。

設定ファイル

設定ファイルで使われている設定の名前は各自で調べてください。必要最低限しか説明しません。

general.lua

基本的な設定を入れるためのファイルです。

general.lua
local config = {}

config.use_ime = true
config.automatically_reload_config = true
config.disable_default_key_bindings = true
config.disable_default_mouse_bindings = false
config.scrollback_lines = 1000
config.window_close_confirmation = "NeverPrompt"

return config

この記事を見ながら構築する場合、automatically_reload_config = trueを入れておきましょう。設定ファイルの変更を検知して再読み込みする設定です。
また、use_ime = trueが入っていないとIMEが使えないので注意。

frame.lua

Weztermのフレーム設定、ようは見た目です。

frame.lua
local config = {}

config.front_end = "WebGpu"
config.window_decorations = 'INTEGRATED_BUTTONS'
config.window_background_opacity = 0.9
config.text_background_opacity = 0.9
config.animation_fps = 60
config.win32_system_backdrop = "Disable"
config.default_cursor_style = "BlinkingBar"
config.cursor_blink_rate = 500
config.cursor_blink_ease_in = 'Constant'
config.cursor_blink_ease_out = 'Constant'
config.window_frame = {
    inactive_titlebar_bg = 'None',
    active_titlebar_bg = 'None',
}
config.colors = {
    tab_bar = {
        inactive_tab_edge = "None"
    }
}
config.inactive_pane_hsb = {
    saturation = 0.9,
    brightness = 0.8,
}

return config

Windowsではfront_end = "WebGpu"を入れないとちらつく可能性があります。Weztermの下部がちらついている場合はこれを入れましょう。
window_decorations = 'INTEGRATED_BUTTONS'を入れることで、上部バーを消し、最小化最大化削除のボタンをタブの位置に置いとけます。Windowsでよくみるネイティブウィンドウを消す設定です。
ネイティブ
リッチ
window_background_opacityはターミナルの透過率を調整できる設定で、text_background_opacityはターミナルに表示する画像版です。後者は使用しません。
win32_system_backdrop = "Disable"は閉じる前の確認を消す設定です。

colorscheme.lua

Weztermのカラースキームを変更するファイルです。
Weztermに対応しているカラースキームはこちらで確認できます。
https://wezterm.org/colorschemes/

colorscheme.lua
local config = {}

--[[ - Like Color Scheme -
        'Powershell (Gogh)'
        'Night Owl (Gogh)'
        'iceberg-dark'
--]]
local scheme = 'Night Owl (Gogh)'

config.color_scheme = scheme
config.window_background_gradient = {
    colors = { require("wezterm").get_builtin_color_schemes()[scheme].background },
}

return config

window_background_gradientはタブバーの色をターミナルに合わせるものです。これがないと透明になります。
ただ、use_fancy_tab_barがないとタブバーが変わらないのでframe.luaのどこかにでも入れてください。

frame.lua
config.use_fancy_tab_bar = true

font.lua

フォントの設定です。

font
local config = {}

config.font = require("wezterm").font_with_fallback{
    {
        family = "UDEV Gothic JPDOC",
        weight="Regular",stretch="Normal",italic=false
    },
    "Noto Color Emoji",
    "Symbols Nerd Font",
}
config.font_size = 12.0

return config

font_with_fallbackで上からフォントを読み込んでいきます。
私はBIZ UDゴシックとJetBrains Monoが融合したUDEV Gothicを使っています。
https://github.com/yuru7/udev-gothic

tabbar.lua

tabbar.lua
local config = {}
config.enable_tab_bar = true

config.use_fancy_tab_bar = true
config.tab_bar_at_bottom = false
config.hide_tab_bar_if_only_one_tab = false
config.show_new_tab_button_in_tab_bar = false
config.show_close_tab_button_in_tabs = false

local wezterm = require("wezterm")
local tabicon = require("config/tabicon")
local text_width = #"Powershell"
local SOLID_LEFT_ARROW = wezterm.nerdfonts.ple_lower_right_triangle
local SOLID_RIGHT_ARROW = wezterm.nerdfonts.ple_upper_left_triangle
wezterm.on("format-tab-title", function(tab, _, _, _, _, _)
-- (tab, tabs, panes, config, hover, max_width)

    -- タブの色
    local foreground = tab.is_active and "#F0F0F0" or "#E0E0E0"
    local background = tab.is_active and "#0050A0" or "#909090"
    local edge_background = "None"
    local edge_foreground = background

    -- タブのアイコン
    local tab_info = tabicon(tab.active_pane.foreground_process_name)
    local icon = tab.active_pane.is_zoomed and wezterm.nerdfonts.md_magnify_plus_outline or tab_info.icon
    local icon_color = tab_info.icon_color
    local title = tab_info.title

    title = title .. string.rep(" ",text_width - #title)
    title = wezterm.truncate_right(title, text_width)

    return {
        { Background = { Color = edge_background } },
        { Foreground = { Color = edge_foreground } },
        { Text = SOLID_LEFT_ARROW },
        { Foreground = { Color = icon_color } },
        { Background = { Color = background } },
        { Text = icon .. " "},
        { Foreground = { Color = foreground } },
        { Text = title },
        { Background = { Color = edge_background } },
        { Foreground = { Color = edge_foreground } },
        { Text = SOLID_RIGHT_ARROW },
    }
end)

return config

enable_tab_barはタブバーを表示するかどうかです。
use_fancy_tab_bartrueにすることで現代的な見た目になります。
hide_tab_bar_if_only_one_tabがあると、タブが一つの時にタブを非表示にしてくれます。
show_close_tab_button_in_tabsはタブを閉じるボタンを非表示にします。この設定だけNightlyの機能なので、閉じるボタンを非表示にしたいならNightlyで入れ直してください。

wezterm.on("format-tab-title", function(tab, _, _, _, _, _)は能動的にタブバーの変更ができます。
例えば、タブの色を変更したりタブの名前を変更したり、それから時間の表示も・・・とにかくいろいろできます。
tab.is_active and "#F0F0F0" or "#E0E0E0"でアクティブタブかどうかで色を変えられます。
ここではtabicon(tab.active_pane.foreground_process_name)tabicon.luaに、そのタブで実行されているプロセスを送って、アイコンと色と名前を返すようにしています。
tab.active_pane.is_zoomed and wezterm.nerdfonts.md_magnify_plus_outlineはペイン分割を行っている時に、ペインを一つだけ表示しているならwezterm.nerdfonts.md_magnify_plus_outlineのアイコンを表示するようにしています。
あとはタブバーの長さを調整してreturnで返すように表示するようにします。

tabicon.lua

このLuaファイルでタブに表示する名前、アイコンと色の三つを返します。

tabicon.lua
local wezterm = require("wezterm")

local function get_tab_icon(tab)
-- 拡張子を変更するようにする
  tab = string.gsub(tab:match("[^\\]+$"), ".exe", "")

  local title = "PowerShell 7 (x64)"
  local icon = wezterm.nerdfonts.md_console_line
  local icon_color = "#50A0F0"

  if tab == "pwsh" then
    -- title = "PowerShell 7 (x64)"
    -- icon = wezterm.nerdfonts.md_console_line
    -- icon_color = "#50A0F0"
  elseif tab == "cmd" then
    title = "CommandPrompt"
    icon = wezterm.nerdfonts.md_console_line
    icon_color = "#101010"
  elseif tab == "wslhost" then
    title = "WSL"
    icon = wezterm.nerdfonts.cod_terminal_linux
    icon_color = "#e95420"
  elseif tab == "btm" then
    title = "bottom"
    icon = wezterm.nerdfonts.cod_circuit_board
    icon_color = "#F0F0F0"
  elseif tab == "yazi" then
    title = "yazi"
    icon = wezterm.nerdfonts.cod_folder
    icon_color = "#F9F900"
  elseif tab == "broot" then
    title = "broot"
    icon = wezterm.nerdfonts.cod_folder
    icon_color = "#909000"
  elseif tab == "lazygit" then
    title = "Lazygit"
    icon = wezterm.nerdfonts.dev_git
    icon_color = "#25d580"
  elseif tab == "micro" then
    title = "micro"
    icon = wezterm.nerdfonts.md_alpha_m_box
    icon_color = "#2e3192"
-- Neovim
  elseif  tab == "nvim" or
          tab == "language_server_windows_x64" then
    title = "Neovim"
    icon = wezterm.nerdfonts.custom_neovim
    icon_color = "#30c030"
  elseif tab == "clangd" then
    title = "Neovim"
    icon = wezterm.nerdfonts.dev_c
    icon_color = "#085e9f"
  elseif  tab == "rust-analyzer" or
          tab == "rust-analyzer-proc-macro-srv" then
    title = "Neovim"
    icon = wezterm.nerdfonts.dev_rust
    icon_color = "#f74b00"
  elseif tab == "python" then
    title = "Neovim"
    icon = wezterm.nerdfonts.dev_python
    icon_color = "#ffdd50"
  elseif tab == "lua-language-server" then
    title = "Neovim"
    icon = wezterm.nerdfonts.dev_lua
    icon_color = "#080884"
  else
    title = tab
  end

  return {
    icon = icon,
    icon_color = icon_color,
    title = title,
  }
end

return get_tab_icon

処理部分は一つのため、M = {}のようなテーブルを使っていません。
やっていることは単純で、まずtab = string.gsub(tab:match("[^\\]+$"), ".exe", "")で拡張子を消します。

  local title = "PowerShell 7 (x64)"
  local icon = wezterm.nerdfonts.md_console_line
  local icon_color = "#50A0F0"

次にtitle、icon、icon_colorの三つの変数を初期化し、そのあとに条件式で合致したプロセス名に分岐して三つの変数の中身を変えて、テーブルにして返します。

もともと、yazi.exenvim.exeのように拡張子が入っていましたが、そうすると移行したときの保守性がないので拡張子を省くようにしました。
また、Neovimのlanguage_server_windows_x64.exeですが、Windows版のLSPとして起動しているみたいです(Masonに対応するLSPが入ってないならnvim.exeになりますが)。
もし、実行しているプロセス名ではなくターミナル名を表示したいなら、下のようにしてください。

  else
    -- title = tab
  end

keybinds.lua

keybinds.lua
local wezterm = require("wezterm")
local config = {}

config.keys = require("config/keybinds_windows").keys
config.key_tables = require("config/keybinds_windows").key_tables

return config

キーボードのコンフィグを登録するファイルです。
requireの後にkeyskey_tablesがあるのは、Weztermのキーコンフィグを出力するときにreturnで出力されるためです。詳細は後で。

keybinds_windows.lua

keybinds_windows.lua
local act = require('wezterm').action

return {
  keys = {
    -- Test

    -- [[ Windowsのキーバインド ]] --
    -- 操作
    { key = 'PageUp', mods = 'NONE', action = act.ScrollByPage(-1) },
    { key = 'PageDown', mods = 'NONE', action = act.ScrollByPage(1) },
    { key = 'f', mods = 'CTRL|SHIFT', action = act.Search 'CurrentSelectionOrEmptyString' }, -- 文字の検索
    { key = 'F', mods = 'CTRL|SHIFT', action = act.Search 'CurrentSelectionOrEmptyString' },
    { key = 'p', mods = 'CTRL', action = act.ActivateCommandPalette }, -- コマンドパレットの表示
    { key = 'P', mods = 'CTRL', action = act.ActivateCommandPalette },
    { key = 'F4', mods = 'NONE', action = act.ActivateCommandPalette },
    { key = 'u', mods = 'CTRL|SHIFT', action = act.CharSelect{ copy_on_select = true, copy_to =  'ClipboardAndPrimarySelection' } }, -- Unicode文字の選択
    { key = 'U', mods = 'CTRL|SHIFT', action = act.CharSelect{ copy_on_select = true, copy_to =  'ClipboardAndPrimarySelection' } },
    { key = 'k', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackOnly' }, -- スクロールバックのクリア
    { key = 'K', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackOnly' },
    { key = 'l', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackAndViewport' }, -- スクロールバックのクリア
    { key = 'L', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackAndViewport' },
    { key = 'o', mods = 'SHIFT|CTRL', action = act.ActivateCopyMode }, -- コピーモードの開始
    { key = 'O', mods = 'SHIFT|CTRL', action = act.ActivateCopyMode },

    -- ウィンドウ
    { key = 'n', mods = 'CTRL|SHIFT', action = act.SpawnWindow }, -- ウィンドウの追加
    { key = 'N', mods = 'CTRL|SHIFT', action = act.SpawnWindow },
    { key = '0', mods = 'CTRL', action = act.ResetFontSize }, -- 文字サイズリセット
    { key = ';', mods = 'CTRL', action = act.IncreaseFontSize }, -- 文字サイズ拡大
    { key = '+', mods = 'SHIFT|CTRL', action = act.IncreaseFontSize },
    { key = '-', mods = 'CTRL', action = act.DecreaseFontSize }, -- 文字サイズ縮小
    { key = '=', mods = 'SHIFT|CTRL', action = act.DecreaseFontSize },

    -- ペイン
    { key = 'z', mods = 'SHIFT|ALT', action = act.TogglePaneZoomState }, -- アクティブペインの強調表示
    { key = 'Z', mods = 'SHIFT|ALT', action = act.TogglePaneZoomState },
    { key = 'c', mods = 'SHIFT|ALT', action = act.CloseCurrentPane { confirm = false } }, -- 現在のペインの削除
    { key = 'C', mods = 'SHIFT|ALT', action = act.CloseCurrentPane { confirm = false } },
    { key = 'd', mods = 'SHIFT|ALT', action = act.SplitHorizontal{ domain = 'CurrentPaneDomain' } }, -- 右に新しいペインを追加
    { key = 'D', mods = 'SHIFT|ALT', action = act.SplitHorizontal{ domain = 'CurrentPaneDomain' } },
    { key = 's', mods = 'SHIFT|ALT', action = act.SplitVertical{ domain = 'CurrentPaneDomain' } }, -- 下に新しいペインを追加
    { key = 'S', mods = 'SHIFT|ALT', action = act.SplitVertical{ domain = 'CurrentPaneDomain' } },
    -- { key = 'r', mods = 'SHIFT|ALT', action = act.SplitVertical{ domain = 'CurrentPaneDomain' } }, -- 下に小さな新しいペインを追加
    -- { key = 'R', mods = 'SHIFT|ALT', action = act.SplitVertical{ domain = 'CurrentPaneDomain' } },
    { key = 'LeftArrow', mods = 'SHIFT|ALT', action = act.AdjustPaneSize{ 'Left', 1 } }, -- ペインのサイズ調整
    { key = 'RightArrow', mods = 'SHIFT|ALT', action = act.AdjustPaneSize{ 'Right', 1 } },
    { key = 'UpArrow', mods = 'SHIFT|ALT', action = act.AdjustPaneSize{ 'Up', 1 } },
    { key = 'DownArrow', mods = 'SHIFT|ALT', action = act.AdjustPaneSize{ 'Down', 1 } },

    { key = 'UpArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Up' }, -- ペイン間のカーソル移動
    { key = 'DownArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Down' },
    { key = 'RightArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Right' },
    { key = 'LeftArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' },

    -- タブ
    { key = 'T', mods = 'CTRL|SHIFT', action = act.SpawnTab 'CurrentPaneDomain' }, -- タブの追加
    { key = 'W', mods = 'CTRL|SHIFT', action = act.CloseCurrentTab{ confirm = false } }, -- タブの削除
    { key = '{', mods = 'SHIFT|CTRL', action = act.MoveTabRelative(-1) }, -- タブの移動
    { key = '}', mods = 'SHIFT|CTRL', action = act.MoveTabRelative(1) },
    -- タブ切り替え
    { key = 'Tab', mods = 'CTRL', action = act.ActivateTabRelative(1) }, -- タブの切り替え
    { key = 'Tab', mods = 'CTRL|SHIFT', action = act.ActivateTabRelative(-1) },
    { key = '1', mods = 'CTRL', action = act.ActivateTab(0) }, -- タブの切り替え(数字)
    { key = '2', mods = 'CTRL', action = act.ActivateTab(1) },
    { key = '3', mods = 'CTRL', action = act.ActivateTab(2) },
    { key = '4', mods = 'CTRL', action = act.ActivateTab(3) },
    { key = '5', mods = 'CTRL', action = act.ActivateTab(4) },
    { key = '6', mods = 'CTRL', action = act.ActivateTab(5) },
    { key = '7', mods = 'CTRL', action = act.ActivateTab(6) },
    { key = '8', mods = 'CTRL', action = act.ActivateTab(7) },
    { key = '9', mods = 'CTRL', action = act.ActivateTab(-1) },

    -- コピーペースト
    --[[
    { key = 'C', mods = 'CTRL', action = act.CopyTo(Clipboard) }, -- コピー
    { key = 'V', mods = 'CTRL', action = act.PasteFrom(Clipboard) }, -- 貼り付け
    --]]

    { key = 'phys:Space', mods = 'SHIFT|CTRL', action = act.QuickSelect }, -- クイックセレクトの開始
    { key = 'F5', mods = 'NONE', action = act.ReloadConfiguration }, -- Weztermの設定の再読み込み
    { key = 'F11', mods = 'NONE', action = act.ToggleFullScreen }, -- フルスクリーン化
    { key = 'F12', mods = 'NONE',action = act.ShowDebugOverlay }, -- デバッグ情報の表示
    -- { key = 'Insert', mods = 'SHIFT', action = act.PasteFrom 'Clipboard' },
    -- { key = 'Insert', mods = 'CTRL', action = act.CopyTo 'Clipboard' },
    { key = 'Copy', mods = 'NONE', action = act.CopyTo 'Clipboard' },
    { key = 'Paste', mods = 'NONE', action = act.PasteFrom 'Clipboard' },
  },

  key_tables = {
    copy_mode = { -- コピーモード
      -- 操作
      { key = 'Escape', mods = 'NONE', action = act.CopyMode 'Close' },
      -- { key = 'phys:Space', mods = 'NONE', action = act.CopyMode{ SetSelectionMode =  'Cell' } },

      -- 移動
      { key = 'Tab', mods = 'NONE', action = act.CopyMode 'MoveForwardWord' },
      { key = 'Tab', mods = 'SHIFT', action = act.CopyMode 'MoveBackwardWord' },
      { key = 'Enter', mods = 'NONE', action = act.CopyMode 'MoveToStartOfNextLine' },
      { key = 'Home', mods = 'NONE', action = act.CopyMode 'MoveToStartOfLine' },
      { key = 'End', mods = 'NONE', action = act.CopyMode 'MoveToEndOfLineContent' },
      { key = 'LeftArrow', mods = 'NONE', action = act.CopyMode 'MoveLeft' },
      { key = 'RightArrow', mods = 'NONE', action = act.CopyMode 'MoveRight' },
      { key = 'UpArrow', mods = 'NONE', action = act.CopyMode 'MoveUp' },
      { key = 'DownArrow', mods = 'NONE', action = act.CopyMode 'MoveDown' },
      { key = 'LeftArrow', mods = 'CTRL', action = act.CopyMode 'MoveBackwardWord' },
      { key = 'RightArrow', mods = 'CTRL', action = act.CopyMode 'MoveForwardWord' },
    },

    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' },
    },

  }
}

デフォルトからかなりキーコンフィグが変わっています。Windows terminalのデフォルトに合わせた形になっています。
ほんとうは開いているプロセスに合わせてコンフィグを変えたかったのですが、それはまたの機会に。

wezterm show-keys --lua > keybinds.luaで出力したデフォルトのキーコンフィグはこちらに。

keybinds_windows.lua
keybinds_default.lua
local act = require('wezterm').action

return {
  keys = {
    { key = 'Tab', mods = 'CTRL', action = act.ActivateTabRelative(1) },
    { key = 'Tab', mods = 'SHIFT|CTRL', action = act.ActivateTabRelative(-1) },
    { key = 'Enter', mods = 'ALT', action = act.ToggleFullScreen },
    { key = '!', mods = 'CTRL', action = act.ActivateTab(0) },
    { key = '!', mods = 'SHIFT|CTRL', action = act.ActivateTab(0) },
    { key = '\"', mods = 'ALT|CTRL', action = act.SplitVertical{ domain =  'CurrentPaneDomain' } },
    { key = '\"', mods = 'SHIFT|ALT|CTRL', action = act.SplitVertical{ domain =  'CurrentPaneDomain' } },
    { key = '#', mods = 'CTRL', action = act.ActivateTab(2) },
    { key = '#', mods = 'SHIFT|CTRL', action = act.ActivateTab(2) },
    { key = '$', mods = 'CTRL', action = act.ActivateTab(3) },
    { key = '$', mods = 'SHIFT|CTRL', action = act.ActivateTab(3) },
    { key = '%', mods = 'CTRL', action = act.ActivateTab(4) },
    { key = '%', mods = 'SHIFT|CTRL', action = act.ActivateTab(4) },
    { key = '%', mods = 'ALT|CTRL', action = act.SplitHorizontal{ domain =  'CurrentPaneDomain' } },
    { key = '%', mods = 'SHIFT|ALT|CTRL', action = act.SplitHorizontal{ domain =  'CurrentPaneDomain' } },
    { key = '&', mods = 'CTRL', action = act.ActivateTab(6) },
    { key = '&', mods = 'SHIFT|CTRL', action = act.ActivateTab(6) },
    { key = '\'', mods = 'SHIFT|ALT|CTRL', action = act.SplitVertical{ domain =  'CurrentPaneDomain' } },
    { key = '(', mods = 'CTRL', action = act.ActivateTab(-1) },
    { key = '(', mods = 'SHIFT|CTRL', action = act.ActivateTab(-1) },
    { key = ')', mods = 'CTRL', action = act.ResetFontSize },
    { key = ')', mods = 'SHIFT|CTRL', action = act.ResetFontSize },
    { key = '*', mods = 'CTRL', action = act.ActivateTab(7) },
    { key = '*', mods = 'SHIFT|CTRL', action = act.ActivateTab(7) },
    { key = '+', mods = 'CTRL', action = act.IncreaseFontSize },
    { key = '+', mods = 'SHIFT|CTRL', action = act.IncreaseFontSize },
    { key = '-', mods = 'CTRL', action = act.DecreaseFontSize },
    { key = '-', mods = 'SHIFT|CTRL', action = act.DecreaseFontSize },
    { key = '-', mods = 'SUPER', action = act.DecreaseFontSize },
    { key = '0', mods = 'CTRL', action = act.ResetFontSize },
    { key = '0', mods = 'SHIFT|CTRL', action = act.ResetFontSize },
    { key = '0', mods = 'SUPER', action = act.ResetFontSize },
    { key = '1', mods = 'SHIFT|CTRL', action = act.ActivateTab(0) },
    { key = '1', mods = 'SUPER', action = act.ActivateTab(0) },
    { key = '2', mods = 'SHIFT|CTRL', action = act.ActivateTab(1) },
    { key = '2', mods = 'SUPER', action = act.ActivateTab(1) },
    { key = '3', mods = 'SHIFT|CTRL', action = act.ActivateTab(2) },
    { key = '3', mods = 'SUPER', action = act.ActivateTab(2) },
    { key = '4', mods = 'SHIFT|CTRL', action = act.ActivateTab(3) },
    { key = '4', mods = 'SUPER', action = act.ActivateTab(3) },
    { key = '5', mods = 'SHIFT|CTRL', action = act.ActivateTab(4) },
    { key = '5', mods = 'SHIFT|ALT|CTRL', action = act.SplitHorizontal{ domain =  'CurrentPaneDomain' } },
    { key = '5', mods = 'SUPER', action = act.ActivateTab(4) },
    { key = '6', mods = 'SHIFT|CTRL', action = act.ActivateTab(5) },
    { key = '6', mods = 'SUPER', action = act.ActivateTab(5) },
    { key = '7', mods = 'SHIFT|CTRL', action = act.ActivateTab(6) },
    { key = '7', mods = 'SUPER', action = act.ActivateTab(6) },
    { key = '8', mods = 'SHIFT|CTRL', action = act.ActivateTab(7) },
    { key = '8', mods = 'SUPER', action = act.ActivateTab(7) },
    { key = '9', mods = 'SHIFT|CTRL', action = act.ActivateTab(-1) },
    { key = '9', mods = 'SUPER', action = act.ActivateTab(-1) },
    { key = '=', mods = 'CTRL', action = act.IncreaseFontSize },
    { key = '=', mods = 'SHIFT|CTRL', action = act.IncreaseFontSize },
    { key = '=', mods = 'SUPER', action = act.IncreaseFontSize },
    { key = '@', mods = 'CTRL', action = act.ActivateTab(1) },
    { key = '@', mods = 'SHIFT|CTRL', action = act.ActivateTab(1) },
    { key = 'C', mods = 'CTRL', action = act.CopyTo 'Clipboard' },
    { key = 'F', mods = 'CTRL', action = act.Search 'CurrentSelectionOrEmptyString' },
    { key = 'K', mods = 'CTRL', action = act.ClearScrollback 'ScrollbackOnly' },
    { key = 'K', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackOnly' },
    { key = 'L', mods = 'CTRL', action = act.ShowDebugOverlay },
    { key = 'L', mods = 'SHIFT|CTRL', action = act.ShowDebugOverlay },
    { key = 'M', mods = 'CTRL', action = act.Hide },
    { key = 'M', mods = 'SHIFT|CTRL', action = act.Hide },
    { key = 'N', mods = 'CTRL', action = act.SpawnWindow },
    { key = 'N', mods = 'SHIFT|CTRL', action = act.SpawnWindow },
    { key = 'P', mods = 'CTRL', action = act.ActivateCommandPalette },
    { key = 'P', mods = 'SHIFT|CTRL', action = act.ActivateCommandPalette },
    { key = 'R', mods = 'CTRL', action = act.ReloadConfiguration },
    { key = 'R', mods = 'SHIFT|CTRL', action = act.ReloadConfiguration },
    { key = 'T', mods = 'CTRL', action = act.SpawnTab 'CurrentPaneDomain' },
    { key = 'T', mods = 'SHIFT|CTRL', action = act.SpawnTab 'CurrentPaneDomain' },
    { key = 'U', mods = 'CTRL', action = act.CharSelect{ copy_on_select = true, copy_to =  'ClipboardAndPrimarySelection' } },
    { key = 'U', mods = 'SHIFT|CTRL', action = act.CharSelect{ copy_on_select = true, copy_to =  'ClipboardAndPrimarySelection' } },
    { key = 'V', mods = 'CTRL', action = act.PasteFrom 'Clipboard' },
    { key = 'V', mods = 'SHIFT|CTRL', action = act.PasteFrom 'Clipboard' },
    { key = 'W', mods = 'CTRL', action = act.CloseCurrentTab{ confirm = true } },
    { key = 'W', mods = 'SHIFT|CTRL', action = act.CloseCurrentTab{ confirm = true } },
    { key = 'X', mods = 'CTRL', action = act.ActivateCopyMode },
    { key = 'Z', mods = 'CTRL', action = act.TogglePaneZoomState },
    { key = '[', mods = 'SHIFT|SUPER', action = act.ActivateTabRelative(-1) },
    { key = ']', mods = 'SHIFT|SUPER', action = act.ActivateTabRelative(1) },
    { key = '^', mods = 'CTRL', action = act.ActivateTab(5) },
    { key = '^', mods = 'SHIFT|CTRL', action = act.ActivateTab(5) },
    { key = '_', mods = 'CTRL', action = act.DecreaseFontSize },
    { key = '_', mods = 'SHIFT|CTRL', action = act.DecreaseFontSize },
    { key = 'c', mods = 'SUPER', action = act.CopyTo 'Clipboard' },
    { key = 'f', mods = 'SUPER', action = act.Search 'CurrentSelectionOrEmptyString' },
    { key = 'k', mods = 'SHIFT|CTRL', action = act.ClearScrollback 'ScrollbackOnly' },
    { key = 'k', mods = 'SUPER', action = act.ClearScrollback 'ScrollbackOnly' },
    { key = 'l', mods = 'SHIFT|CTRL', action = act.ShowDebugOverlay },
    { key = 'm', mods = 'SHIFT|CTRL', action = act.Hide },
    { key = 'm', mods = 'SUPER', action = act.Hide },
    { key = 'n', mods = 'SHIFT|CTRL', action = act.SpawnWindow },
    { key = 'n', mods = 'SUPER', action = act.SpawnWindow },
    { key = 'p', mods = 'SHIFT|CTRL', action = act.ActivateCommandPalette },
    { key = 'r', mods = 'SHIFT|CTRL', action = act.ReloadConfiguration },
    { key = 'r', mods = 'SUPER', action = act.ReloadConfiguration },
    { key = 't', mods = 'SHIFT|CTRL', action = act.SpawnTab 'CurrentPaneDomain' },
    { key = 't', mods = 'SUPER', action = act.SpawnTab 'CurrentPaneDomain' },
    { key = 'u', mods = 'SHIFT|CTRL', action = act.CharSelect{ copy_on_select = true, copy_to =  'ClipboardAndPrimarySelection' } },
    { key = 'v', mods = 'SHIFT|CTRL', action = act.PasteFrom 'Clipboard' },
    { key = 'v', mods = 'SUPER', action = act.PasteFrom 'Clipboard' },
    { key = 'w', mods = 'SHIFT|CTRL', action = act.CloseCurrentTab{ confirm = true } },
    { key = 'w', mods = 'SUPER', action = act.CloseCurrentTab{ confirm = true } },
    { key = '{', mods = 'SUPER', action = act.ActivateTabRelative(-1) },
    { key = '{', mods = 'SHIFT|SUPER', action = act.ActivateTabRelative(-1) },
    { key = '}', mods = 'SUPER', action = act.ActivateTabRelative(1) },
    { key = '}', mods = 'SHIFT|SUPER', action = act.ActivateTabRelative(1) },
    { key = 'phys:Space', mods = 'SHIFT|CTRL', action = act.QuickSelect },
    { key = 'PageUp', mods = 'SHIFT', action = act.ScrollByPage(-1) },
    { key = 'PageUp', mods = 'CTRL', action = act.ActivateTabRelative(-1) },
    { key = 'PageUp', mods = 'SHIFT|CTRL', action = act.MoveTabRelative(-1) },
    { key = 'PageDown', mods = 'SHIFT', action = act.ScrollByPage(1) },
    { key = 'PageDown', mods = 'CTRL', action = act.ActivateTabRelative(1) },
    { key = 'PageDown', mods = 'SHIFT|CTRL', action = act.MoveTabRelative(1) },
    { key = 'LeftArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' },
    { key = 'LeftArrow', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Left', 1 } },
    { key = 'RightArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Right' },
    { key = 'RightArrow', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Right', 1 } },
    { key = 'UpArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Up' },
    { key = 'UpArrow', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Up', 1 } },
    { key = 'DownArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Down' },
    { key = 'DownArrow', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Down', 1 } },
    { key = 'Insert', mods = 'SHIFT', action = act.PasteFrom 'PrimarySelection' },
    { key = 'Insert', mods = 'CTRL', action = act.CopyTo 'PrimarySelection' },
    { key = 'F12', mods = 'NONE', action = act.ShowDebugOverlay },
    { key = 'Copy', mods = 'NONE', action = act.CopyTo 'Clipboard' },
    { key = 'Paste', mods = 'NONE', action = act.PasteFrom 'Clipboard' },
  },

  key_tables = {
    copy_mode = {
      { key = 'Tab', mods = 'NONE', action = act.CopyMode 'MoveForwardWord' },
      {
        key = 'Tab',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveBackwardWord',
      },
      {
        key = 'Enter',
        mods = 'NONE',
        action = act.CopyMode 'MoveToStartOfNextLine',
      },
      {
        key = 'Escape',
        mods = 'NONE',
        action = act.Multiple {
          { CopyMode = 'ScrollToBottom' },
          { CopyMode = 'Close' },
        },
      },
      {
        key = 'Space',
        mods = 'NONE',
        action = act.CopyMode { SetSelectionMode = 'Cell' },
      },
      {
        key = '$',
        mods = 'NONE',
        action = act.CopyMode 'MoveToEndOfLineContent',
      },
      {
        key = '$',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToEndOfLineContent',
      },
      { key = ',', mods = 'NONE', action = act.CopyMode 'JumpReverse' },
      { key = '0', mods = 'NONE', action = act.CopyMode 'MoveToStartOfLine' },
      { key = ';', mods = 'NONE', action = act.CopyMode 'JumpAgain' },
      {
        key = 'F',
        mods = 'NONE',
        action = act.CopyMode { JumpBackward = { prev_char = false } },
      },
      {
        key = 'F',
        mods = 'SHIFT',
        action = act.CopyMode { JumpBackward = { prev_char = false } },
      },
      {
        key = 'G',
        mods = 'NONE',
        action = act.CopyMode 'MoveToScrollbackBottom',
      },
      {
        key = 'G',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToScrollbackBottom',
      },
      { key = 'H', mods = 'NONE', action = act.CopyMode 'MoveToViewportTop' },
      {
        key = 'H',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToViewportTop',
      },
      {
        key = 'L',
        mods = 'NONE',
        action = act.CopyMode 'MoveToViewportBottom',
      },
      {
        key = 'L',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToViewportBottom',
      },
      {
        key = 'M',
        mods = 'NONE',
        action = act.CopyMode 'MoveToViewportMiddle',
      },
      {
        key = 'M',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToViewportMiddle',
      },
      {
        key = 'O',
        mods = 'NONE',
        action = act.CopyMode 'MoveToSelectionOtherEndHoriz',
      },
      {
        key = 'O',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToSelectionOtherEndHoriz',
      },
      {
        key = 'T',
        mods = 'NONE',
        action = act.CopyMode { JumpBackward = { prev_char = true } },
      },
      {
        key = 'T',
        mods = 'SHIFT',
        action = act.CopyMode { JumpBackward = { prev_char = true } },
      },
      {
        key = 'V',
        mods = 'NONE',
        action = act.CopyMode { SetSelectionMode = 'Line' },
      },
      {
        key = 'V',
        mods = 'SHIFT',
        action = act.CopyMode { SetSelectionMode = 'Line' },
      },
      {
        key = '^',
        mods = 'NONE',
        action = act.CopyMode 'MoveToStartOfLineContent',
      },
      {
        key = '^',
        mods = 'SHIFT',
        action = act.CopyMode 'MoveToStartOfLineContent',
      },
      { key = 'b', mods = 'NONE', action = act.CopyMode 'MoveBackwardWord' },
      { key = 'b', mods = 'ALT', action = act.CopyMode 'MoveBackwardWord' },
      { key = 'b', mods = 'CTRL', action = act.CopyMode 'PageUp' },
      {
        key = 'c',
        mods = 'CTRL',
        action = act.Multiple {
          { CopyMode = 'ScrollToBottom' },
          { CopyMode = 'Close' },
        },
      },
      {
        key = 'd',
        mods = 'CTRL',
        action = act.CopyMode { MoveByPage = 0.5 },
      },
      {
        key = 'e',
        mods = 'NONE',
        action = act.CopyMode 'MoveForwardWordEnd',
      },
      {
        key = 'f',
        mods = 'NONE',
        action = act.CopyMode { JumpForward = { prev_char = false } },
      },
      { key = 'f', mods = 'ALT', action = act.CopyMode 'MoveForwardWord' },
      { key = 'f', mods = 'CTRL', action = act.CopyMode 'PageDown' },
      {
        key = 'g',
        mods = 'NONE',
        action = act.CopyMode 'MoveToScrollbackTop',
      },
      {
        key = 'g',
        mods = 'CTRL',
        action = act.Multiple {
          { CopyMode = 'ScrollToBottom' },
          { CopyMode = 'Close' },
        },
      },
      { 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 = 'm',
        mods = 'ALT',
        action = act.CopyMode 'MoveToStartOfLineContent',
      },
      {
        key = 'o',
        mods = 'NONE',
        action = act.CopyMode 'MoveToSelectionOtherEnd',
      },
      {
        key = 'q',
        mods = 'NONE',
        action = act.Multiple {
          { CopyMode = 'ScrollToBottom' },
          { CopyMode = 'Close' },
        },
      },
      {
        key = 't',
        mods = 'NONE',
        action = act.CopyMode { JumpForward = { prev_char = true } },
      },
      {
        key = 'u',
        mods = 'CTRL',
        action = act.CopyMode { MoveByPage = -0.5 },
      },
      {
        key = 'v',
        mods = 'NONE',
        action = act.CopyMode { SetSelectionMode = 'Cell' },
      },
      {
        key = 'v',
        mods = 'CTRL',
        action = act.CopyMode { SetSelectionMode = 'Block' },
      },
      { key = 'w', mods = 'NONE', action = act.CopyMode 'MoveForwardWord' },
      {
        key = 'y',
        mods = 'NONE',
        action = act.Multiple {
          { CopyTo = 'ClipboardAndPrimarySelection' },
          { CopyMode = 'ScrollToBottom' },
          { CopyMode = 'Close' },
        },
      },
      { key = 'PageUp', mods = 'NONE', action = act.CopyMode 'PageUp' },
      { key = 'PageDown', mods = 'NONE', action = act.CopyMode 'PageDown' },
      {
        key = 'End',
        mods = 'NONE',
        action = act.CopyMode 'MoveToEndOfLineContent',
      },
      {
        key = 'Home',
        mods = 'NONE',
        action = act.CopyMode 'MoveToStartOfLine',
      },
      { key = 'LeftArrow', mods = 'NONE', action = act.CopyMode 'MoveLeft' },
      {
        key = 'LeftArrow',
        mods = 'ALT',
        action = act.CopyMode 'MoveBackwardWord',
      },
      {
        key = 'RightArrow',
        mods = 'NONE',
        action = act.CopyMode 'MoveRight',
      },
      {
        key = 'RightArrow',
        mods = 'ALT',
        action = act.CopyMode 'MoveForwardWord',
      },
      { key = 'UpArrow', mods = 'NONE', action = act.CopyMode 'MoveUp' },
      { key = 'DownArrow', mods = 'NONE', action = act.CopyMode 'MoveDown' },
    },

    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' },
    },

  }
}

mousebinds.lua

mousebinds.lua
local act = require('wezterm').action

return {
    mouse_bindings = {
        { -- 右クリックでペースト
            event = { Down = { streak = 1, button = "Right" } },
            mods = "NONE",action = act.PasteFrom("Clipboard"),
        },
    },
}

Powershell 7に合わせる形にしました。
この設定を通すときはconfig.mouse_bindings = require("config/mousebinds").mouse_bindingsと打ってください。

この設定を組み合わせる。

wezterm.lua
local wezterm = require("wezterm")
local config = wezterm.config_builder()
local function merge_config(file)
    for k, v in pairs(require(file)) do
        config[k] = v
    end
end

if wezterm.target_triple == "x86_64-pc-windows-msvc" then
    config.default_prog = { "pwsh.exe" }
elseif wezterm.target_triple == "aarch64-apple-darwin" then
    config.default_prog = { "zsh.out" }
elseif wezterm.target_triple == "x86_64-unknown-linux-gnu" then
    config.default_prog = { "bash" }
end

config.mouse_bindings = require("config/mousebinds").mouse_bindings
merge_config("config/general")
merge_config("config/colorscheme")
merge_config("config/frame")
merge_config("config/font")
merge_config("config/tabbar")
merge_config("config/keybinds")
-- merge_config("config/DEBUGLINE")

return config

Githubを見てるとutilsのpratplatform.luaとして分離している例が多いですが、こちらは適当にやっています。細かくやりたくなったら調整はします。

if wezterm.target_triple == "x86_64-pc-windows-msvc" then
    config.default_prog = { "pwsh.exe" }
elseif wezterm.target_triple == "aarch64-apple-darwin" then
    config.default_prog = { "zsh" }
elseif wezterm.target_triple == "x86_64-unknown-linux-gnu" then
    config.default_prog = { "bash" }
end

最後に

ここまで読んでいただきありがとうございます。
今回はWeztermの設定を分離して管理がしやすくなる方法とコンフィグの設定を説明しました。
もしWeztermのコンフィグ設定を探している場合、この記事に限らずGitHubでweztermと検索してdotfileなど調べるといいでしょう。

他参考

https://blog.tubone-project24.xyz/2022/08/29/wezterm
https://zenn.dev/ino4x/scraps/787dd3b2136d26

Discussion