__aki_nikki__

分子分光学の研究をしている大学院生の日記です

WezTermを試してみる

きっかけ

私はこれまでGNU/Linuxディスクトップ環境としてXfce4を使用してきて、特にこだわりを持っていなかったためXfce4をインストールしたときに付いてくるXfce terminal を利用してきました。 Xfce terminalは軽くて背景透過できたり、タブ機能があり Alt + 数字keyでタブ移動ができたりで機能的には特に不満はありませんでした。

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

インストール

私の利用しているディストロはArch Linuxですので普通にpacmanでインストールできます。

$ sudo pacman -S wezterm

はじめインストールしたときはAURの方の末尾がgitのパッケージをインストールしてビルドに時間を要していましたが、Arch Linxのリポジトリからインストールが可能でした。

設定

設定はhomeディレクトリに.wezterm.luaを置きそこに書きこんでいくのですが、設定ファイルをGitで管理したいのでローカルリポジトリ内に.wezterm.luaを置き、homeディレクトリに対してシンボリックリンクを作ることにしました。 これから設定を見ていくことにします。

まずはじめに

まずはLuaからWezTermAPIにアクセスしなければならないので以下を先頭に書き込みます。 設定はLuaのテーブルのconfigに格納していくようにコードを書いていきます。

-- 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

最後に設定を格納したテーブルconfigWezTerm側に送るためにファイルの最後の行に

return config

configをreturnしてあげます。

こだわり

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

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

-- 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で設定するのでこれを設定します。

-- transparent background
config.window_background_opacity = 0.79

自分の好みは0.79です。

次にタブ移動のショートカットkeyを設定していきます。

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

-- 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()

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

{
    key = <name of key>,
    mods = <name mod key>,
    action = <action> 
}

最初のフィールドは押すkeyの名前を指定する文字列です。 二番目のフィールドはSuperKey(Windowsで言うところのwindows key)やAlt keyを指定する文字列です。

この二番のフィールドで2つのkeyを組み合わせたい場合(例:Shift + Ctrl)では2つの文字列を'SHIFT|CTRL'のように'|'で区切って書きます。 最後のフィールドは一番目、二番目で指定したkeyが押された時に動作する関数を指定します。

実際に使ってみて

X11でXfce4デスクトップ環境ではデフォルトでは日本語のインライン入力ができませんでしたがFcitxの設定をFcitx: リアルタイム入力(インライン入力)のための設定を参考に行ったところできるようになりました。

一方、Wayland環境であるswayの環境では、設定なしでインライン入力は出来ましたが、変換候補のポップアップは出ませんでした。 あと、WezTermからneovimで開いてコードを編集しているときにCtrl + '+'でコードのインデントを整理しようとすると画面が拡大してしまう問題も解決できていません。

このことから、すぐにWezTermには移行せず、まだ両方とも使うということになりそうです。