WezTermでマウスを使わずURLを開く
WezTerm だけで “マウスを使わず URL を開く” ― 実装メモ
TL;DR
QuickSelectArgsで URL をハイライト- 選択した URL を
wezterm.open_with()で既定ブラウザへ[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,
}
ポイント
| テクニック | 説明 |
|---|---|
| キャプチャグループ | QuickSelectArgs では 最初のグループ だけが選択対象。() の外側を無視できる。 |
[^)\\s,.;:]+ |
URL ではない文字列で早期にマッチを切る((), 空白, 句読点など)。 |
後処理 .gsub() |
想定外の終端記号が付いても削ぎ落とせる安全弁。 |
- キーテーブルへ割り当て
以下は Ctrl-y → o → 2文字タグ の流れで開く例。
-- leader = Ctrl+y … 既存設定に追記
config.keys = {
{ key = 'y', mods = 'CTRL',
action = act.ActivateKeyTable{ name = 'leader_option', one_shot = true } },
}
config.key_tables = {
leader_option = {
-- ……他のショートカット……
{ key = 'o', action = quick_open_url },
},
}
使い方
- ターミナルに URL が表示されている状態で Ctrl+y → o
- 画面全体が暗転し、マッチする URL が オレンジに光り “aa”, “ab”… など2文字タグが付く
- 開きたいリンクのタグ (aa など) をタイプ → 即既定ブラウザで開く 🎉