Sau nhiều năm dùng tmux, mình vẫn nhớ cái cảm giác ngồi google “tmux split pane horizontally” mỗi lần cần tách màn hình. Keybinding mặc định Ctrl+b rồi %, rồi "… không thân thiện chút nào với người mới. Zellij sinh ra để giải quyết đúng cái đau đó.
Vấn đề thực tế với terminal multiplexer truyền thống
tmux là công cụ tốt, nhưng barrier to entry cao. Muốn dùng được phải học thuộc một bộ keybinding riêng, hiểu khái niệm session/window/pane, viết file ~/.tmux.conf từ đầu nếu muốn giao diện decent. Với người mới bắt đầu quản trị Linux, đây là overhead không cần thiết.
Zellij tiếp cận khác: mọi thao tác đều hiển thị trực tiếp trên statusbar phía dưới màn hình. Bạn thấy ngay mình đang ở mode nào, có thể làm gì tiếp theo. Không cần nhớ, không cần cheat sheet dán lên tường.
Về mặt kỹ thuật, Zellij viết bằng Rust — memory footprint nhỏ và không bị memory leak theo thời gian. Trên con server CentOS 7 cũ của công ty mình, sau nhiều tháng chạy liên tục, screen và tmux thường phình lên đáng kể. Zellij không có vấn đề đó.
Cài đặt Zellij trên Linux
Ubuntu / Debian
Zellij chưa có trong apt repository mặc định. Cách nhanh nhất là tải binary release:
VERSION=$(curl -s https://api.github.com/repos/zellij-org/zellij/releases/latest \
| grep '"tag_name"' | cut -d'"' -f4)
curl -L "https://github.com/zellij-org/zellij/releases/download/${VERSION}/zellij-x86_64-unknown-linux-musl.tar.gz" \
-o /tmp/zellij.tar.gz
tar xf /tmp/zellij.tar.gz -C /tmp
sudo mv /tmp/zellij /usr/local/bin/
zellij --version
Arch Linux / Manjaro
sudo pacman -S zellij
Fedora / RHEL / CentOS
Binary musl-linked chạy tốt trên CentOS 7 vì không phụ thuộc vào glibc version — đây là cách mình dùng trên server công ty:
curl -L https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz \
| tar xz -C /tmp
sudo mv /tmp/zellij /usr/local/bin/
Hoặc nếu đã có Rust toolchain:
cargo install zellij
Kiểm tra sau cài đặt
which zellij
zellij --version
# Output: zellij 0.41.x
Cấu hình Zellij chi tiết
File cấu hình
Zellij tìm config theo thứ tự ưu tiên:
- Biến môi trường
$ZELLIJ_CONFIG_FILE ~/.config/zellij/config.kdl- Built-in default
Dump config mặc định ra file để chỉnh sửa:
mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl
Config dùng format KDL — dễ đọc, không cần lo dấu ngoặc hay indent như JSON/YAML:
// ~/.config/zellij/config.kdl
theme "catppuccin-mocha"
// Tắt mouse mode nếu cần bôi đen text bằng terminal emulator
mouse_mode false
// Scroll buffer
scroll_buffer_size 10000
// Hiển thị viền và tên pane
pane_frames true
// Copy sang clipboard (Linux X11)
copy_command "xclip -selection clipboard"
// Wayland dùng: "wl-copy"
Layout — bố cục màn hình có thể lưu và tái sử dụng
Đây là điểm mạnh nhất của Zellij so với tmux. Layout định nghĩa bằng file KDL, load lại mỗi lần cần mà không phải setup thủ công:
mkdir -p ~/.config/zellij/layouts
// ~/.config/zellij/layouts/dev.kdl
layout {
pane size=1 borderless=true {
plugin location="zellij:tab-bar"
}
pane split_direction="vertical" {
pane split_direction="horizontal" {
pane {
name "editor"
command "nvim"
}
pane {
name "git"
size "30%"
}
}
pane {
name "server"
size "35%"
}
}
pane size=2 borderless=true {
plugin location="zellij:status-bar"
}
}
Khởi động với layout:
zellij --layout ~/.config/zellij/layouts/dev.kdl
Tùy chỉnh keybinding
Mặc định Zellij dùng Ctrl+p cho Pane mode, Ctrl+t cho Tab mode. Override nếu muốn thao tác nhanh hơn:
// Thêm vào config.kdl
keybinds {
normal {
// Tạo pane mới nhanh với Alt+n
bind "Alt n" { NewPane; }
// Đóng pane hiện tại
bind "Alt w" { CloseFocus; }
// Floating pane nhanh
bind "Alt f" { ToggleFloatingPanes; }
}
}
Themes
Xem danh sách themes có sẵn:
zellij setup --dump-themes | grep -E "^[a-z]"
Một số theme phổ biến: dracula, tokyo-night-dark, catppuccin-mocha, gruvbox-dark, nord. Chỉnh trong config.kdl:
theme "tokyo-night-dark"
Sử dụng thực tế và kiểm tra
Thao tác cơ bản hàng ngày
zellij # Mở session mới
zellij attach # Attach vào session đang chạy
zellij list-sessions # Xem danh sách sessions hiện có
zellij -s dev # Tạo session đặt tên "dev"
Các thao tác trong session — tất cả hiển thị trên statusbar, không cần nhớ:
- Tách pane dọc:
Ctrl+p→d - Tách pane ngang:
Ctrl+p→n - Di chuyển giữa pane:
Ctrl+p→ phím mũi tên - Resize pane:
Ctrl+n→ mũi tên - Tab mới:
Ctrl+t→n - Floating pane:
Ctrl+p→w - Detach session:
Ctrl+o→d
Floating pane — tính năng tmux không có
Floating pane là thứ mình dùng nhiều nhất. Đang ở giữa editor, cần chạy nhanh một lệnh mà không muốn mất context:
# Ctrl+p rồi nhấn w
# Một pane nổi xuất hiện giữa màn hình — chạy lệnh xong
# Nhấn Ctrl+p → w lại để ẩn đi, quay về editor
Không cần switch tab, không mất focus vào pane đang làm việc.
Kiểm tra session persistence
Use case quan trọng nhất khi làm việc trên remote server qua SSH:
# SSH vào server, mở Zellij
zellij -s main
# Chạy một long-running process
watch -n 2 df -h
# Detach: Ctrl+o → d
# Đóng terminal, SSH lại sau
# Attach lại — process vẫn đang chạy
zellij attach main
Tự động attach khi SSH
Thêm vào ~/.bashrc hoặc ~/.zshrc để tự vào Zellij mỗi lần SSH:
# Không chạy nếu đã trong Zellij session rồi
if [[ -z "$ZELLIJ" ]]; then
zellij attach -c main 2>/dev/null || zellij -s main
fi
Biến $ZELLIJ được set tự động khi đang trong session, nên đoạn này không bị loop vô hạn.
Kiểm tra resource usage
# Xem Zellij dùng bao nhiêu RAM
ps aux | grep zellij | grep -v grep
# Chi tiết hơn
pidof zellij | xargs -I{} cat /proc/{}/status | grep -E 'VmRSS|VmSize'
Trên server CentOS 7 của công ty mình — sau khi tối ưu khá nhiều để đạt performance mong muốn — chuyển từ screen sang Zellij giúp memory footprint giảm từ ~50MB xuống ~18MB cho cùng số lượng session đang mở. Khi server RAM 2GB chạy nhiều service, con số đó có ý nghĩa thực tế.
Zellij hay tmux — khi nào dùng cái nào
- Mới bắt đầu với terminal multiplexer: Zellij — học nhanh hơn, không cần cheat sheet
- Đã quen tmux, workflow đang ổn: Không cần chuyển vội
- Cần floating pane: Zellij thắng rõ
- Cần ecosystem plugin phong phú: tmux hiện vẫn lớn hơn
- Server cũ glibc thấp: Zellij binary musl chạy được, tmux đôi khi cần build từ source
Zellij đang phát triển nhanh — mỗi release đều có cải tiến đáng kể. Plugin system dùng WebAssembly còn non nhưng tiềm năng dài hạn lớn. Nếu đang setup môi trường làm việc từ đầu, đây là lựa chọn đáng thử.

