Files
dotfiles/wezterm/.wezterm.lua
T
Dmitry Dementiev ec66938ba3 feat(wezterm): добавлен общий конфиг для Windows и Linux
- Зачем:
  - требуется единообразное окружение терминала на обеих ОС.
- Что:
  - добавлен выбор локальной оболочки и меню запуска по платформе.
  - настроены JetBrains Mono и XWayland для корректной рамки окна в GNOME.
  - пакет WezTerm включён в установку через stow и описан в README.
- Проверка:
  - wezterm show-keys, bash -n install.sh и stow --simulate --restow wezterm.
2026-07-25 21:08:44 +03:00

84 lines
3.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
local wezterm = require 'wezterm'
local act = wezterm.action
local config = wezterm.config_builder()
config.enable_kitty_keyboard = false -- Так работает стабильнее.
local local_domain = { DomainName = 'local' }
local default_prog
local launch_menu
local is_windows = wezterm.target_triple:find 'windows'
if is_windows then
local function wsl(name) return { DomainName = 'WSL:' .. name } end
local pwsh = { 'pwsh.exe', '-NoLogo' }
default_prog = pwsh
launch_menu = {
{ label = 'PowerShell', domain = local_domain, args = pwsh },
{ label = 'Командная строка', domain = local_domain, args = { 'cmd.exe' } },
{ label = 'Ubuntu', domain = wsl 'Ubuntu' },
{ label = 'Ubuntu 24.04.1 LTS', domain = wsl 'Ubuntu-24.04' },
}
else
local shell = os.getenv 'SHELL' or '/bin/bash'
local shell_name = shell:match '([^/]+)$' or shell
shell_name = shell_name:sub(1, 1):upper() .. shell_name:sub(2)
default_prog = { shell, '-l' }
launch_menu = {
{ label = shell_name, domain = local_domain, args = default_prog },
}
end
config.default_domain = 'local'
config.default_prog = default_prog
config.launch_menu = launch_menu
-- В Wayland у WezTerm пока нет надёжной системной рамки окна в GNOME.
-- XWayland возвращает обычный заголовок с кнопками и перетаскиванием.
if not is_windows then
config.enable_wayland = false
end
config.scrollback_lines = 50000
config.color_scheme = 'Ubuntu'
-- Встроен в WezTerm и одинаково доступен на Windows и Linux.
config.font = wezterm.font 'JetBrains Mono'
config.font_size = 11.0
config.initial_cols = 120
config.initial_rows = 28
config.window_background_opacity = 1.0
config.window_decorations = 'TITLE|RESIZE'
config.hide_tab_bar_if_only_one_tab = true
config.freetype_load_target = 'HorizontalLcd'
config.freetype_render_target = 'HorizontalLcd'
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 = default_prog } },
{ 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