Fix menu mouse click, switch to native tab bar, simplify tab titles

- Alt+Left-click never reached our show-main-menu binding because
  WezTerm's own default mouse bindings already claim ALT+drag on a
  pane as the start of rectangular/block text selection, swallowing
  the click before our handler saw it. Rebound the menu trigger to
  Ctrl+Shift+Left-click, which isn't claimed by any default gesture,
  and updated the status bar hint text to match.
- use_fancy_tab_bar = true: the retro (lightweight) tab bar has no
  per-tab close button at all; the native/OS-style bar shows a
  hover close (x) button per tab and supports dragging a tab out of
  the strip to pop it into its own window (the closest native
  equivalent to an explicit "open in new window" button).
- format-tab-title now renders just the terminal/process name instead
  of "index: name [domain]" -- shorter titles leave the native tab
  bar's close button room to render, and per-host color-coding already
  conveys the domain without needing it spelled out in text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 01:16:32 +09:00
parent d87803f89e
commit daeec746b0

View File

@@ -37,7 +37,7 @@ config.window_padding = {
config.initial_cols = 140 config.initial_cols = 140
config.initial_rows = 40 config.initial_rows = 40
config.use_fancy_tab_bar = false -- true: OS 스타일 탭바 / false: 레트로(경량) 탭바 config.use_fancy_tab_bar = true -- OS 스타일 탭바: 탭에 마우스 올리면 닫기(x) 버튼이 보이고, 탭을 밖으로 드래그하면 새 창으로 분리됨
config.tab_bar_at_bottom = false -- 탭바/상태바를 터미널 상단에 표시 config.tab_bar_at_bottom = false -- 탭바/상태바를 터미널 상단에 표시
config.hide_tab_bar_if_only_one_tab = false -- 탭이 하나뿐이어도 탭바를 항상 표시 config.hide_tab_bar_if_only_one_tab = false -- 탭이 하나뿐이어도 탭바를 항상 표시
config.show_new_tab_button_in_tab_bar = true config.show_new_tab_button_in_tab_bar = true
@@ -72,7 +72,7 @@ wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_wid
name = tab.active_pane.title name = tab.active_pane.title
end end
local domain = tab.active_pane.domain_name or "local" local domain = tab.active_pane.domain_name or "local"
local title = string.format(" %d: %s [%s] ", tab.tab_index + 1, name, domain) local title = " " .. name .. " "
local accent = domain == "local" and "#6c7086" or color_for_host(domain) local accent = domain == "local" and "#6c7086" or color_for_host(domain)
if tab.is_active then if tab.is_active then
@@ -101,7 +101,7 @@ wezterm.on("update-right-status", function(window, pane)
{ Text = " ☰ Menu " }, { Text = " ☰ Menu " },
{ Background = { Color = "#313244" } }, { Background = { Color = "#313244" } },
{ Foreground = { Color = "#cdd6f4" } }, { Foreground = { Color = "#cdd6f4" } },
{ Text = " Alt+Click / Ctrl+a m " }, { Text = " Ctrl+Shift+Click / Ctrl+a m " },
})) }))
local pane_id = pane:pane_id() local pane_id = pane:pane_id()
@@ -776,8 +776,9 @@ config.mouse_bindings = {
action = act.PasteFrom("Clipboard"), action = act.PasteFrom("Clipboard"),
}, },
{ {
-- ALT+클릭은 wezterm 기본 사각형(블록) 선택 제스처와 충돌해서 동작하지 않음
event = { Up = { streak = 1, button = "Left" } }, event = { Up = { streak = 1, button = "Left" } },
mods = "ALT", mods = "CTRL|SHIFT",
action = act.EmitEvent("show-main-menu"), action = act.EmitEvent("show-main-menu"),
}, },
{ {