🎃

ノートPCのLubuntu用にWezTermを設定する

2025/01/06に公開

はじめに

私は、仕事では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_fallbackSource 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