Skip to content

mgbowen/FasterSwiper

Repository files navigation

FasterSwiper

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.

Demo

Basic three finger swipes

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

Jump to spaces

You can also jump directly to specific spaces using Control+<space number>.

jump-to-space.mov

Custom cubic Bezier curves

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

Compatibility

The following assumes the latest publicly released, non-beta version.

macOS 26 Tahoe

Fully working.

macOS 27 Golden Gate

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.

Other versions

Untested.

FAQ

Are any special permissions required to run this?

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.

How does this work?

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.

Why was this made?

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.

Building

FasterSwiper uses Bazel. Install Bazelisk with Homebrew:

brew install bazelisk

Install 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/Developer

Tip

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 --expunge

Then, you can build and run the app in Terminal:

bazel run -c opt //src/app:FasterSwiper_app

Contributing

If 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_all

Then restart VS Code.

About

Speed up the animations when moving between spaces in macOS

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors