WezTerm は、クロスプラットフォームのターミナルエミュレーターです。 Windows でも macOS でも Linux でも使えるので、使いこなせるようになるととても便利です。 Neovim と同様に設定を Lua 言語で行うことができ、高度なカスタマイズが可能です。 慣れないうちは Lua でどのように設定すればよいか分からないことも多いので、ここにいろんな設定方法をメモしておきます。
操作
Ctrl + Shift + P… コマンドパレットを開く(迷ったらコレ)- タブ
Ctrl + Shift + T/Cmd + T… タブを開くCtrl + Shift + W/Cmd + W… タブを閉じるCtrl + Tab/Ctrl + Shift + Tab… 左右のタブへ移動Ctrl + Shift + 1-9/Cmd + 1-9… その番号のタブへ移動Ctrl + Shift + PageUp/Down… カレントタブの位置を左右に移動
- ペーン分割
Ctrl + Shift + Alt + %… ペーンを左右に分割Ctrl + Shift + Alt + "… ペーンを上下に分割Ctrl + Shift + ↑↓←→… ペーンを移動Ctrl + Shift + Alt + ↑↓←→… ペーンのサイズを変更
設定(見た目)
インアクティブなペーンの彩度や輝度を調整する
config.inactive_pane_hsb = {
saturation = 0.9, -- 彩度(デフォルトは 0.9)
brightness = 0.4, -- 輝度(デフォルトは 0.8)
}
ペーン分割したときに、アクティブなペーンを判別しにくいときは、インアクティブなペーンの彩度 (saturation) や輝度 (brightness) を下げるとよいです。 彩度を下げると、グレスケールに近づきます。 彩度よりも輝度を下げて調整するのがおすすめです。 一応 hue も設定できますが、色が変わるので気持ち悪いです。
背景の透過
config.window_background_opacity = 0.9 -- ウィンドウを透過させる (1.0で不透過)
config.macos_window_background_blur = 10 -- ウィンドウの背景をぼかす(macOSのみ)
背景は少しだけ透過させるとかっこいいです。
次の設定を入れると、Neovim などのエディタの背景色も完全に透過されますが、余計なところ(カーソル行ハイライトなど)も見えなくなってしまうのでこの設定は入れない方がよいです。
-- これは副作用が大きいので入れない
-- config.text_background_opacity = 0
Neovim の背景を透過させたいときは、Neovim の設定の方で highlight グループを指定するのがよいです。
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })設定(応用)
Windows かどうかの判断
local is_windows = wezterm.target_triple:find("windows") ~= nil
if is_windows then
-- Windows 固有の設定
else
-- その他の OS 固有の設定
end
設定ファイルをモジュール化する
local wezterm = require "wezterm"
local config = wezterm.config_builder()
require("core").setup(wezterm, config) -- core.lua を読み込み
require("keys").setup(wezterm, config) -- keys.lua を読み込み
require("windows").setup(wezterm, config) -- windows.lua を読み込みlocal M = {}
function M.setup(wezterm, config)
-- Claude Code での複数行入力のため、Shift + Enter で改行シーケンスを送信
config.keys = {
{key="Enter", mods="SHIFT", action=wezterm.action{SendString="\x1b\r"}},
}
end
return MNeovim の設定ファイルを分割する手法とまったく同じです。
各モジュールからテーブル(上記例では M オブジェクト)を return し、メインファイルから require() で読み込むだけです。
別タブで何らかの出力があったことを知る
wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width)
local has_unseen_output = false
for _, pane in ipairs(tab.panes) do
if pane.has_unseen_output then
has_unseen_output = true
break
end
end
local title = tab.active_pane.title
if has_unseen_output then
title = title .. " 💡"
end
return title
end)
別のタブで何らかのバックグラウンド処理を実行していて、その処理結果が出力されたときにタブに電球アイコン 💡 を表示するようにしています。
WezTerm のタブの表示内容をカスタマイズするには、format-tab-title イベント をハンドルします。
タブバーの右端に現在時刻を表示する
wezterm.on('update-status', function(window, pane)
local time = wezterm.strftime("%H:%M:%S")
window:set_right_status("🕒" .. time)
end)
WezTerm 内で 1 秒おきに update-status イベント が呼び出されるので、このイベントハンドラーの中でタブバーの表示を更新しています。
set_right_status() で、タブバーの右端に任意のテキストを表示することができます。
WezTerm の設定楽しいなぁ ٩(๑❛ᴗ❛๑)۶