13 điểm bởi GN⁺ 2025-10-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • Một trình quản lý cửa sổ xếp ô mã nguồn mở dành cho macOS, đang được phát triển với trọng tâm là hiệu năngtính dễ sử dụng
  • Hoạt động mà không cần tắt System Integrity Protection (SIP), và là một trong số ít trình quản lý cửa sổ tương thích với tùy chọn "Displays have separate Spaces" của macOS
  • Hỗ trợ nhiều kiểu bố cục tương tự i3/swaybspwm
  • Cung cấp khả năng tích hợp tự nhiên với môi trường gốc của macOS như điều hướng workspace theo kiểu Mission Control và cử chỉ trackpad
  • Tập trung vào hiệu năng hoạt ảnh và trải nghiệm người dùng, với các tính năng nổi bật như hot reload cấu hình và tích hợp với chương trình bên ngoài
  • Kế thừa một phần ưu điểm của Aerospace, trình quản lý cửa sổ xếp ô hiện có cho macOS (như hiệu năng, tính linh hoạt), đồng thời hướng tới các tính năng bổ sung như hỗ trợ hoạt ảnh và khả năng chỉ sử dụng một màn hình ở chế độ toàn màn hình trong môi trường nhiều màn hình

Tính năng chính

  • Nhiều kiểu bố cục: hỗ trợ sắp xếp cửa sổ theo dạng lưới như i3 hoặc sway, hoặc theo kiểu phân chia không gian nhị phân của bspwm
  • Biểu tượng trên thanh menu: hiển thị trực quan tất cả workspace và trạng thái bố cục trong từng workspace
  • Điều hướng theo kiểu Mission Control của macOS: giúp quản lý trực quan và dễ dàng việc chuyển đổi giữa các workspace
  • Cung cấp tính năng tự động chuyển focus theo chuột và tự động đưa cửa sổ lên trước
  • Có thể hoán đổi vị trí khi kéo cửa sổ, đồng thời hoạt ảnh vận hành mượt mà
  • Khi dùng cử chỉ trackpad, có thể chuyển đổi workspace giống như trải nghiệm gốc của macOS
  • Hỗ trợ thay đổi cấu hình khi đang chạy (hot reload), giúp việc tinh chỉnh theo thời gian thực rất thuận tiện
  • Hỗ trợ giao tiếp với chương trình bên thứ ba như Sketchybar và tích hợp thông qua CLI hoặc mach port
  • Có thể gửi tín hiệu (Signals) ra bên ngoài khi workspace thay đổi hoặc cửa sổ có biến động; tín hiệu có thể được phát qua CLI hoặc kết nối mach
  • Được phát triển 100% bằng Rust

