From 35d4114ba39cde8dc3c77e3f38e3c037a31bb090 Mon Sep 17 00:00:00 2001 From: Dmitriy Dementiev Date: Wed, 8 Jul 2026 18:59:25 +0300 Subject: [PATCH] =?UTF-8?q?feat(wezterm):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20Windows-=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20chezmoi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - нужен живой WezTerm-конфиг, который тиражируется через dotfiles на Windows. - Что: - добавлен репозиторный `wezterm/.wezterm.lua`. - добавлен chezmoi-шаблон для symlink `~/.wezterm.lua`. - README описывает Windows-настройку WezTerm. - Проверка: - git diff --check -- README.md chezmoi/.chezmoiignore chezmoi/symlink_dot_wezterm.lua.tmpl wezterm/.wezterm.lua. - проверено, что `~/.wezterm.lua` является SymbolicLink на `dotfiles\wezterm\.wezterm.lua`. --- README.md | 1 + chezmoi/.chezmoiignore | 1 + chezmoi/symlink_dot_wezterm.lua.tmpl | 1 + wezterm/.wezterm.lua | 71 ++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 chezmoi/symlink_dot_wezterm.lua.tmpl create mode 100644 wezterm/.wezterm.lua diff --git a/README.md b/README.md index 2f193df..75558f6 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр - **PowerShell 7 profile** — live-stub в `~/Documents/PowerShell/` загружает managed profile из `~/.config/powershell/profile.ps1` - **Git baseline** — `~/.gitconfig` с managed настройками, `~/.gitconfig.local` для персональных overrides - **Windows Terminal** — идемпотентный скрипт: PS7 по умолчанию, PS 5.1 как legacy, Azure Cloud Shell скрыт +- **WezTerm** — `~/.wezterm.lua` как живая ссылка на `wezterm/.wezterm.lua` в репозитории - **UTF-8** — `chcp 65001` + `Console.InputEncoding/OutputEncoding` только для pwsh 7, не для PS 5.1 - **Codex Proxy shortcut** — Start Menu ярлык для запуска Codex GUI с proxy-переменными - **Extension points** — `~/.config/powershell/profile.extra.ps1` и `profile.d/*.ps1` для локальных добавок diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore index 6cc1138..f9c2222 100644 --- a/chezmoi/.chezmoiignore +++ b/chezmoi/.chezmoiignore @@ -4,4 +4,5 @@ Documents/** dot_config/** dot_local/** dot_gitconfig +symlink_dot_wezterm.lua.tmpl {{ end }} diff --git a/chezmoi/symlink_dot_wezterm.lua.tmpl b/chezmoi/symlink_dot_wezterm.lua.tmpl new file mode 100644 index 0000000..82e6e3e --- /dev/null +++ b/chezmoi/symlink_dot_wezterm.lua.tmpl @@ -0,0 +1 @@ +{{ .chezmoi.sourceDir }}/../wezterm/.wezterm.lua \ No newline at end of file diff --git a/wezterm/.wezterm.lua b/wezterm/.wezterm.lua new file mode 100644 index 0000000..8c636d5 --- /dev/null +++ b/wezterm/.wezterm.lua @@ -0,0 +1,71 @@ +local wezterm = require 'wezterm' +local act = wezterm.action +local config = wezterm.config_builder() + +--config.key_map_preference = 'Physical' +--config.enable_kitty_keyboard = true +config.enable_kitty_keyboard = false -- так работает куда стабильнее +--config.enable_csi_u_key_encoding = false +--config.allow_win32_input_mode = false + +local local_domain = { DomainName = 'local' } +local function wsl(name) return { DomainName = 'WSL:' .. name } end + +local pwsh = { 'pwsh.exe', '-NoLogo' } +local cmd = { 'cmd.exe' } + +config.default_domain = 'local' +config.default_prog = pwsh + +config.scrollback_lines = 50000 + +config.color_scheme = 'Ubuntu' + +-- Ближе всего к Windows Terminal +config.font = wezterm.font 'Cascadia Mono' +config.font_size = 11.0 +-- Хороший современный вариант; WezTerm сам поставляется с JetBrains Mono +--config.font = wezterm.font 'JetBrains Mono' +--config.font_size = 11.0 +--config.line_height = 1.0 +--config.cell_width = 1.0 + +config.initial_cols = 120 +config.initial_rows = 28 + +config.window_background_opacity = 1.0 +config.hide_tab_bar_if_only_one_tab = true + +config.freetype_load_target = 'HorizontalLcd' +config.freetype_render_target = 'HorizontalLcd' + +config.launch_menu = { + { label = 'PowerShell', domain = local_domain, args = pwsh }, + { label = 'Командная строка', domain = local_domain, args = cmd }, + { label = 'Ubuntu', domain = wsl 'Ubuntu' }, + { label = 'Ubuntu 24.04.1 LTS', domain = wsl 'Ubuntu-24.04' }, +} + +config.keys = { + { key = 'phys:Space', mods = 'CTRL|SHIFT', action = act.ShowLauncherArgs { flags = 'LAUNCH_MENU_ITEMS|DOMAINS' } }, + { key = 'phys:V', mods = 'CTRL|SHIFT', action = act.PasteFrom 'Clipboard' }, + { key = 'phys:T', mods = 'CTRL|SHIFT', action = act.SpawnCommandInNewTab { domain = local_domain, args = pwsh } }, + + { key = 'phys:R', mods = 'CTRL|SHIFT|ALT', action = act.ResetTerminal }, + + -- Переключение на вкладку по номеру: Ctrl+Shift+1..9 + { key = 'phys:1', mods = 'CTRL|SHIFT', action = act.ActivateTab(0) }, + { key = 'phys:2', mods = 'CTRL|SHIFT', action = act.ActivateTab(1) }, + { key = 'phys:3', mods = 'CTRL|SHIFT', action = act.ActivateTab(2) }, + { key = 'phys:4', mods = 'CTRL|SHIFT', action = act.ActivateTab(3) }, + { key = 'phys:5', mods = 'CTRL|SHIFT', action = act.ActivateTab(4) }, + { key = 'phys:6', mods = 'CTRL|SHIFT', action = act.ActivateTab(5) }, + { key = 'phys:7', mods = 'CTRL|SHIFT', action = act.ActivateTab(6) }, + { key = 'phys:8', mods = 'CTRL|SHIFT', action = act.ActivateTab(7) }, + { key = 'phys:9', mods = 'CTRL|SHIFT', action = act.ActivateTab(-1) }, + + { key = 'phys:H', mods = 'CTRL|SHIFT|ALT', action = act.SplitHorizontal { domain = 'CurrentPaneDomain' } }, + { key = 'phys:V', mods = 'CTRL|SHIFT|ALT', action = act.SplitVertical { domain = 'CurrentPaneDomain' } }, +} + +return config \ No newline at end of file