Как да настроим WezTerm за перфектен Linux workflow в WSL2

Как да настроим WezTerm за перфектен Linux workflow в WSL2

Споделям с вас как успях да създам истински Linux-подобно поведение в Windows, използвайки WezTerm и WSL2. След доста експерименти с Windows Terminal и AutoHotkey, намерих най-добрия начин за copy-paste с мишка точно като в Linux.

Защо WezTerm вместо Windows Terminal?

След като пробвах различни решения, включително AutoHotkey скриптове за Windows Terminal, открих, че WezTerm е най-добрият избор за Linux workflow в WSL2:

  • ✅ Нативна поддръжка на Linux mouse behavior
  • ✅ Автоматично copy-on-select (маркиране = копиране)
  • ✅ Middle-click paste (среден бутон = поставяне)
  • ✅ По-добра интеграция с WSL2
  • ✅ Много гъвкави настройки
  • ✅ Без нужда от външни скриптове

Стъпка 1: Инсталиране на WezTerm

Опция А: Winget (препоръчителен)

winget install wez.wezterm

Опция Б: От официалния сайт

  • Отидете на https://wezfurlong.org/wezterm/
  • Изтеглете Windows installer-а
  • Инсталирайте като обикновена програма

Стъпка 2: Създаване на конфигурационен файл

Важно: WezTerm не работи без правилно създаден конфигурационен файл!

В PowerShell изпълнете:

# Проверете дали файлът съществува
Test-Path "$env:USERPROFILE\.wezterm.lua"
# Трябва да върне True, ако файлът съществува

# Създайте файла
notepad "$env:USERPROFILE\.wezterm.lua"

В Notepad поставете този код:

local wezterm = require 'wezterm'
return {
  -- Шрифт и размер
  font = wezterm.font_with_fallback({
    "JetBrains Mono", 
    "Cascadia Code",
    "DejaVu Sans Mono"
  }),
  font_size = 15.0,
  line_height = 1.1,

   -- Размери на прозореца (по-широк, правоъгълен)
  initial_cols = 100,  -- Повече колони за по-широк прозорец
  initial_rows = 22,   -- По-малко редове за по-нисък прозорец

  -- WSL по дефолт
  default_prog = { "wsl.exe", "-d", "Ubuntu" },
  
  -- Copy-on-select поведение
  selection_word_boundary = " \t\n{}[]()\"'`,;:",
  
  -- Корекция на средния бутон - само при натискане (не при отпускане)
  mouse_bindings = {
    {
      event = { Down = { streak = 1, button = "Middle" } },
      mods = "NONE",
      action = wezterm.action.PasteFrom("Clipboard"),
    },
  },
  
  -- Клавишни комбинации
  keys = {
    { key = "c", mods = "CTRL|SHIFT", action = wezterm.action.CopyTo("Clipboard") },
    { key = "v", mods = "CTRL|SHIFT", action = wezterm.action.PasteFrom("Clipboard") },
    { key = "w", mods = "CTRL|SHIFT", action = wezterm.action.CloseCurrentTab { confirm = true } },
  },
  
  -- Визия
  color_scheme = "Catppuccin Mocha",
  
  window_background_opacity = 1.0,
  
  window_decorations = "TITLE | RESIZE",
  window_frame = {
    font_size = 14.0,
    active_titlebar_bg = "#1e1e2e",
    inactive_titlebar_bg = "#1e1e2e",
    
    button_fg = "#cdd6f4",
    button_bg = "#1e1e2e",
    button_hover_fg = "#cdd6f4",
    button_hover_bg = "#585b70",
  },

  window_padding = {
    left = 10,
    right = 10,
    top = 10,
    bottom = 5,
  },

  default_cursor_style = "BlinkingBar",
  cursor_blink_rate = 500,
  cursor_thickness = 2.0,

  enable_tab_bar = true,
  hide_tab_bar_if_only_one_tab = true,
  tab_bar_at_bottom = true,
  use_fancy_tab_bar = false,

  force_reverse_video_cursor = true,
  bold_brightens_ansi_colors = true,
}

Запазете файла с Ctrl + S.

Можете да експериментирате с цветови схеми като:

  • "Tokyo Night"
  • "Dracula"
  • "One Dark Pro"
  • "Material Ocean"
  • "Nord"

Всички тези схеми са достъпни по подразбиране в WezTerm.

Стъпка 3: Проверка и тестване

  1. Затворете WezTerm напълно (ако е отворен)
  2. Отворете WezTerm отново
  3. Трябва да се отвори директно в WSL2 с prompt: username@hostname ~ $

Проверете дали работи:

  • Маркирайте текст с мишката → трябва автоматично да се копира
  • Натиснете средния бутон на мишката → трябва да се постави
  • Проверете дали сте в правилната директория → трябва да сте в ~ не в /mnt/c/Users/...

Често срещани проблеми и решения

Проблем 1: Отварят се два прозореца

