Fast Forward
A window switcher for macOS built in Rust using the gpui framework by Zed
Note
This application was developed as a personal learning project to explore and understand Rust programming concepts. While functional, it may contain bugs or unexpected behaviors. I am not responsible for missed meetings because you got too efficient, carpal tunnel from excessive app switching, or your cat learning to manipulate your windows after watching you use this tool
Building Fast Forward: A Custom macOS Application Switcher in Rust
As a developer, I often have way too many applications open at once. Navigating through them with macOS's default app switcher (Command + Tab
) can get chaotic pretty quickly—especially when I’m deep into a task and need to jump between windows fast.
So, I built my own solution.
Fast Forward is a custom application switcher for macOS, built entirely (well, almost) in Rust using the GPUI framework—the same one powering the Zed IDE, which I’m a huge fan of.
Why Build It?
I love the speed and minimalism of Zed, and that inspired me to explore what a fast, focused app switcher might look like. I also wanted to learn Rust more deeply—and what better way to learn than by building something that scratches your own itch?
What It Does
With Fast Forward, I can:
- Hold down the right Command key to activate the switcher
- Fuzzy-type the app or window name I want
- Release Command to switch, press Space to hide, or press Escape to close the window
It’s a lightweight utility that helps me stay in flow, without the friction of tabbing through a huge list of icons.
Under the Hood
Fast Forward required a few core components:
- A global hotkey manager to detect when the right Command key is held down
- A system to list open windows, sorted by most recently used
- A simple but effective fuzzy search algorithm for fast navigation
- A GPUI-based frontend for the switcher interface
But, of course, not everything could be done purely in Rust.
Bridging Rust and Swift
Some of macOS’s native APIs aren’t easily accessible from Rust, so I wrote a Swift library to handle those platform-specific tasks. The Rust and Swift components communicate via Unix sockets, exchanging protobuf messages under the hood.
It turned into a really fun architecture: a fast Rust core with a native bridge to the macOS system.
Final Thoughts
Fast Forward started as a side project and a Rust learning experiment, but it’s become an essential part of my daily workflow. Building it stretched my understanding of Rust, system-level programming, and macOS internals—and I’d totally recommend this kind of challenge to anyone looking to level up their skills.
If you’re curious or want to try something similar, you can find the project here!