きっかけ
私はこれまで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からWezTerm
のAPIにアクセスしなければならないので以下を先頭に書き込みます。
設定は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
最後に設定を格納したテーブルconfig
をWezTerm
側に送るためにファイルの最後の行に
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には移行せず、まだ両方とも使うということになりそうです。