OmniPTY: Trình giả lập terminal viết bằng Rust, tích hợp sẵn tmux và file manager
OmniPTY là trình giả lập terminal gốc cho macOS và Linux, viết hoàn toàn bằng Rust, được thiết kế để thay thế một chồng công cụ cài thêm như tmux, file manager hay plugin copy-mode. Dự án render bằng GPU qua GPUI của Zed, dùng alacritty_terminal để mô phỏng VT, và cam kết không tài khoản, không AI, không telemetry.

Nếu ai từng dựng một môi trường làm việc trên terminal, hẳn đều quen với cảnh phải cài thêm đủ thứ: tmux để chia pane và quản lý session, một trình quản lý file ở khung bên cạnh, vài framework cho prompt, rồi thêm plugin copy-mode. OmniPTY ra đời nhằm gộp tất cả những thứ đó vào một chương trình duy nhất.
Huy hiệu phiên bản mới nhất của OmniPTY
Một terminal "tất cả trong một", viết bằng Rust
OmniPTY là trình giả lập terminal gốc cho macOS và Linux, viết hoàn toàn bằng Rust. Triết lý của dự án khá rõ ràng: những gì người dùng thường phải cài thêm thì nay được tích hợp sẵn.
- File tree drawer hoạt động theo kiểu điều hướng vim, bám theo lệnh
cdcủa shell ở pane đang focus. - Tab và split được nhóm thành các workspace có tên, có thể ghim lại để mở lần sau với đúng bố cục và thư mục.
- Copy mode đưa các phím vim lên vùng scrollback.
- Thanh trạng thái hiển thị nhánh git và biết khi nào bạn đang ở trong phiên ssh.
- Toàn bộ cấu hình nằm trong một file TOML duy nhất, tự nạp lại mỗi khi lưu.
Dưới nền, OmniPTY render bằng GPU trên GPUI (framework giao diện của Zed), với alacritty_terminal (bộ phân tích PTY + VT của Alacritty) đảm nhận phần mô phỏng. Nhờ vậy vim, htop và cả tmux vẫn chạy bình thường.
Điểm đáng chú ý với người dùng quan tâm quyền riêng tư: không tài khoản, không AI, không telemetry. Thứ duy nhất OmniPTY gửi lên mạng là yêu cầu kiểm tra xem có bản phát hành mới hay không.
Đổi tên từ Oxide
Dự án trước đây có tên là Oxide và chính thức đổi thành OmniPTY từ phiên bản 0.9.0, do trùng tên với một công ty khác. Người dùng đã cài đặt không cần làm gì phức tạp: trình cập nhật trong ứng dụng sẽ tự chuyển sang OmniPTY.app và giữ nguyên cấu hình, theme cùng các workspace đã ghim.
Với Homebrew, người dùng có thể chuyển sang cask mới bằng:
brew uninstall --cask --force oxide-terminal && brew install --cask --adopt omnipty-terminal/tap/omnipty
Các biến môi trường $OXIDE_SESSION và $OXIDE_VERSION vẫn được xuất trong suốt nhánh 0.9.x, nhưng người dùng nên chuyển dotfiles sang $OMNIPTY_SESSION và $OMNIPTY_VERSION.
Những tính năng nổi bật
Terminal thực thụ và ảnh nội tuyến
OmniPTY hỗ trợ mô phỏng VT đầy đủ: truecolor, ký tự rộng, bracketed paste, mouse reporting (SGR), cuộn alternate-screen, hyperlink OSC 8 và clipboard OSC 52.
Điểm đáng chú ý là ảnh nội tuyến, hỗ trợ giao thức kitty graphics, iTerm2 và sixel. Ảnh nằm trong scrollback giống như chữ — cuộn, reflow, xóa theo, và được vẽ ở đúng độ phân giải của màn hình.
Ảnh chụp giao diện chính của OmniPTY
Cây file và vùng giao thoa với terminal
Cây file tự bám theo pane đang focus, nên chuyển split là cây chuyển gốc sang thư mục của shell đó. Người dùng có thể:
- Điều hướng kiểu vim không cần chế độ (j/k/gg/G, h/l theo phong cách nvim-tree).
- Lọc bằng cách gõ, khởi đầu bằng
/. - Thao tác file: thêm, đổi tên, di chuyển, xóa vào Thùng rác — hoặc kéo thả một dòng vào thư mục.
- Làm mờ các file bị gitignore và theo dõi thay đổi trên filesystem.
Ở vùng tiếp giáp giữa cây và terminal, phím y chèn đường dẫn đang chọn vào prompt; cmd-click vào một đường dẫn dạng file:dòng:cột trong output sẽ mở file đó trong $EDITOR đúng vị trí. Các file .md có thể xem trước ngay trong tab hoặc split, hỗ trợ CommonMark và GitHub Markdown.
Nhận biết SSH và lệnh
OmniPTY theo dõi tiến trình foreground: một phiên ssh sẽ hiện ssh: host trên thanh trạng thái, và các mẫu trong [[ssh.hosts]] có thể gán màu viền cho từng host — chẳng hạn máy production có thể được tô đỏ để dễ nhận ra.
Nhờ đọc trực tiếp các marker OSC 133 từ PTY, terminal biết lệnh gì đang chạy, mất bao lâu và có thất bại hay không. Điều này cho phép hiện thời gian trên thanh trạng thái, chấm hoạt động trên tab, nhấp nháy đỏ ở pane nền bị lỗi, và gửi thông báo desktop cho các lệnh dài hoặc thất bại.
Giao diện và tuỳ biến
- Command palette (cmd-shift-p) liệt kê mọi thao tác kèm phím tắt, tìm kiếm mờ.
- 25 preset theme gồm catppuccin, gruvbox, tokyonight, dracula, nord, solarized và bộ Omarchy.
follow_system = truetự chuyển giữa preset sáng và tối theo giao diện hệ thống.- Bảng
[keymap]cho phép gán lại bất kỳ phím nào; nếu gõ sai sẽ có thông báo gợi ý. - Lỗi cấu hình hiện dưới dạng toast thay vì hộp thoại chặn màn hình.
Workspace kiểu tmux-session
Workspace là các bộ tab và split có tên, quản lý từ ngăn dưới cây file. Mặc định chúng chỉ tồn tại tạm thời, nhưng khi ghim thì sẽ sống qua lần khởi động lại, khôi phục bố cục, tab, split và thư mục của từng pane với shell mới.
Cơ chế startup commands đóng vai trò như tmuxinator: gán lệnh cho một pane, và khi workspace được ghim khôi phục, lệnh đó sẽ được chạy lại ngay khi shell của pane sẵn sàng.
Cài đặt và yêu cầu hệ thống
Trên macOS, cách nhanh nhất là dùng Homebrew:
brew install --cask omnipty-terminal/tap/omnipty
Bản build được ký Developer ID và notarized nên không cần thao tác nhấp chuột phải để mở lần đầu. OmniPTY tự kiểm tra cập nhật khi khởi động, mỗi sáu giờ và theo yêu cầu, với chữ ký cập nhật phải khớp khóa gốc.
Trên Linux, người dùng Arch có thể build từ PKGBUILD trong repo, còn mọi bản phân phối khác dùng tarball phát hành với install.sh (cài vào ~/.local, không cần quyền root).
Yêu cầu tối thiểu: macOS 12 trở lên (Apple Silicon hoặc Intel), hoặc Linux với glibc 2.35+ (Ubuntu 22.04, Debian 12, Fedora 36), driver Vulkan và notify-send. Font JetBrainsMono Nerd Font Mono đã được đóng gói sẵn, không cần cài thêm.
Giấy phép MIT của OmniPTY
Hạn chế đã biết
Dự án khá thẳng thắn về những điểm còn thiếu:
- Chưa hỗ trợ IME / tổ hợp phím chết, tức chưa gõ được dấu kiểu hai phím hay nhập liệu CJK. Đây là điểm đáng lưu ý với người dùng Việt Nam quen gõ tiếng Việt có dấu qua bộ gõ.
- Chưa có cập nhật tại chỗ trên Linux — thông báo sẽ mở trang phát hành.
- Ảnh chưa hỗ trợ animation, và ảnh nằm trong lưới văn bản chứ không phải lớp phủ bên trên.
- Các chương trình đang chạy không thể sống sót qua một lần thoát hoàn toàn; startup commands là giải pháp thay thế.
Đáng để thử?
Với những người dùng terminal chuyên sâu — đặc biệt là lập trình viên quen với vim, tmux và các công cụ dòng lệnh — OmniPTY là một lựa chọn đáng cân nhắc bên cạnh iTerm2, Ghostty, kitty, WezTerm, Alacritty hay Warp. Việc viết bằng Rust, render GPU và không thu thập dữ liệu là những điểm cộng rõ rệt, trong khi khoảng trống về IME vẫn là rào cản với người dùng cần gõ tiếng Việt hoặc tiếng Nhật, Trung.
Dự án phát hành theo giấy phép MIT, mã nguồn mở trên GitHub, và có kênh Discord cho cộng đồng.
Tham gia Discord của OmniPTY
Bài viết liên quan

Công nghệ
Mô hình AI hàng đầu giỏi Vật lý đến đâu? Nghiên cứu mới chỉ ra các bài kiểm tra hiện hành đang đánh giá sai
16 tháng 9, 2026

Công nghệ
Nộp đơn xin việc lẽ ra nên khó hơn. Thật đấy
25 tháng 8, 2026
Công nghệ
Bộ kiểm tra borrow theo chiều ngược: Ý tưởng lạ nhưng đầy hứa hẹn của ngôn ngữ Valen
18 tháng 10, 2026