1 bình luận

 
GN⁺ 2025-10-14
Ý kiến trên Hacker News
  • Trước đây tôi dùng i3 rất nhiều. i3 cực kỳ linh hoạt và cho phép cấu hình rất tự do, nên có thể làm được nhiều hơn là chỉ di chuyển cửa sổ. Nhưng sau khi chuyển sang Mac, tôi không tìm được trình quản lý cửa sổ xếp ô nào vừa nhiều tính năng vừa ổn định. Tôi đã thử nhiều lựa chọn và giờ thì chỉ dùng Rectangle. Rectangle không thực sự là trình quản lý cửa sổ, mà chỉ cung cấp phím tắt để dễ dàng đưa cửa sổ sang trái/phải/trên/dưới hoặc chia theo 3/4/6 phần. Nó đáp ứng khoảng 80% thói quen sử dụng của tôi, không cần thiết lập tùy chỉnh và cũng không có hành vi bất ngờ, nên tôi dùng khá hài lòng. Có tuổi rồi nên cũng thấy mệt khi phải dành thời gian cho hàng đống tùy chỉnh. Trang chính thức của Rectangle

    • Tính năng tôi thực sự thích ở Rectangle là chế độ todo. Tôi không dùng nó để quản lý việc cần làm, nhưng việc có thể ghim một cửa sổ luôn hiển thị và để các phím tắt cho toàn bộ cửa sổ tự động điều chỉnh theo nó thực sự rất tiện
    • Tôi rất biết ơn vì Rectangle hỗ trợ tùy chọn phím tắt kiểu Spectacle. Không biết rồi một ngày nào đó tôi có học được bộ phím tắt mặc định không, nhưng hiện tại tay đã quen rồi nên cứ tiếp tục dùng cách này
    • Nhờ kết hợp Rectangle với Apptivate mà cuối cùng tôi cũng chấm dứt được nhiều năm tìm kiếm một bản thay thế i3. Dùng Rectangle để di chuyển cửa sổ, Apptivate để chuyển cửa sổ bằng super+số — đúng y như cách di chuyển tôi từng dùng trên i3
    • Tôi có trải nghiệm tương tự, nhưng dùng Divvy thay vì Rectangle. Trang chính thức của Divvy
    • Rất khuyên dùng Rectangle. Nó giúp việc thích nghi khi chuyển từ Linux sang Mac dễ hơn nhiều
  • Trên màn hình 5k/6k, kiểu xếp ô thông thường có giới hạn — kích thước cửa sổ sẽ trở nên quá lớn. Vì vậy tôi nghĩ các ứng dụng như Moom tốt hơn nhiều. Trên Windows không có ứng dụng nào như Moom nên tôi dùng trình quản lý xếp ô như komorebi. Là người thường xuyên qua lại giữa nhiều hệ điều hành và thiết bị, tôi thấy khá tiếc vì rift không hỗ trợ các phím gán phổ thông như alt+hjkl. Trên màn hình siêu độ phân giải hoặc ultrawide, kiểu bố trí cửa sổ này là bắt buộc (komorebi có hỗ trợ)

    • Nếu sơ đồ ASCII bạn dán vào nhìn không rõ, hãy thụt lề khối mã bằng bốn dấu cách để nó hiện như code trên HN
    • Nghe nói komorebi sắp có trên macOS Video giới thiệu komorebi cho macOS
  • Với nhiều người thì có thể là chưa đủ, nhưng với kiểu dùng như tôi — chủ yếu chỉ dùng một cửa sổ trên Mac hoặc chỉ dùng hai màn hình khi cắm màn hình ngoài — thì tính năng mặc định này là đủ rồi Hướng dẫn chia cửa sổ chính thức của macOS (tôi không phải người dùng xếp ô nặng)

    • Không biết tính năng này có phải chỉ dùng được trên Mac Tahoe hay không. Đến giờ tôi vẫn không biết điều đó
    • Tôi hoàn toàn không biết là có tính năng như vậy — cảm ơn vì thông tin này
  • Lý do chế độ toàn màn hình và cử chỉ trackpad trên macOS hấp dẫn đến vậy là vì trong phần lớn trường hợp, bạn chỉ làm việc với một cửa sổ. Nhưng khi cần đồng thời mở terminal, editor, DevTools của trình duyệt, log, tài liệu... thì khả năng dự đoán bố cục trở nên cực kỳ quan trọng. Công cụ xếp ô không chỉ đơn giản là đặt hai cửa sổ cạnh nhau, mà còn

    • giảm mạnh chi phí chuyển ngữ cảnh (chuyển/đổi vị trí cửa sổ chỉ bằng bàn phím)
    • có thể sao chép các bố cục làm việc thường dùng theo từng dự án
    • trên màn hình siêu độ phân giải, việc chia chính xác hữu ích hơn rất nhiều
      Trên Mac tôi giải quyết được khoảng 80% bằng Rectangle hoặc Moom, còn lại thì dùng Aerospace hoặc Rift. Khi số lượng cửa sổ hoặc tần suất chuyển đổi cao, tính hữu dụng của trình quản lý cửa sổ xếp ô trở nên rất rõ ràng
  • Có thời điểm tôi định tự làm trình quản lý cửa sổ của riêng mình, nhưng nhanh chóng bỏ cuộc vì macOS không có API tử tế cho việc đó. Trên thực tế gần như phải “hack” bằng Accessibility API để dùng. Dự án này cũng dùng Objective C bindings và Accessibility API, nên tôi tò mò về việc debug, triển khai tính năng, hoặc họ chủ yếu dùng công cụ gì

    • Tôi nghĩ framework Accessibility được thiết kế rất tốt, khó mà chỉ gọi nó là “hack”. Tháng vừa rồi tôi đã làm một dự án tương tự bằng Rust và xử lý nhiều bindings cho các framework macOS, thấy cũng không đáng sợ như tưởng tượng. Môi trường phát triển chỉ cần Rust với rust-analyzer, cộng thêm tài liệu của Apple và tài liệu objc2 là đủ, thậm chí không cần một thiết lập phức tạp như XCode
  • Gần đây tôi cũng đã trải qua một khoảng thời gian vất vả để chỉnh Aerospace thật vừa tay. Tôi tò mò mọi người xử lý thế nào khi có quá nhiều phím tắt bị trùng. Vì đã quá quen với tổ hợp hjkl nên tôi luôn muốn gán phần lớn vào đó, và tính năng chế độ modal của Aerospace giúp giải quyết xung đột phím tắt phần nào. Cuối cùng mọi người thường thiết lập theo hướng nào?

    • Có vẻ đa số cứ dùng đại mà không có giải pháp đặc biệt nào. Với tôi, cứ dùng hằng ngày là xung đột phím tắt lòi ra rất nhanh. Sau khoảng một năm dùng Aerospace, tôi đặt alt+space làm phím leader để giấu mọi thứ vào đó. Trong normal mode của Aerospace tôi để vài alt-shortcut, còn di chuyển cửa sổ bằng {hjkl}, những thứ còn lại thì xử lý trong các mode riêng (ví dụ mode go-to, move-to để chuyển nhanh cửa sổ theo chữ cái/số). Nó giống như phiên bản mở rộng của trải nghiệm dựa trên leader key trong zellij/tmux ở terminal nên tôi khá hài lòng. Một khó khăn là Aerospace hay giấu cửa sổ sau khi chuyển màn hình, nên tôi thường phải mò tìm ở góc dưới
    • Tôi đã thử Aerospace, nhưng cấu hình mặc định của nó gán toàn bộ alt+chữ cái (26 phím) cho các workspace khác nhau, khiến mọi phím tắt kiểu emacs dùng trong các ứng dụng đều bị vô hiệu hóa. Thậm chí còn không có nổi một hướng dẫn về keymap mặc định hay cách dùng, chỉ liệt kê một đống lệnh. Gần đây tôi cũng đã vất vả khá nhiều với các môi trường Linux như sway, hyprland (thậm chí còn đụng cả bootloader Linux và mã hóa đĩa), nhưng vẫn thấy hiếm có phần mềm nào thiếu thân thiện đến mức đó. Vì vậy tôi đã gỡ Aerospace và đang cân nhắc Rift như ứng viên tiếp theo, hoặc có khi tự triển khai trình quản lý cửa sổ — vì bản chất trình quản lý xếp ô vốn đã là kiểu thỏa hiệp theo sở thích “tự làm đúng thứ mình cần”
    • Tôi cũng làm theo cách tương tự, dùng Karabiner để đổi phím Option phải trên bàn phím ngoài thành Option+Shift (A1), còn Control phải thành Control+Option+Shift (A2). Trong cấu hình Aerospace, di chuyển focus là A1+hjkl, di chuyển cửa sổ là A2+hjkl. Chuyển workspace là A1+ui, chuyển cửa sổ sang workspace là A2+ui. Chuyển màn hình (monitor) là A1+m, chuyển cửa sổ sang màn hình là A2+m. Đây thực sự là các tổ hợp tôi dùng thường xuyên nhất, và nếu phím tắt giữa các ứng dụng bị trùng thì tôi đổi phím tắt của ứng dụng đó để tránh xung đột. Vẫn có thể mở rộng thêm, nhưng ở dạng hiện tại cũng đã hoạt động rất tốt
    • Tôi dùng các phím tắt meh (control+alt+shift) và hyper (control+alt+shift+command). Tôi map nhấn giữ caps lock thành meh, còn chạm nhanh thì thành esc. Nhờ vậy rất nhiều phím tắt trở nên nằm gọn trong tầm một tay. Ví dụ như meh+số để chuyển space, cửa sổ terminal nóng là meh+space, focus cửa sổ cũng là meh+hjkl
  • Dùng Hammerspoon thì có thể tự làm trình quản lý cửa sổ. Tôi thích kiểu modal mà Divvy cung cấp (một phím lệnh đơn để đổi bố cục), nhưng tiếc là nó không còn được bảo trì nữa. Vì vậy tôi đã tự làm một trình quản lý cửa sổ kiểu modal bằng OpenAI Codex Mã nguồn window manager cho hammerspoon. Chia sẻ cách tiếp cận như vậy chắc sẽ khá thú vị!

    • Tôi cũng đã dùng divvy ổn định trong thời gian dài mà hoàn toàn không biết nó đã ngừng được bảo trì… Dù vậy nó đã có đủ mọi tính năng tôi cần nên cũng không thấy bất tiện gì. Nếu có tính năng nào bạn muốn được thêm vào thì tôi cũng tò mò
    • Tôi dùng MiroWindowsManager (plugin Hammerspoon) để đáp ứng toàn bộ nhu cầu. Với 3 kiểu chord division, tôi có thể ngay lập tức đặt bất kỳ cửa sổ nào vào đúng phần chia mong muốn chỉ bằng hotkey. Thực sự có thể sắp xếp cửa sổ theo ý muốn chỉ trong vài giây
  • Nếu là người dùng trackpad MacBook thì riêng Swish thôi đã áp đảo mọi ứng dụng khác rồi Trang chính thức của Swish

    • Quả thật cái tên “highly opinionated” nghe là thấy đúng luôn ;). Nhưng lý do tôi vẫn thích Divvy lâu dài là vì các phím tắt bàn phím tùy chỉnh của tôi luôn hoạt động giống hệt nhau, dù đang dùng trackpad hay bàn phím ngoài. Trang chính thức của Divvy
  • Có ai đã thiết lập cái này bằng nix flake chưa? Sau yabai tôi đang thử nhiều trình quản lý cửa sổ khác nhau, nhưng Aerospace thỉnh thoảng bị lag, có lẽ do xử lý sự kiện, khi tôi dùng sketchybar chỉ để hiển thị workspace cho đẹp. Có lẽ tiếp theo tôi cũng sẽ thử cái này (rift)

  • Tôi không hiểu vì sao lại cần trình quản lý cửa sổ xếp ô trên macOS. Cần đặt cửa sổ cạnh nhau thường xuyên đến mức nào? Chẳng phải chỉ cần mở hầu hết ứng dụng ở toàn màn hình rồi vuốt 4 ngón để đổi cửa sổ là đủ sao? Mong ai đó thuyết phục giúp

    • Tôi dùng như vậy rất thường xuyên. Slack ở 1/4 bên phải, phần còn lại thì tùy lúc có thể là trình duyệt/terminal/IDE v.v. Thỉnh thoảng là trình duyệt + log tail, ngay trong từng ứng dụng cũng còn chia thêm kiểu multi-view/terminal. Trong trình duyệt tôi cũng hay mở các trang cạnh nhau để xem song song
    • Tôi sẽ không nói rằng trình quản lý xếp ô là thứ “bắt buộc phải có”. Nhưng cũng có thể việc “cứ để toàn màn hình rồi vuốt 4 ngón” chỉ hợp với riêng bạn mà thôi. Tôi đã tắt gần như toàn bộ cử chỉ, animation và nhiều desktop (space). Việc chuyển giữa các ứng dụng toàn màn hình quá chậm, và để tới đúng ứng dụng cần dùng thì phải vuốt chồng nhiều lần. Tôi ghét việc phải tính trong đầu xem ứng dụng nằm ở thứ tự nào và cần vuốt mấy lần. Tôi muốn gọi ngay đúng ứng dụng mình cần lập tức
    • Tuy không phải macOS, nhưng tôi nghĩ lý do dùng xếp ô trên Linux cũng tương tự. Khi chỉ dùng màn hình laptop thì toàn màn hình tốt hơn, nhưng màn hình càng lớn thì càng có nhiều lý do để đặt cửa sổ cạnh nhau. Tài liệu/mail, editor/terminal/VCS, code/tài liệu, template/web, kế toán/ngân hàng, quản lý file... có rất nhiều việc cần nhìn đồng thời nhiều ứng dụng khác nhau, nên xếp ô hiệu quả hơn hẳn
    • Quả thật có những lúc rất tiện khi nhiều cửa sổ được mở cạnh nhau. Ví dụ khi làm nhiều việc như trình duyệt web/tài liệu/IDE, hoặc khi không cần dùng hết toàn bộ màn hình chỉ cho một ứng dụng. Thực tế thì phần lớn ứng dụng không cần kích thước toàn màn hình, thậm chí đôi khi ô 1/4 màn hình còn dễ dùng hơn. Bình thường tôi hay dùng toàn màn hình + desktop ảo, nhưng còn tùy công việc
    • Trước đây tôi dùng space (chuyển desktop) rất nhiều, nhưng trên màn hình lớn thì mở mọi thứ trên một màn hình lại tiện hơn. Tôi dùng 3 màn hình 32 inch (hai bên xoay dọc) và gần như không bao giờ dùng toàn màn hình ngoài IDE. Việc chia màn hình về bản chất là luôn có sẵn nhiều màn hình nhỏ cùng lúc, nên đơn giản và hiệu quả hơn vì không cần phải đi tìm xem cửa sổ nào đang ở desktop nào. Riêng Chrome khi mở trên nhiều space thì cmd-tab nhiều khi không chọn đúng cửa sổ tôi muốn, cuối cùng vẫn phải tự đi tìm, khá phiền. Ngược lại, khi chỉ dùng laptop thì do màn hình nhỏ nên tôi quản lý cửa sổ chủ yếu bằng virtual space. Slack, nhiều cửa sổ chrome, terminal, IDE, postman, datagrip... tất cả đều có thể chuyển chỉ bằng một phím tắt mà không cần đổi toàn bộ màn hình. Về cơ bản giống như luôn có 8 màn hình vật lý đang mở sẵn, nên năng suất tăng rất nhiều. Tôi có thể tập trung vào từng ứng dụng bằng r-cmd nên chuyển đổi cực nhanh. Không phải lang thang qua lại giữa các desktop ảo nên cũng dễ tìm hơn