Skip to content

WezTermタブを整理する:Luaで実現した見やすい設定集

本記事はVim駅伝2026-03-13の投稿です。
前回の記事はmikoto2000さんによるローカル LLM でコード補完する Vim プラグインを作ったでした。

はじめに

WezTermを使い始めてから、タブをたくさん開くようになりました。しかし、どのタブがどのディレクトリで、どのタブがどのサーバーに繋がっているのか、ぱっと見では判別しづらい状況になりがちでした。

そこで、Luaで書けるWezTermの設定ファイルを使って、タブバーを見やすくカスタマイズしました。

WezTermのタブ操作について、タブの見た目・タイトル表示・SSH色分け・キーバインドの4つの観点で書いていきます。

タブバーの見た目を整える

最初にタブバーを何も設定していない時の状態を見てください。

Claudeが影分身の術を使っていて何が何だかわかりません。且つ、自分がどのディレクトリでタブを開いているのかローカルなのかstgなのか本番なのか、どこにいるのかわかりません。

常にタブバーを表示する

WezTermはタブが1つのときにタブバーを隠すのがデフォルトです。まぁコレは好みの範囲でしょう。


config.hide_tab_bar_if_only_one_tab = false
config.use_fancy_tab_bar = true

アクティブタブを目立たせる

アクティブタブと非アクティブタブに差をつけることで、今どこにいるかがすぐわかります。


active_tab = {
  bg_color = '#7aa2f7',  -- 青
  fg_color = '#1a1b26',
  intensity = 'Bold',
},
inactive_tab = {
  bg_color = '#24283b',
  fg_color = '#565f89',
},

タブタイトルを工夫する

ディレクトリ名だけを表示する

フルパスをそのまま表示するとタブが横に長くなります。末尾のディレクトリ名だけを取り出すようにしました。

添付画像を見てわかるようにClaudeが表示されるのではなく、どこで作業しているのかがすぐにわかります。

以下の図は、CWD URIからタブタイトルを決定する流れです。


flowchart TD
    A[CWD URIを取得] --> B[ホスト名を抽出]
    B --> C{リモートホスト?}
    C -->|No| D[ホームディレクトリを~に短縮]
    C -->|Yes| E[リモートフラグをONにする]
    D --> F[末尾のディレクトリ名を取得]
    E --> F
    F --> G[タブタイトルとして使用]

ポイントは2つあります。まず、ローカル環境ではホームディレクトリのパスを ~ に短縮します。次に、[^/]+$ というパターンで末尾のディレクトリ名だけを取り出します。


path = path:gsub('^' .. home, '~')
return path:match('[^/]+$') or path, is_remote

これにより、/Users/hogehoge/fugafuga/dotfilesdotfiles と表示されます。

タブ番号も一緒に表示する

タブタイトルには番号も付けています。Cmd + 数字 でのジャンプに迷いがなくなります。


local title = string.format(' %d: %s ', n, dirname)

環境ごとにタブを色分けする

複数のサーバーに接続しながら作業する場合、タブの色だけで「今どのサーバーか」がわかると非常に便利です。

本番環境は赤にすることで下手なことしないように注意できます。

以下の図は、タブの色を決定するロジックです。


flowchart TD
    A[format-tab-titleイベント] --> B{WEZTERM_ENV変数の通知あり?}
    B -->|Yes| C[local.luaで定義した環境ラベルの色を適用]
    B -->|No| D{CWD URIがリモートホスト?}
    D -->|Yes| E[パープル系で表示]
    D -->|No| F[デフォルトのタイトルを返す]

シェルからの通知で色を変える

SSH接続時に、シェルスクリプト側で WEZTERM_ENV というユーザー変数を通知します。WezTermはそれを受け取って、事前に local.lua に設定した色でタブを塗り分けます。


wezterm.on('user-var-changed', function(_, pane, name, value)
  if name ~= 'WEZTERM_ENV' then return end
  pane_env[pane:pane_id()] = value ~= '' and value or nil
  local win = pane:window()
  if win then win:set_config_overrides({}) end
end)

キーバインド

タブの見た目を整えたあとは、操作性も合わせて整備しました。

操作 キー
新規タブを開く Cmd + T
タブを切り替える Ctrl + ← / →
タブを並び替える Cmd + Shift + ← / →
番号でタブに飛ぶ Cmd + 1〜5

終わりに

WezTermのタブバーは、設定次第で見やすさと使いやすさが大きく変わります。この記事でご紹介した工夫を導入してから、複数タブや複数サーバーを同時に扱う場面でも効率よく作業ができるようになりました。

タブタイトルの整理、SSH環境の色分け、キーバインドの整備は、どれも小さな変更です。積み重なることで毎日の作業効率に効いてきます。

では、快適なターミナルライフをお過ごしください🚀

コメントを残す