これまでmacOSのデフォルトターミナルを使ってきましたが、最近ウィンドウを分割をしたいと思いました。
そこで、話題のWezTermというターミナルエミュレータに切り替えてみました。
1. WezTermとは
WezTermは、GPUアクセラレーションを活用した高速なターミナルエミュレータです1。
クロスプラットフォーム対応で、Windows、macOS、Linuxで同じ設定を使えます。


特徴的なのは、設定ファイルにLuaというプログラミング言語を使う点です2。これにより、柔軟なカスタマイズが可能になっています。
1.1. Homebrewでインストール
WezTermのインストールは、Homebrewを使うと簡単です3。ターミナルで次のコマンドを実行しました。
brew install --cask wezterm

--caskは、GUIアプリケーションをインストールするときに使うオプションです。数分でインストールが完了しました。
2. 基本的な使い方を試す
Launchpadから「WezTerm」を起動すると、すぐに使える状態で立ち上がります。
見た目は、最初はデフォルトターミナルとほとんど変わりません。

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

- 水平に分割するには
^⌥⇧5を押します4。 - 垂直分割は
^⌥⇧~です。
デフォルトターミナルでは、tmuxをインストールする必要がありましたが、WezTermではキーボードショートカット1つで済みます。
ペイン間の移動はCmd + Shift + 矢印キーです。
新しいタブを開くにはCmd + Tを使います。
これはデフォルトターミナルと同じです。
タブの切り替えはCmd + Shift + [とCmd + Shift + ]です。
こちらもブラウザと似た操作感で、すぐに慣れました。
2.1. リンクのクリック
ターミナルにURLが表示されたとき、Cmd + クリックでブラウザが開きます。
ファイルパスも同様にCmd + クリックで開けます。
エディタで開きたいファイルを素早く開けるので便利です。
3. 設定ファイルのカスタマイズ
WezTermの設定は、ホームディレクトリの.config/wezterm/wezterm.luaに記述します。
このファイルは最初は存在しないので、自分で作成する必要があります。
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による柔軟な設定も魅力的です。一方で、設定ファイルの編集に慣れる必要がある点は、人によってはハードルになるかもしれません。
- WezTermはOpenGLやWebGPUを使用したGPUアクセラレーション・レンダリングにより、CPU負荷を軽減し滑らかな描画を実現します – WezTerm公式ドキュメント – front_end
- Luaは軽量で組み込み可能なスクリプト言語で、WezTermでは設定の柔軟なカスタマイズとホットリロード(再起動不要の設定反映)を可能にしています – WezTerm公式サイト
- HomebrewはmacOS向けのパッケージ管理システムで、
--caskオプションはGUIアプリケーションをインストールする際に使用します – Homebrew公式サイト - WezTermのデフォルトキーバインドは公式ドキュメントに記載されており、キーバインドは設定ファイルで自由にカスタマイズ可能です – WezTerm Features
- True Colorは24ビットカラー(RGB各8ビット、合計1670万色)に対応することを指します。従来の256色パレットと比較して、より正確な色再現が可能です – WezTerm公式サイト
- GPUアクセラレーションやRustで実装された高機能な処理のため、デフォルトターミナルより多くのメモリを使用しますが、最近のMacであれば問題となる量ではありません – WezTerm GitHub
- WezTermはiTerm2画像プロトコルを実装しており、
wezterm imgcatコマンドでターミナル内に画像を表示できます。このプロトコルはiTerm2でも動作します – WezTerm imgcat Documentation - WezTermの設定ファイル(wezterm.lua)ではLuaの全機能が利用でき、動的な設定変更や自動化スクリプトの実装が可能です – WezTerm公式ドキュメント