WezTermを試してみる

本記事は以前はてなブログに投稿していた記事の内容を加筆修正して移行したものです。

きっかけ

筆者はこれまでGNU/Linuxのディスクトップ環境としてXfce4を使用してきて、特にこだわりを持っていなかったためXfce4標準のXfce terminalを使用してきました。

Xfce terminalは動作が軽快で、背景透過機能、タブ機能があり Alt + 数字keyでタブ移動ができたりと機能的には特に不満はありませんでした。

しかし、最近Qiita,Zenn等で"WezTermなるターミナルエミュレーターがいいぞ!“という記事を多く見まして気になったので試してみることにしました。 設定ファイルをLuaで書くことができて高機能でカスタマイズ性が高く、Rustで実装されています!

インストール

Arch Linuxでは、普通にpacmanでインストールできます。

1
sudo pacman -S wezterm

以前にインストールしたときはAURの方の末尾がgitのパッケージしか存在せず、インストール時にソースからビルドに時間するため時間を要していましたが、 今回はArch Linxのリポジトリからビルド済みのバイナリのインストールが可能でした。

設定

設定は$HOME/.wezterm.luaに記述するのですが、設定ファイルをGitで管理したいのでローカルリポジトリ内に.wezterm.luaを置き、 HOMEに対してシンボリックリンクを作ることにしました。

まずはじめに

まずはLuaからWezTermのAPIにアクセスしなければならないので以下を先頭に記述します。

  • .wezterm.lua
1
2
3
4
5
6
7
8
9
-- pull in the wezterm API
local wezterm = require 'wezterm'

-- this table will hold the configuration
local config = {}

if wezterm.config_builder then
    config = wezterm.config_builder()
end

設定は空のテーブルconfigを作成してから、

1
config.<field name> = <filed>

で設定していきます。

最後に設定を格納したテーブルであるconfigWezTerm側にから読めるようにするために末尾の行に

1
return config

としてconfigをreturnしてあげます。

背景色&背景透過

Xfce terminalでは先に述べたように背景透過、タブ移動のショートカットkeyを使っていたので今回は、これを設定をしました。

まずテーブルcolorを設定して色の設定をします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
-- custemize color scheme
config.colors = {
  -- Make the selection text color fully transparent.
  -- When fully transparent, the current text color will be used.
  selection_fg = 'none',
  -- Set the selection background color with alpha.
  -- When selection_bg is transparent, it will be alpha blended over
  -- the current cell background color, rather than replace it
  selection_bg = 'rgba(50% 50% 50% 50%)',
}

背景透過の設定では、透過率は、config.window_background_opacityで設定します。

1
2
-- transparent background
config.window_background_opacity = 0.79

自分の好みの見た目は0.79です。

タブ移動のキーバインド

次にタブ移動のキーバインドを設定します。

公式にタブ移動のkey設定の例があったのでこれを参考にしてAlt + 数字keyで移動できるように設定しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-- keybinding

config.keys = {}

-- move to n-1 th Tab: ALT + n  
local function move_nth_tab()
    for i = 1, 8, 1 do
        table.insert(config.keys, {
        key = tostring(i),
        mods = 'ALT',
        action = wezterm.action.ActivateTab(i - 1)
        })
    end
end
move_nth_tab()

カスタムキーを設定するにはまずconfigにテーブルkeyを格納します。 このkeyに各keyの設定を以下の書式のテーブルを格納します。

1
2
3
4
5
{
    key = <name of key>,
    mods = <name mod key>,
    action = <action> 
}

各フィールドの意味は以下の通りです。

  • key: 押すキーの名前を指定する文字列型の値
  • mods: SuperKey(Windowsで言うところのwindows key)やAlt keyを指定する文字列型の値
  • action: 一番目、二番目で指定したキーが押された時に動作する関数を指定します

二番のフィールドmodsで2つのキーを組み合わせたい場合(例:Shift + Ctrl)では2つの文字列を’SHIFT|CTRL’のように’|‘で区切って書きます。

デスクトップ環境との相性について

x11 + xfce4のデスクトップマシンでは、すぐには、インライン入力ができなかったのでFcitx5: リアルタイム入力(インライン入力)のための設定を参考にしてfcitx5の設定を行ったら問題なくインライン入力ができるようになりました。

一方、swayを使っているサブのASUSのラップトップでは日本語のインライン入力はできるが、IMEの候補がポップアップで表示されませんできました。 (追記@ 2025 12/29 現在では特に問題なくFcitx5による日本語入力ができています)。

実際に使ってみて

X11 + xfce4環境、Sway(Wayland)環境は両方とも日本語入力に多少の難があったので、すぐにWezTermには移行せず、まだ両方とも使うということになりそうです。 また、WezTermからneovimで開いてコードを編集しているときにCtrl + '+'でコードのインデントを整理しようとすると画面が拡大してしまう問題も解決できていません。 (追記@ 2025 12/29 現在ではコードフォーマットは mhartington/formatter.nvimで各プログラミング言語ごとに設定して:wでフォーマットされるように設定しているので特に問題ないです)

CC BY
Hugo で構築されています。
テーマ StackJimmy によって設計されています。