Причина: Windows Terminal и WezTerm се стартират едновременно. Решение:

  • Затворете Windows Terminal
  • Винаги стартирайте само WezTerm
  • Изключете Windows Terminal от Startup приложенията

Проблем 2: Стартира в CMD вместо WSL

Причина: Конфигурационният файл не се чете правилно. Решение:

# Проверете дали файлът съществува
Test-Path "$env:USERPROFILE\.wezterm.lua"
# Ако връща False, създайте файла отново

Проблем 3: Стартира в /mnt/c/Users/… вместо в home

Причина: Липсва --cd "~" параметърът. Решение: Уверете се, че имате:

default_prog = { "wsl.exe", "-d", "Ubuntu", "--cd", "~" },

Допълнителни настройки

Промяна на размера на шрифта:

Бързо (временно):

  • Ctrl + Plus → увеличава
  • Ctrl + Minus → намалява
  • Ctrl + 0 → връща по подразбиране

Постоянно: Променете в .wezterm.lua:

font_size = 14.0,  -- Желания размер

Създаване на keyboard shortcut:

  1. Десен клик на Desktop → New → Shortcut
  2. Target: wezterm-gui.exe
  3. Properties → Shortcut key: Ctrl + Alt + T

Други полезни настройки:

-- Прозрачност
window_background_opacity = 0.90,

-- Различна цветова схема
color_scheme = "Tokyo Night",

-- По-плътни редове
line_height = 0.9,

-- Blur ефект (ако се поддържа)
window_background_opacity = 0.95,

Backup и възстановяване

Бекъп на WSL2 :

wsl --export Ubuntu "D:\WSL_Backups\Ubuntu_Backup_$(Get-Date -Format yyyy-MM-dd).tar"

Бекъп на WezTerm конфигурация:

# Създайте директория за WezTerm бекъпи
New-Item -ItemType Directory -Path "D:\WSL_Backups\WezTerm" -Force

# Копирайте .wezterm.lua файла
Copy-Item "$env:USERPROFILE\.wezterm.lua" "D:\WSL_Backups\WezTerm\.wezterm.lua_$(Get-Date -Format yyyy-MM-dd)"

Комбиниран бекъп скрипт:

Създайте backup_wsl_wezterm.ps1:

# WSL + WezTerm Backup Script
$BackupDate = Get-Date -Format "yyyy-MM-dd"
$BackupDir = "D:\WSL_Backups"

# Създайте директории
New-Item -ItemType Directory -Path "$BackupDir\WSL" -Force
New-Item -ItemType Directory -Path "$BackupDir\WezTerm" -Force

# Бекъп на WSL2 Ubuntu
Write-Host "Бекъпване на WSL2 Ubuntu..." -ForegroundColor Green
wsl --export Ubuntu "$BackupDir\WSL\Ubuntu_Backup_$BackupDate.tar"

# Бекъп на WezTerm конфигурация
Write-Host "Бекъпване на WezTerm конфигурация..." -ForegroundColor Green
if (Test-Path "$env:USERPROFILE\.wezterm.lua") {
    Copy-Item "$env:USERPROFILE\.wezterm.lua" "$BackupDir\WezTerm\.wezterm.lua_$BackupDate"
    Write-Host "WezTerm конфигурацията е запазена." -ForegroundColor Yellow
} else {
    Write-Host "WezTerm конфигурационен файл не е намерен!" -ForegroundColor Red
}

Write-Host "Бекъпът завърши успешно в $BackupDir" -ForegroundColor Green

Възстановяване:

# WSL2
wsl --import Ubuntu C:\WSL\Ubuntu "D:\WSL_Backups\WSL\Ubuntu_Backup_2024-08-23.tar"

# WezTerm
Copy-Item "D:\WSL_Backups\WezTerm\.wezterm.lua_2024-08-23" "$env:USERPROFILE\.wezterm.lua"

Автоматизация (опционално):

Можете да създадете scheduled task за автоматичен бекъп веднъж седмично.

Съвет: Винаги бекъпвайте и двете заедно, защото са взаимно свързани!

Успех с вашия нов Linux-подобен терминал! 🐧✨

Заключение

С тази настройка получавате:

  • ✅ Истински Linux workflow в Windows
  • ✅ Copy-paste с мишка като в Ubuntu/Linux
  • ✅ Автоматично стартиране на WSL2
  • ✅ Красив и функционален терминал
  • ✅ Без нужда от AutoHotkey или други hack-ове

WezTerm се оказа най-доброто решение за интеграция между Windows и WSL2. За разлика от Windows Terminal, който изисква допълнителни скриптове и хакове, WezTerm нативно поддържа всичко необходимо за Linux workflow.

Съвет: Запазете си backup на .wezterm.lua файла, защото при преинсталиране на Windows ще трябва да го възстановите.

Успех с вашия нов Linux-подобен терминал! 🐧✨


Статията е базирана на реален опит с настройване на WezTerm за WSL2 workflow в Windows 11.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: