3 điểm bởi GN⁺ 2025-02-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • FlashSpace là một trình quản lý không gian làm việc ảo bổ sung và thay thế macOS Spaces mặc định, hướng tới việc chuyển đổi không gian làm việc nhanh mà không phải chờ hoạt ảnh của macOS
  • Hỗ trợ chuyển đổi độc lập trên nhiều màn hình bằng cách gán ứng dụng và màn hình cho từng không gian làm việc; khi chuyển đổi, các ứng dụng được gán trên màn hình đó sẽ hiển thị, còn các ứng dụng khác sẽ bị ẩn
  • Cung cấp Space Control, Workspace Switcher dựa trên Option + Tab, Focus Manager, hồ sơ, cử chỉ vuốt, Floating Apps, cấu hình JSON/YAML/TOML, CLI, tích hợp SketchyBar và Raycast
  • Yêu cầu macOS 14.0 trở lên và bật thiết lập “Displays have separate Spaces”; hỗ trợ cài đặt qua Homebrew, tải binary và build từ mã nguồn
  • Không hỗ trợ không gian làm việc theo từng cửa sổ riêng lẻ hay quản lý bố cục; duy trì thiết kế xoay quanh việc hiển thị/ẩn ứng dụng vì macOS không có API công khai để ẩn cửa sổ cụ thể, cũng như vì tính đơn giản và hiệu năng

FlashSpace làm gì

  • FlashSpace là trình quản lý không gian làm việc ảo cho macOS, được thiết kế để bổ sung và thay thế macOS Spaces mặc định
  • Mục tiêu là chuyển đổi không gian làm việc nhanh mà không phải chờ hoạt ảnh của macOS
  • Có thể gán ứng dụng cho từng không gian làm việc, còn bản thân không gian làm việc được gán cho một màn hình cụ thể
  • Khi chuyển sang một không gian làm việc, các ứng dụng được gán sẽ tự động hiển thị, còn các ứng dụng khác trên cùng màn hình sẽ bị ẩn
  • Có thể chuyển đổi độc lập không gian làm việc trên nhiều màn hình

Cài đặt và luồng sử dụng cơ bản

  • Yêu cầu gồm macOS 14.0 trở lên và bật “Displays have separate Spaces” trong phần cài đặt hệ thống Desktop & Dock
  • Phương thức cài đặt hỗ trợ Homebrew, tải binary phát hành và build từ mã nguồn
    • Lệnh cài đặt Homebrew là brew install flashspace
    • Có thể tải binary từ Releases Page
  • Luồng sử dụng cơ bản như sau
    • Di chuyển tất cả ứng dụng vào một macOS Space duy nhất theo từng màn hình
    • Tạo không gian làm việc
    • Gán ứng dụng
    • Gán màn hình cho không gian làm việc hoặc dùng chế độ động
    • Thiết lập phím tắt để kích hoạt nhanh
    • Áp dụng cùng quy trình cho các không gian làm việc khác
    • Chuyển sang không gian làm việc đã được thiết lập bằng phím tắt
  • Nếu muốn giữ cùng một ứng dụng ở nhiều không gian làm việc, hãy dùng tính năng Floating Apps trong cài đặt ứng dụng, hoặc thêm ứng dụng vào nhiều không gian làm việc từ cửa sổ chính của ứng dụng

Tính năng chính

  • Cung cấp chuyển đổi không gian làm việc nhanh và hỗ trợ nhiều màn hình
  • Space Control là tính năng xem trước tất cả không gian làm việc dưới dạng lưới và chuyển đổi giữa chúng
    • Có thể chuyển đổi không gian làm việc bằng 0-9 và các phím mũi tên
  • Workspace Switcher mặc định hiển thị danh sách không gian làm việc và chuyển đổi bằng Option + Tab
    • Hoạt động tương tự trình chuyển đổi ứng dụng CMD + Tab của macOS
  • Focus Manager cho phép di chuyển focus giữa các cửa sổ theo hướng mong muốn bằng phím tắt, đồng thời hỗ trợ nhảy giữa các màn hình
  • Các tính năng khác bao gồm
    • Phát hiện focus ứng dụng rồi kích hoạt không gian làm việc
    • Cursor manager tự động căn giữa con trỏ vào cửa sổ đang hoạt động
    • Profiles để nhanh chóng đổi giữa nhiều cấu hình
    • Thanh menu có thể đặt biểu tượng và văn bản theo từng không gian làm việc
    • Tùy biến hành vi cử chỉ vuốt trên trackpad
    • Cấu hình qua GUI và tệp cấu hình
    • Hỗ trợ định dạng tệp cấu hình JSON, YAML, TOML
    • Điều khiển ứng dụng qua CLI
    • Hỗ trợ Picture-in-Picture
    • Tích hợp SketchyBar
    • Hỗ trợ Raycast extension

