
Terminal là nơi dành nhiều thời gian nhất của developer. Một terminal emulator nhanh, nhẹ, và có khả năng tùy biến cao sẽ nâng cao năng suất đáng kể. Ba cái tên hàng đầu hiện nay: Alacritty, Kitty, và WezTerm. Cả ba đều viết bằng Rust (trừ Kitty có Python), dùng GPU acceleration, nhưng triết lý thiết kế hoàn toàn khác nhau.
Tại sao cần terminal hiện đại?
Terminal truyền thống (gnome-terminal, Konsole, Windows CMD) dùng CPU rendering, chậm khi scroll file lớn, không hỗ trợ UTF-8 complex glyphs, và thiếu GPU acceleration. Trong khi đó, các terminal hiện đại sử dụng GPU rendering (Vulkan, Metal, DirectX 12) để đạt hiệu năng vượt trội, hỗ trợ hiển thị emoji, ligature font, và hình ảnh inline.
Tổng quan nhanh
| Đặc điểm | Alacritty | Kitty | WezTerm |
|---|---|---|---|
| Ngôn ngữ | Rust | Python + C (renderer Rust) | Rust |
| Cấu hình | YAML (alacritty.yml) | INI-like (kitty.conf) | Lua (wezterm.lua) |
| GPU Rendering | wgpu (Vulkan/Metal/DX12) | OpenGL | wgpu (Vulkan/Metal/DX12) |
| Tabs/Panes tích hợp | Không (cần tmux) | Có sẵn, native tabs | Có sẵn, GUI tabs |
| Scrollback search | Không | Có sẵn | Có sẵn, regex |
| Ligature hỗ trợ | Có | Có | Có |
| Image/Graphics protocol | Không | Kitty graphics protocol | Kitty + iTerm2 + Sixel |
| Plugin/Extension | Không (minimal) | Kitten framework | Lua API đầy đủ |
| Cross-platform | Linux/macOS | Linux/macOS/BSD | Linux/macOS/Windows |
| License | MIT | GPLv2 | MIT |
Alacritty: Tối giản, nhanh nhất, không phụ thuộc
Alacritty lấy triết lý “làm một việc và làm tốt”: render text cực nhanh qua GPU. Không có tabs, panes, scrollback search hay image protocol — mọi thứ đó giao cho tmux, zellij, hoặc multiplexer bên ngoài. Đây là lựa chọn cho người tin rằng terminal chỉ nên hiển thị text.
- Ưu điểm: Khởi động nhanh nhất (dưới 10ms), tiêu tốn RAM thấp nhất (~25MB idle), cấu hình YAML đơn giản và rõ ràng, ổn định cực cao, ít bug nhất vì codebase nhỏ nhất.
- Nhược điểm: Cần tmux/zellij cho tabs/panes, không hiển thị hình ảnh inline, không có scrollback search tích hợp, không hỗ trợ tabs trên macOS (cần bản fork).
- Phù hợp: Người dùng tmux/zellij power user, thích tối giản triệt để, muốn hiệu năng tối đa, không cần features phức tạp.
Alacritty được phát triển bởi Joe Wilm và cộng đồng, lần đầu ra mắt 2017. Codebase khoảng 30.000 dòng Rust — nhỏ gọn nhưng cực kỳ hiệu quả.
Kitty: Đầy đủ tính năng, scriptable bằng Python
Kitty đi đường “batteries included”: tabs, panes, scrollback search, image protocol, GPU rendering — tất cả built-in. Cấu hình kiểu INI (kitty.conf), có thể script bằng Python qua framework kitten. Kitten là plugin system độc đáo: mỗi kitten là một script Python có thể extend Kitty chức năng.
- Ưu điểm: Hỗ trợ hình ảnh inline (kitty graphics protocol — cho phép chạy lệnh như
kitty +kitten icatđể xem ảnh), tabs/panes gốc không cần tmux, scriptable mạnh mẽ qua Python, remote control qua unix socket, tốt nhất cho Linux. - Nhược điểm: Khởi động chậm hơn Alacritty/WezTerm (do Python runtime), cấu hình INI ít linh hoạt hơn Lua, phụ thuộc OpenGL (không hỗ trợ Wayland tốt trên một số distro), GPL license (không thích hợp cho đóng gói phân phối).
- Phù hợp: Cần image protocol (xem ảnh terminal, preview file bằng ranger/lossless), muốn tích hợp sẵn mà không cần tmux, thích script Python.
Kitty do Kovid Goyal phát triển — cùng người tạo Calibre ebook manager. Ra mắt 2017, cộng đồng rất tích cực.
WezTerm: Cân bằng hoàn hảo, cấu hình Lua mạnh mẽ
WezTerm kết hợp tốt nhất của hai thế giới: hiệu năng Rust/wgpu như Alacritty, nhưng có tabs/panes/image protocol như Kitty. Cấu hình bằng Lua — ngôn ngữ nhúng phổ biến, cực kỳ linh hoạt, hỗ trợ cả async.
- Ưu điểm: Hiệu năng gần Alacritty (wgpu), tabs/panes/image protocol built-in, cấu hình Lua đầy đủ (có thể viết logic phức tạp, gọi API async), hỗ trợ đa protocol (Sixel, iTerm2 inline images, Kitty graphics), cross-platform tốt nhất (Windows/macOS/Linux hỗ trợ đồng nhất).
- Nhược điểm: Cấu hình Lua có learning curve cho người không biết Lua, file config có thể lớn hơn, tài liệu ít chi tiết hơn Kitty, đôi khi behavior khác nhau giữa các platform.
- Phù hợp: Muốn “cài xong dùng ngay” với tabs/panes/images, thích Lua (giống Neovim config), cần cross-platform nhất quán giữa Windows/Linux/macOS.
WezTerm được George Makrydakis tạo ra, mã nguồn mở trên GitHub. Gaining popularity nhanh chóng 2022-2024 nhờ sự cân bằng giữa tính năng và hiệu năng.
So sánh hiệu năng thực tế
| Benchmark | Alacritty | Kitty | WezTerm |
|---|---|---|---|
| Khởi động (cold start) | ~8ms | ~35ms | ~15ms |
| RAM idle | ~25MB | ~50MB | ~35MB |
| Throughput (cat 100MB file) | Excellent | Good | Excellent |
| Input latency (keypress to display) | <1ms | <1ms | <1ms |
| GPU usage idle | Low | Medium | Low-Medium |
| Unicode/emoji rendering | Good | Excellent | Excellent |
Cả ba terminal đều nhanh hơn hẳn terminal truyền thống. Trong sử dụng thực tế, khác biệt hiệu năng giữa WezTerm và Alacritty rất nhỏ. Kitty chậm hơn do Python overhead nhưng vẫn vượt trội so với gnome-terminal hay Konsole.
Ligature fonts và font programming
Cả ba hỗ trợ lập trình font: Fira Code, JetBrains Mono, Hasklig, Cascadia Code — hiển thị => thay vì ->, != thay vì -/. Đây là tính năng rất hữu ích cho lập trình viên.
Cài đặt nhanh trên Linux/macOS
# Alacritty
sudo pacman -S alacritty # Arch Linux
sudo apt install alacritty # Ubuntu/Debian
brew install --cask alacritty # macOS
# Kitty
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
# Sau đó chạy kitty +kitten ssh để dùng SSH tích hợp
# WezTerm
sudo pacman -S wezterm # Arch Linux
brew install --cask wezterm # macOS
winget install WezTerm.WezTerm # Windows
Tôi nên chọn cái nào?
- Chọn Alacritty nếu bạn đã dùng tmux/zellij, muốn hiệu năng tối đa, cấu hình tối giản, không cần tabs/panes trong terminal.
- Chọn Kitty nếu cần image protocol (xem ảnh trong terminal, preview file), muốn script Python, thích tabs/panes built-in không cần tmux, dùng Linux chủ yếu.
- Chọn WezTerm nếu muốn cân bằng tốt nhất: hiệu năng cao, tabs/panes/images built-in, cấu hình Lua linh hoạt, cross-platform nhất quán — khuyên dùng cho đa số developer.
Ba terminal này đều tốt hơn hẳn terminal mặc định của hệ điều hành. Hãy thử từng cái trong một tuần để tìm ra cái phù hợp workflow nhất. Một tip: cấu hình terminal bằng file (không dùng GUI settings) để version control và sync qua dotfiles.


Nguồn tham khảo: WezTerm Official Documentation
