Как да настроим 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: Проверка и тестване
- Затворете WezTerm напълно (ако е отворен)
- Отворете WezTerm отново
- Трябва да се отвори директно в 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:
- Десен клик на Desktop → New → Shortcut
- Target:
wezterm-gui.exe
- 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.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut