A small utility for macOS that allows one to customize the type and speed of swiping animations when moving between spaces.
This project is inspired by and builds upon the excellent work of InstantSpaceSwitcher.
This video shows how basic three finger swipes are sped up vs. the stock macOS animations. This was captured with animation duration set to 200ms with a quadratic ease out.
three-finger-swipe.mov
You can also jump directly to specific spaces using Control+<space number>.
jump-to-space.mov
If the included animation options don't exactly meet your needs, you can set a custom cubic Bezier curve to get the exact easing you want. It also lets you use some interesting animations, like so:
cubic-bezier.mov
The following assumes the latest publicly released, non-beta version.
Fully working.
Swiping to adjacent spaces fully works. Jumping two or more spaces away works, but results in errant bounce animations.
Important
Because macOS 27 is still in beta, I won't spend much, if any, time on compatibility beyond basic swiping to adjacent spaces. I'll spend more effort after the first public non-beta release.
Untested.
FasterSwiper requires accessibility permissions to function. You can grant those
permissions by going to Settings → Privacy & Security → Accessibility and adding
FasterSwiper.app. If you build your own version using bazel run, you should
grant permissions to Terminal.app.
FasterSwiper tracks physical three-finger gestures, used to move between macOS spaces. When a gesture completes, it determines which space to move to, then injects synthetic gestures over a configurable period of time to animate the movement between spaces.
When running on a display at 60Hz, the animation to move between spaces completes in roughly ½ second, which, while a bit long for my taste, is tolerable. For some strange reason, the duration doubles when running at 120Hz to roughly 1 second, which moves into being intolerable. FasterSwiper allows me to shorten the animation duration and customize the animation easing curve; my personal preference is a quadratic ease out over 200ms.
FasterSwiper uses Bazel. Install Bazelisk with Homebrew:
brew install bazeliskInstall the full version of Xcode, the
command-line tools are not supported by Bazel. Ensure that xcode-select
reports a path under /Applications:
% xcode-select -p
/Applications/Xcode.app/Contents/DeveloperTip
If you ran bazel run or bazel build before installing the full version of
Xcode, you may need to clean up Bazel's cache before builds will succeed:
bazel clean --expungeThen, you can build and run the app in Terminal:
bazel run -c opt //src/app:FasterSwiper_appIf you use VS Code, you may find it useful to generate a compile_commands.json
file so the C++ language server can properly index the codebase:
bazel run @hedron_compile_commands//:refresh_allThen restart VS Code.