Cách gán màn hình

  • FlashSpace hỗ trợ hai cách gán màn hình: chế độ tĩnhchế độ động
  • Chế độ tĩnh là mặc định, gán từng không gian làm việc cho một màn hình cụ thể
    • Phù hợp với người dùng muốn có không gian làm việc riêng cho từng màn hình, giống macOS Spaces
    • Có thể khó dùng nếu sử dụng nhiều màn hình và thường xuyên thay đổi cách bố trí
  • Chế độ động tự động gán từng không gian làm việc cho màn hình nơi các ứng dụng của không gian làm việc đó đang nằm
    • Có thể hiển thị một không gian làm việc trên nhiều màn hình cùng lúc
    • Hữu ích khi muốn sắp xếp lại không gian làm việc bằng cách di chuyển ứng dụng giữa các màn hình
    • Ở chế độ này, không thể hiển thị không gian làm việc trống
  • Có thể thay đổi chế độ gán màn hình trong Workspaces của phần cài đặt ứng dụng

Hỗ trợ Picture-in-Picture và các hạn chế

  • FlashSpace hỗ trợ chế độ Picture-in-Picture, nhưng đây là tính năng thử nghiệm
  • Có thể tắt tính năng này tại App Settings -> Workspaces
  • macOS không cung cấp API công khai để chỉ ẩn một cửa sổ cụ thể; khi ẩn ứng dụng, cửa sổ PiP cũng bị ẩn theo
  • Để né vấn đề này, FlashSpace nhận diện ứng dụng có hỗ trợ PiP hay không và ẩn ở góc màn hình tất cả cửa sổ ngoại trừ cửa sổ PiP
  • Nếu cửa sổ PiP không hiển thị, hành vi tiêu chuẩn sẽ được áp dụng
  • Các trình duyệt được hỗ trợ gồm Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Dia, Opera, Microsoft Edge, Comet
  • Nếu ngôn ngữ trình duyệt không được đặt là English, tính năng này có thể không hoạt động

Nguyên tắc thiết kế và những phần cố ý không hỗ trợ

  • Giá trị của dự án là hiệu năng, tính đơn giản, độ ổn định, hành vi không gây cản trở và triết lý UNIX
  • FlashSpace xem quản lý không gian làm việc là một việc duy nhất và đi theo hướng làm tốt việc đó
  • Hành vi không gây cản trở

    • FlashSpace không chủ động quản lý cửa sổ
    • Sau khi chuyển sang một không gian làm việc, nếu gọi một ứng dụng không được gán cho không gian đó, ứng dụng này sẽ hiển thị phía trên các ứng dụng của không gian làm việc
    • Hành vi này cho phép truy cập nhanh vào ứng dụng khác trong khi tránh lỗi hiển thị hoặc việc chuyển đổi không gian làm việc
    • Trong các trình quản lý cửa sổ dạng tiling, lỗi hiển thị có thể thường xảy ra do popup hoặc hộp thoại chưa được cấu hình
    • FlashSpace tương tác với hệ thống theo cách không gây cản trở bằng cách không quản lý các cửa sổ và ứng dụng chưa được gán
  • Không hỗ trợ không gian làm việc theo từng cửa sổ ứng dụng riêng lẻ

    • FlashSpace không hỗ trợ khái niệm chia các cửa sổ riêng lẻ của một ứng dụng theo từng không gian làm việc
    • Đây là quyết định có chủ đích để giữ mọi thứ đơn giản và nhanh
    • Dựa vào chức năng hiển thị/ẩn native để quản lý và chuyển đổi không gian làm việc hiệu quả
    • Cách này có lợi cho pin và không phá vỡ các tính năng hệ thống như Mission Control
    • Hỗ trợ theo từng cửa sổ riêng lẻ sẽ tạo ra độ phức tạp lớn và có thể ảnh hưởng tiêu cực đến hiệu năng
    • macOS không có API công khai để ẩn một cửa sổ cụ thể; các lựa chọn hiện tại chỉ là di chuyển cửa sổ ra góc màn hình hoặc thu nhỏ, và cả hai đều không phải trải nghiệm người dùng lý tưởng
  • Không hỗ trợ bố cục

    • FlashSpace không hỗ trợ di chuyển cửa sổ, đổi kích thước hay thay đổi bố cục
    • Tính năng này sẽ làm tăng đáng kể độ phức tạp và có thể ảnh hưởng tiêu cực đến hiệu năng
    • Cần rất nhiều công sức để hỗ trợ mọi edge case và lỗi hiển thị
    • Có thể dùng cùng các ứng dụng quản lý cửa sổ như Magnet, Rectangle, Raycast, nên FlashSpace không lặp lại các chức năng đó

