Category: WezTerm

WezTermでマウスを使わずURLを開く

WezTerm だけで “マウスを使わず URL を開く” ― 実装メモ

TL;DR

  1. QuickSelectArgs で URL をハイライト
  2. 選択した URL を wezterm.open_with() で既定ブラウザへ
  3. [title](https://example.com)) を含めない ように正規表現を工夫

背景

WezTerm はデフォルトで Ctrl/Cmd + クリック するとリンクをブラウザで開けます。
しかし “手をキーボードから離したくない派” にはマウス操作すら面倒。

目標

  • キー操作 だけで画面上の URL を一覧表示
  • 選択した URL を即ブラウザで開く
  • Markdown の [text](URL) にも対応し、末尾の ) を除外

実装ステップ

1. コールバック関数

local wezterm = require 'wezterm'
local act     = wezterm.action

-- 選択したテキスト (= URL) を既定ブラウザで開く
local open_selected_url = wezterm.action_callback(function(win, pane)
  local url = win:get_selection_text_for_pane(pane)
      :gsub('[).,;:]+$', '')     -- 末尾の「),.;:」を念のため除去
  if url ~= '' then
    wezterm.open_with(url)
  else
    wezterm.log_info('No URL selected')
  end
end)

Quick Select のパターン定義

-- Markdown・普通の URL・file://・IP:PORT
local quick_open_url = act.QuickSelectArgs{
  label = 'open url',
  patterns = {
    -- [text](https://example.com/aaa) → () 内の URL だけキャプチャ
    '\\[.*?\\]\\((https?://[^)\\s]+)\\)',

    -- 文末括弧を拾わない汎用 https://URL
    'https?://[^)\\s,.;:]+',

    -- file:// パス
    'file://\\S+',

    -- 192.168.0.10:8000 形式
    '\\b%d+%.%d+%.%d+%.%d+:%d+\\b',
  },
  action = open_selected_url,
}

ポイント

Read more...

WezTerm関連

WezTermを使い始めた背景

  • sixel対応があり、タブ機能がある。

    • Tmuxもsixel対応が徐々に始まっているが正式にリリースされていない(2023/12時点)
    • Tmuxの機能を満たしていこうとしているように見える(が、もちろん併用もできる)
  • ドキュメントが充実している

    • とはいえLuaでカスタマイズできる範囲が広いので、自分で試す部分はある
  • フォントの指定が柔軟にできる

  • Windows、macOS、Linuxに対応している

    • 設定をまとめることができる

OSごとに設定を変える

wezterm.target_triple - Wez’s Terminal Emulator

キーテーブルを固定する機能がある。

例えばペインのサイズを変更する場合、私はHJKLのキーでサイズ調整している。 ペインのサイズを変更するたびに「ctrl + shift + h」を繰り返したりしている。 が、一度、リーダーキーを押してキーテーブルに入ったら、連続して「h」を押すだけで、サイズを調整できたりすると連続してサイズ調整できるので嬉しい。

WezTermに移行してみている

one_shot=false とするとモードに入ったかのようにできるので嬉しい。

{ key = 'y', mods = 'CTRL', action = wezterm.action.ActivateKeyTable { name = 'leader_option', one_shot = false } },

素敵な機能なのは間違いがない。ただ私個人の問題としてprefixキーがそろそろ使い切るというか、モードに入るためのキーバイドって悩ましい。

  • 私がprefix使いすぎている

    • WezTerm(ctrl + y)
    • Tmux用2つ(ctrl + t, ctrl + b)
  • モードの切り替えはWezTermとTmuxで共通にしたい。が、Tmux側で一つのセッション内でprefixを異なるものに設定する方法が分からない

    • Tmuxのペイン作成は ctrl + t、サイズ調整は ctrl + p とかにしたい、がTmux用の設定がわからず

という訳で使いこなせてない。

私が使っているカラースキーム

一時期は穏やかなカラースキームを使っていたのだけど、ターミナルを透過する設定で使い出すと見えづらくなったので、コントラストが強いカラースキームを使うようになった。

https://wezfurlong.org/wezterm/colorschemes/n/index.html#neobones_light

個人的なTodo

ハイパーリンクの正規表現を設定する

Hyperlinks - Wez’s Terminal Emulator

Read more...