エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。

【WezTerm】透過をコマンドで切り替える

やりたいこと

常にターミナル背景を透過させていると文字が見づらいが、
たまにカンニングしながらターミナルでコマンドを打ちたいときがある。

そのためWezTermで、特定のコマンドを押すことにより背景の透過度を切り替えたい。

参考

実は公式ドキュメントにサンプルコードとして設定が記載されている。

Icon in a page linkset_config_overrides - Wez's Terminal Emulatoru

①透過度切り替え用の関数を作成

-- 透過切り替え
wezterm.on('toggle-opacity', function(window, pane)
  local overrides = window:get_config_overrides() or {}
  if not overrides.window_background_opacity then
    overrides.window_background_opacity = 0.8
  else
    overrides.window_background_opacity = nil
  end
  window:set_config_overrides(overrides)
end)
  • wezterm.on('toggle-opacity', 関数)で、 toggle-opacityという名前のイベントが発火したときに実行される関数を定義できる
  • window_background_opacity:背景の透過度を設定するプロパティ
  • 未指定(透過しない)場合は0.8で上書きし、指定(0.8が入っている)場合はnilで上書きしている
  • Icon in a page linkget_config_overrides - Wez's Terminal Emulator:現在のウィンドウの設定のコピーを返却する
  • Icon in a page linkset_config_overrides - Wez's Terminal Emulator:ウィンドウ設定を上書きする
  • Icon in a page linkwezterm.on - Wez's Terminal Emulator:イベントハンドラーを定義する

②キーマッピング追加

①で作成したイベントを特定のキーで発火できるようにする。

  keys = {
    { key = 'u', mods = 'SUPER', action = wezterm.action.EmitEvent 'toggle-opacity' },
  }

筆者は leaderキー + uで切り替えするように設定している。