Tích hợp, CLI và build

  • Có thể tích hợp với SketchyBar và các công cụ khác; khi không gian làm việc thay đổi, FlashSpace sẽ chạy script có thể cấu hình
  • CLI hỗ trợ quản lý không gian làm việc, ứng dụng và hồ sơ
    • Cần cài đặt trước trong phần CLI của cài đặt ứng dụng
    • Có thể xem các lệnh khả dụng bằng flashspace --help
  • Build từ mã nguồn dùng XcodeGen để tạo dự án Xcode từ project.yml
    • Sau khi clone repository, cài đặt dependency bằng brew bundle
    • Chạy xcodegen generate, rồi mở FlashSpace.xcodeproj trong Xcode để build
    • Mỗi khi đổi branch hoặc pull thay đổi, cần chạy lại xcodegen generate
    • Nếu muốn tạo dự án kèm thiết lập ký, có thể dùng XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate

Mẹo sử dụng

  • macOS có lỗi khiến ứng dụng xuất hiện trên sai màn hình sau khi sleep
    • Xảy ra khi ứng dụng bị ẩn trong lúc sleep
    • Sau khi máy thức dậy, nếu bật tất cả màn hình trước khi đăng nhập, ứng dụng có thể hiển thị trên đúng màn hình
  • macOS 15 cung cấp tính năng di chuyển và đổi kích thước cửa sổ mà không cần ứng dụng bên thứ ba
    • Có thể kiểm tra menu con Move & Resize trong Window trên thanh menu
    • Việc điều chỉnh phím tắt bị hạn chế; cách linh hoạt hơn là dùng ứng dụng quản lý cửa sổ như Raycast, Magnet
  • Có thể chuyển focus giữa các cửa sổ của cùng một ứng dụng bằng phím tắt Cmd + ` của macOS
  • SKHD là công cụ CLI để định nghĩa phím tắt toàn cục tùy chỉnh, có thể dùng cùng FlashSpace CLI
  • Người dùng Raycast có thể quản lý FlashSpace mà không cần rời bàn phím bằng Raycast extension

1 bình luận

 
GN⁺ 2025-02-10
  • Tò mò không biết có tương thích với Amethyst không. Muốn có tiling window nhưng không muốn độ trễ khi chuyển không gian

  • Rất tốt! Mong có thể thêm chế độ xem dạng lưới cho các workspace. Nhớ TotalSpaces

  • Đúng lúc thật. Tôi vừa xem lại các lựa chọn trong mảng này và đã quyết định dùng AeroSpace. Sẽ thử sản phẩm này

  • Cảm ơn! Tôi vừa cài xong và đến giờ nó hoạt động tốt

  • Tôi đã dùng AeroSpace cho mục đích này hơn 1 năm. Tôi tắt mọi tính năng tiling trong cấu hình và chỉ dùng hai phím tắt: chuyển đến workspace và chuyển cửa sổ hiện tại sang workspace. Nó là thứ không thể thiếu khi làm việc trên màn hình nhỏ

    • AeroSpace có vấn đề về hiệu năng, nhưng có vẻ đây là vấn đề cố hữu của các API macOS hiện có
    • FlashSpace dường như cũng gặp vấn đề này
    • Về cấu hình, tôi thấy việc gán phím tắt riêng cho từng workspace khá phiền. Trong AeroSpace, mọi chữ cái và số trên bàn phím tự động trở thành workspace và phím tắt là toàn cục
    • Xét tất cả những điều đó, tôi thích một công cụ có mục tiêu chính là giải quyết các vấn đề của workspace trên macOS hơn
    • Sau khi thử thêm, FlashSpace không hỗ trợ các cửa sổ khác nhau của cùng một ứng dụng ở các workspace khác nhau. Đây là một vấn đề lớn với workflow của tôi