TL;DR

InstantSpaceSwitcher (jurplel/InstantSpaceSwitcher) là utility macOS open-source biến animation chuyển Spaces 300–500ms thành switch tức thì. Cách làm: bắn một synthetic trackpad swipe qua CGEventPost() với vận tốc giả cực cao — macOS bỏ qua animation khi velocity vượt ngưỡng. Không cần tắt SIP (khác yabai). MIT license, 1.4k sao, v2.0 ra ngày 18/04/2026 hỗ trợ macOS 26. Cài bằng Homebrew Cask hoặc binary từ GitHub Releases.

Có gì mới

Repo jurplel/InstantSpaceSwitcher mới release v2.0 ngày 18/04/2026 (8 ngày sau v1.0), build cho macOS 26. Tool viết chủ yếu bằng Swift (75.9%) và C (22.2%), bundle thành .app + CLI ISSCli. Bind được vào keybind hoặc swipe gesture, dùng đúng Spaces native của macOS — không thay thế Mission Control, không phải tiling window manager.

Vì sao đáng chú ý

Animation chuyển Space của macOS dài 300–500ms. Trên màn hình refresh rate cao (120Hz+) thậm chí có cảm giác lâu hơn vì độ dài animation scale theo refresh rate — chính tác giả phát hiện ra vấn đề này từ 2018 khi mua màn high-refresh. Với workflow multi-Space keyboard-driven, mỗi switch tốn nửa giây cộng dồn cả ngày là rất khó chịu. Trong thời gian animation chạy, input bàn phím bị block — bạn không thể gõ tiếp ngay.

Trước đây cách duy nhất để xoá animation là yabai, nhưng yabai phải tắt System Integrity Protection (SIP) một phần — bước nhiều người không muốn làm vì lý do bảo mật. ISS giải bài toán này mà không động vào SIP.

Cách nó hoạt động

Trick chính: thay vì gọi private API hay patch system framework, ISS dùng CGEventPost() để bắn một synthetic trackpad swipe event với vận tốc giả lập cực cao. macOS có một heuristic nội bộ — khi gesture velocity vượt ngưỡng, bộ animation engine bỏ qua phần tween và snap thẳng sang Space đích. Tool đánh lừa heuristic này.

Điều thú vị: đây không phải reverse-engineering hay private API hack. macOS vốn đã có sẵn code path “skip animation khi user swipe quá nhanh” (tưởng tượng bạn flick trackpad mạnh để nhảy nhiều Space) — ISS chỉ tận dụng nó bằng cách luôn luôn bắn event với velocity max. Đơn giản, ổn định, không vỡ khi macOS update minor.

Hệ quả thiết kế:

  • Chỉ dùng public API → không cần SIP off, không có warning quyền root.
  • Spaces vẫn là Spaces native → tương thích với Mission Control, fullscreen apps, multi-monitor, Stage Manager.
  • Không cần background daemon nặng → nhẹ hơn nhiều so với một full tiling WM như yabai.
  • Codebase nhỏ (chủ yếu Swift + một ít C cho event API) → dễ audit, dễ fork.

So với các giải pháp khác

ToolBỏ animationCần tắt SIPLoại
InstantSpaceSwitcherCó (instant)KhôngAnimation patch
yabaiCó (một phần)Tiling WM đầy đủ
AerospaceKhôngTiling WM (workspaces ảo riêng)
AmethystKhôngKhôngTiling WM trên Spaces native
RectangleN/AKhôngWindow snapping

ISS là lựa chọn minimal nhất: không thay đổi paradigm Spaces, không buộc bạn học một WM mới, chỉ vá đúng một thứ.

Ai nên dùng

  • Dev / power user xài nhiều Spaces, switch bằng Ctrl+←/→ hoặc shortcut, mỗi ngày switch hàng trăm lần.
  • Người mới chuyển từ Linux (i3, sway, GNOME) quen workspace switch tức thì, khó chịu với delay của macOS.
  • Người dùng monitor 120Hz+ thấy animation lê thê.
  • Ai không muốn cài tiling WM nhưng muốn bỏ animation.

Giới hạn & cài đặt

Cài bằng Homebrew Cask:

brew install --cask jurplel/tap/instant-space-switcher

Hoặc tải binary trực tiếp từ GitHub Releases.

CLI usage:

InstantSpaceSwitcher.app/Contents/MacOS/ISSCli --help

Lưu ý quan trọng:

  • App không được sign → lần đầu chạy macOS sẽ chặn, phải vào Settings > Privacy & Security cấp quyền thủ công.
  • Không pin được từng cửa sổ riêng vào Space cụ thể — đây là giới hạn của macOS API, không phải của ISS.
  • Fullscreen app vẫn chiếm Space riêng — ISS không thay đổi hành vi này.
  • Trong lúc switch, keyboard input có thể bị block một frame ngắn (limitation macOS).
  • Hoàn toàn miễn phí, MIT license.

Sắp tới

Project active — có nightly tag chạy song song bản stable. Repo đã có 1.4k sao, 39 forks, issues & PRs đang mở. Không có public roadmap nhưng commit cadence cho thấy maintainer còn ship đều. Với việc macOS 26 đã được hỗ trợ từ v2.0, tool nhiều khả năng sẽ theo kịp các bản macOS tiếp theo.

Nguồn: GitHub repo, arhan.sh review, Hacker News discussion, tip từ @CamilleRoux.