$ WezTermをmacOSで使ってみた

これまでmacOSのデフォルトターミナルを使ってきましたが、最近ウィンドウを分割をしたいと思いました。
そこで、話題のWezTermというターミナルエミュレータに切り替えてみました。

関連記事

1. WezTermとは

WezTermは、GPUアクセラレーションを活用した高速なターミナルエミュレータです1
クロスプラットフォーム対応で、Windows、macOS、Linuxで同じ設定を使えます。

WezTermとは GPUアクセラレーション・ターミナルエミュレータ 高速描画・柔軟な設定・クロスプラットフォーム対応 GPUアクセラレーションで 滑らか描画 Lua言語で 自由に設定 Win/Mac/ Linux対応

特徴的なのは、設定ファイルにLuaというプログラミング言語を使う点です2。これにより、柔軟なカスタマイズが可能になっています。

1.1. Homebrewでインストール

WezTermのインストールは、Homebrewを使うと簡単です3。ターミナルで次のコマンドを実行しました。

brew install --cask wezterm
1.1. Homebrewでインストール

--caskは、GUIアプリケーションをインストールするときに使うオプションです。数分でインストールが完了しました。

2. 基本的な使い方を試す

Launchpadから「WezTerm」を起動すると、すぐに使える状態で立ち上がります。
見た目は、最初はデフォルトターミナルとほとんど変わりません。

2. 基本的な使い方を試す

まず試したのは、ペイン分割機能です。

2. 基本的な使い方を試す
  • 水平に分割するには^⌥⇧5を押します4
  • 垂直分割は^⌥⇧~です。

デフォルトターミナルでは、tmuxをインストールする必要がありましたが、WezTermではキーボードショートカット1つで済みます。

ペイン間の移動はCmd + Shift + 矢印キーです。

新しいタブを開くにはCmd + Tを使います。
これはデフォルトターミナルと同じです。

タブの切り替えはCmd + Shift + [Cmd + Shift + ]です。
こちらもブラウザと似た操作感で、すぐに慣れました。

2.1. リンクのクリック

ターミナルにURLが表示されたとき、Cmd + クリックでブラウザが開きます。

ファイルパスも同様にCmd + クリックで開けます。
エディタで開きたいファイルを素早く開けるので便利です。

3. 設定ファイルのカスタマイズ

WezTermの設定は、ホームディレクトリの.config/wezterm/wezterm.luaに記述します。

設定ファイルのカスタマイズ ~/.config/wezterm/wezterm.lua Lua言語で柔軟に設定 主な設定項目 フォント 種類・サイズ font_size カラー テーマ選択 color_scheme 挙動 詳細調整 Lua script 保存後すぐに反映(再起動不要)

このファイルは最初は存在しないので、自分で作成する必要があります。

mkdir -p ~/.config/wezterm
touch ~/.config/wezterm/wezterm.lua
Code language: JavaScript (javascript)

エディタでwezterm.luaを開き、次のような設定を書きました。

local wezterm = require 'wezterm'

local config = {}

config.font_size = 14.0
config.color_scheme = 'Tokyo Night'
config.font = wezterm.font("Source Han Code JP", {weight="Regular", stretch="Normal", style="Normal"}) 
config.window_background_opacity = 0.85

return configCode language: JavaScript (javascript)

1行目は、WezTermのLuaモジュールを読み込んでいます。
これがないと、設定が機能しません。

3行目以降のreturnブロックが、実際の設定内容です。
設定ファイルを保存してWezTermを再起動すると、すぐに反映されました。

WezTermには、多くのカラースキームがあらかじめ用意されています。
公式サイトのカラーギャラリーで、実際の見た目を確認できます。

4. デフォルトターミナルとの違い

4.1. True Color対応

長いログを表示したとき、WezTermの方がスクロールが滑らかです。
大量のテキストを一気に出力する場面では、この差がはっきり分かります。

ただし、日本語を入力するとき、変換候補の表示位置が少しずれることがありました。
これは、WezTermが完全にmacOSのネイティブアプリではないことが原因かもしれません。

色の表現力が、デフォルトターミナルより高いです5。これを「True Color」対応と呼びます。

具体的には、デフォルトターミナルは256色までですが、WezTermは1670万色を扱えます。カラースキームの微妙なグラデーションが、より正確に表示されます。

ただし、問題になる量ではありませんが、デフォルトターミナルと比べると、メモリを多く使います6。私の環境では、起動時で約130MBでした。デフォルトターミナルは50MB程度です。

4.2. 画像表示機能

WezTermは、ターミナル内で画像を表示できます。iTerm2のimgcatプロトコルに対応しているためです7

実際に試してみると、グラフや図をターミナルで確認できて便利でした。ただし、日常的に使う機能ではないかもしれません。

4.3. 設定の柔軟性

Lua言語で設定を書けるため、条件分岐やループを使った複雑な設定も可能です8

例えば、「平日は明るいテーマ、週末は暗いテーマ」といった自動切り替えも実装できます。

ただし、デフォルトターミナルのように、GUIで設定を変更する画面はありません。すべてテキストファイルを編集する必要があります。

5. まとめ

WezTermを導入して、ターミナル作業の効率が上がりました。特に、ペイン分割機能はtmuxなしで使えるのが便利です。

GPUアクセラレーションによる滑らかな描画と、Luaによる柔軟な設定も魅力的です。一方で、設定ファイルの編集に慣れる必要がある点は、人によってはハードルになるかもしれません。

  1. WezTermはOpenGLやWebGPUを使用したGPUアクセラレーション・レンダリングにより、CPU負荷を軽減し滑らかな描画を実現します – WezTerm公式ドキュメント – front_end
  2. Luaは軽量で組み込み可能なスクリプト言語で、WezTermでは設定の柔軟なカスタマイズとホットリロード(再起動不要の設定反映)を可能にしています – WezTerm公式サイト
  3. HomebrewはmacOS向けのパッケージ管理システムで、--caskオプションはGUIアプリケーションをインストールする際に使用します – Homebrew公式サイト
  4. WezTermのデフォルトキーバインドは公式ドキュメントに記載されており、キーバインドは設定ファイルで自由にカスタマイズ可能です – WezTerm Features
  5. True Colorは24ビットカラー(RGB各8ビット、合計1670万色)に対応することを指します。従来の256色パレットと比較して、より正確な色再現が可能です – WezTerm公式サイト
  6. GPUアクセラレーションやRustで実装された高機能な処理のため、デフォルトターミナルより多くのメモリを使用しますが、最近のMacであれば問題となる量ではありません – WezTerm GitHub
  7. WezTermはiTerm2画像プロトコルを実装しており、wezterm imgcatコマンドでターミナル内に画像を表示できます。このプロトコルはiTerm2でも動作します – WezTerm imgcat Documentation
  8. WezTermの設定ファイル(wezterm.lua)ではLuaの全機能が利用でき、動的な設定変更や自動化スクリプトの実装が可能です – WezTerm公式ドキュメント