17 điểm bởi GN⁺ 2025-08-04 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Đã dùng tmux trong thời gian dài, nhưng gần đây bắt đầu hoài nghi về độ phức tạp và các giới hạn của tmux (tương thích màu sắc, scrollback, sao chép bằng chuột, không hỗ trợ giao thức, v.v.)
  • Các tính năng chính của tmux như duy trì phiên (detach/attach) hay chia/quản lý cửa sổ không nhất thiết chỉ có thể thực hiện bằng tmux
  • Tận dụng các công cụ nhẹ theo triết lý Unix như dtach, abduco, shpool có thể giúp chỉ tập trung vào quản lý phiên mà vẫn có được scrollback gốc, sự đơn giản
  • Đặc biệt, với tổ hợp shpool + ssh, có thể xây dựng môi trường quản lý trực tiếp nhiều phiên từ xa bằng window manager, đồng thời giữ nguyên các tính năng native (thông báo, cuộn, tiêu đề, v.v.)
  • Dù không hoàn hảo, theo tiêu chí của tác giả thì giải pháp này đã thay thế hoàn toàn tmux, mang lại sự hài lòng với một workflow đơn giản, dễ bảo trì

Ưu và nhược điểm của tmux

  • Giữ phiên (detach/attach), quản lý cửa sổ (tab, split), v.v. từng là phần cốt lõi trong workflow mà tmux cung cấp
  • Tuy nhiên, nếu không có cấu hình TERM đúng, sẽ phát sinh vấn đề hiển thị màu và làm tăng độ phức tạp vì phải cân nhắc tương tác giữa terminal và tmux
  • Việc dùng bộ đệm cuộn cũng đòi hỏi phải làm quen với cơ chế riêng của tmux, và sao chép vùng bằng chuột trong môi trường splits cũng gây bất tiện
  • Việc hỗ trợ các tính năng terminal mới như kitty graphics protocol còn hạn chế, và cũng có vấn đề không hỗ trợ các giao thức thử nghiệm
  • Cũng có ý kiến phê bình rằng việc diễn giải lại escape code và bổ sung thêm khái niệm phiên/cửa sổ khiến multiplexer cản trở sự phát triển của hệ sinh thái terminal

Tìm cách thay thế tmux

  • Duy trì phiên:
    • Có thể dùng đơn giản ctrl-z + fg, nohup, disown, v.v., nhưng khó thay thế hoàn toàn
    • Đã xuất hiện nhiều công cụ chỉ nhắm đến mục tiêu giữ phiên (dtach, abduco, shpool)
      • Kết nối giữa daemon và client bằng tổ hợp fork() và UNIX socket
      • Khác với tmux, chúng hỗ trợ scrollback gốc mà không cần split ảo, và một số còn cung cấp khả năng khôi phục buffer
    • Theo trải nghiệm sử dụng, phần lớn công cụ thay thế vẫn còn nhiều lỗi và độ hoàn thiện chưa cao, chẳng hạn phím tắt detach không hoạt động trong nvim
    • Chỉ shpool là có độ hoàn thiện cao nhất về mặt lệnh detach/attach và khả năng tùy biến keymap
  • Quản lý cửa sổ:
    • Trên máy local thì dùng window manager để chia và sắp xếp
    • Ngay cả trong môi trường từ xa (SSH), cũng có thể kết hợp ssh_config và shpool để giữ nhiều phiên độc lập trong các cửa sổ riêng
    • Kết hợp với autossh để duy trì phiên ngay cả khi mạng bị ngắt rồi kết nối lại

Workflow mới

  • Cá nhân tác giả quản lý cửa sổ bằng ghostty (laptop), sway+foot (PC cá nhân). Máy chủ là VM headless chạy trên Proxmox, luôn duy trì môi trường phát triển qua SSH
  • Tự động kết nối nhiều phiên shpool bằng các shortcut ssh, rồi điều khiển độc lập từ window manager local
    • Trong ssh_config, tự động hóa việc attach vào phiên shpool theo từng host
    • Mỗi terminal có thể truy cập riêng từng phiên như IRC, quản lý dotfiles, hay môi trường neovim riêng biệt
  • Các tính năng như cuộn native, thông báo, tiêu đề terminal vốn được tmux hỗ trợ kém ổn định thì giờ lại hoạt động tự nhiên hơn
  • Cũng có nhược điểm: khi kết nối lại vim thì việc khôi phục trạng thái terminal bị chậm, và có vấn đề resize khi dùng nvim
    • Không hỗ trợ nhiều người dùng cùng lúc (nếu autossh chạy đồng thời từ nhiều client thì phiên có thể xung đột)
  • Tuy vậy, theo tiêu chí cá nhân thì đây là một sự thay thế hoàn toàn thành công cho tmux

Kết luận

  • Dù không hoàn toàn giống hệt, vẫn có thể chuyển sang một workflow quản lý phiên đơn giản và linh hoạt hơn, thoát khỏi độ phức tạp và giới hạn của tmux
  • Tùy theo workflow của mỗi người, các công cụ thay thế như shpool là lựa chọn đáng để cân nhắc

Chưa có bình luận nào.

Chưa có bình luận nào.