ノートPCのLubuntu用にWezTermを設定する
はじめに
私は、仕事ではMacOSを使用し、プライベートではLubuntu24を使用しています。
MacOSではiterm2を使用していたのですが、WezTermの存在を知ってから、MacOSとLubuntuでWezTermを利用しています。
Lubuntu環境のtmuxやemacsで画面分割したときに、縦線が崩れなかったのが採用の決め手ですが、テキストベースの設定ファイルでカスタマイズでき、MacOSとLubuntuで設定ファイルを共有できるところも気に入っています。
WezTermの詳細は下記を参照してください。
私はtmuxが好きなので、WezTerm+tmuxをノートPCの小さい画面で利用することを前提にカスタマイズしています。見た目は下図のような感じです。(WezTerm+tmux)
この記事では、私のWezTermの設定ファイルを紹介します。そして、その設定の意味や用途について、ChatGPTに聞いた内容をベースにして説明していきます。
WezTermの設定
WezTermは柔軟で強力なターミナルエミュレータで、設定ファイルを通じてさまざまなカスタマイズが可能です。私の設定ファイルでは、フォント、テーマ、IME、ウィンドウの外観、背景画像などのカスタマイズを行っています。
設定ファイル全体は以下のとおりです。
~/.config/wezterm/wezterm.lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.automatically_reload_config = true
config.font_size = 11.0
config.font = wezterm.font("DroidSansM Nerd Font", {weight="Regular", stretch="Normal", style="Normal"})
config.font = wezterm.font_with_fallback({
{ family = "Source Han Code JP" }
})
config.use_ime = true
config.window_background_opacity = 0.8
config.macos_window_background_blur = 20
-- config.window_decorations = "RESIZE"
config.show_tabs_in_tab_bar = false
config.hide_tab_bar_if_only_one_tab = true
config.color_scheme = "iTerm2 Tango Dark"
-- 最初から最大化で起動
local mux = wezterm.mux
wezterm.on("gui-startup", function()
local tab, pane, window = mux.spawn_window{}
window:gui_window():maximize()
end)
-- 最初からフルスクリーンで起動
-- local mux = wezterm.mux
-- wezterm.on("gui-startup", function(cmd)
-- local tab, pane, window = mux.spawn_window(cmd or {})
-- window:gui_window():toggle_fullscreen()
-- end)
-- backgound
config.background = {
{
source = {
File = '/demo/sample/wall.jpg'
},
hsb = { brightness = 0.06 },
opacity = 0.9,
attachment = { Parallax = 0.5 },
horizontal_offset = 0,
vertical_offset = 0
}
}
return config
この設定内容を分解して、説明していきます。
1. 基本設定のロード
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
-
local wezterm = require 'wezterm'
WezTermのLua APIを利用するためのモジュールをロードしています。 -
local config = wezterm.config_builder()
設定オブジェクトを生成します。このオブジェクトにプロパティを設定していきます。
2. 設定を自動的にリロード
config.automatically_reload_config = true
- 設定ファイルを保存すると自動的にリロードされるようにします。開発や調整を効率的に行うために便利です。
3. フォントの設定
config.font_size = 11.0
config.font = wezterm.font("DroidSansM Nerd Font", {weight="Regular", stretch="Normal", style="Normal"})
config.font = wezterm.font_with_fallback({
{ family = "Source Han Code JP" }
})
-
フォントサイズ
config.font_size = 11.0
でフォントサイズを設定します。 -
フォント指定
最初にDroidSansM Nerd Font
を指定していますが、その後にwezterm.font_with_fallback
でSource Han Code JP
(源ノ角ゴシック)をフォールバックフォントとして設定しています。
font_with_fallback
は、指定したフォントがない場合や特定の文字が欠けている場合に、代替フォントを使用する設定です。日本語や特殊記号の表示を正確に行うのに役立ちます。Lubuntuの場合、WezTtermのデフォルトだと日本語表示がいまいちなので、フォントを指定しています。
NerdFontのインストールはGitHubのREADMEを参照して実施しました。Souce Han Code JPは、GitHubから、SourceHanCodeJP.ttc
をダウンロードして、~/.fonts
に配置しています。
4. IME(日本語入力)対応
config.use_ime = true
- IME(Input Method Editor)を有効化して、日本語などの入力を可能にします。
- 私のLubuntu環境だと、たまに、IMEが使えないことがあります。(原因は追求していません)そのときは、ウィンドウをクローズして、開き直せばIMEが使えるようになります。
5. ウィンドウの外観設定
config.window_background_opacity = 0.8
config.macos_window_background_blur = 20
config.show_tabs_in_tab_bar = false
config.hide_tab_bar_if_only_one_tab = true
-
背景の透明度
config.window_background_opacity = 0.8
で背景の透明度を設定します。値は0(完全透明)から1(不透明)です。 -
Macの背景ぼかし効果
config.macos_window_background_blur = 20
で背景のぼかし効果を有効にします。macOS特有のビジュアル改善です。 -
タブバーの表示設定
私はtmuxを使用しているので、タブを使いません。タブバーを非表示にしています。-
config.show_tabs_in_tab_bar = false
:タブ名をタブバーに表示しない。 -
config.hide_tab_bar_if_only_one_tab = true
:タブが1つだけの場合にタブバーを隠す。
-
6. カラースキームの設定
config.color_scheme = "iTerm2 Tango Dark"
-
カラースキームの指定
iTerm2 Tango Dark
というダークテーマを使用しています。落ち着いた配色で視認性が高いのが特徴です。
7. ウィンドウの最大化設定
local mux = wezterm.mux
wezterm.on("gui-startup", function()
local tab, pane, window = mux.spawn_window{}
window:gui_window():maximize()
end)
-
起動時にウィンドウを最大化
WezTerm起動時にウィンドウを自動的に最大化する設定です。mux.spawn_window{}
で新しいウィンドウを生成し、window:gui_window():maximize()
で最大化を適用しています。
私はノートPCの小さい画面でWezTerm+tmuxを使用するので、いつもフルスクリーンのウィンドウを1つだけで作業しています。
8. 背景画像の設定
config.background = {
{
source = {
File = '/home/blue21/workspace/images/demo.jpg'
},
hsb = { brightness = 0.02 },
opacity = 1.0,
attachment = { Parallax = 0.5 },
horizontal_offset = 0,
vertical_offset = 0
}
}
-
背景画像のパス
source.File
で画像ファイルのパスを指定しています。 -
明るさ調整
hsb.brightness = 0.02
で背景画像の明るさを低く設定。ターミナルのテキストが見やすくなります。 -
透明度
opacity = 1.0
で画像の透明度を設定。 -
視差効果
attachment = { Parallax = 0.5 }
で視差効果(Parallax)を有効化。ウィンドウの移動に応じて背景が少し遅れて動く、動的な演出が加わります。
Discussion