Syed Umar AnisUncategorizedWhy Tiling Window Managers Don’t Quite Work on macOS?
Syed Umar AnisUncategorizedWhy Tiling Window Managers Don’t Quite Work on macOS?

Over the years, I’ve tried several tiling window managers on macOS, including yabai (28.3k stars) and Aerospace (19.2k stars).

First, I want to acknowledge the incredible work their developers have done. These tools are ambitious, technically impressive, and have improved significantly over time. I’ve given them multiple serious attempts, often returning when a new feature was released or when stability improved.

But each time, after the initial excitement wears off, I reach the same conclusion:

Tiling window managers on macOS feel like they’re constantly fighting the operating system.


The Core Problem: Fighting the OS

Tiling window managers make perfect sense in systems that are built for them. On Linux, especially with Wayland-based compositors, tiling isn’t a hack — it’s the foundation. For example: Hyprland and niri.

These aren’t “addons.” They are the window manager. They have full control over window placement, focus, layout, and rendering. The OS provides the right APIs and architecture to support this model cleanly.

macOS is different. Its windowing system was never designed for external tiling managers to take control. As a result, tools like Yabai and Aerospace are forced to work around system limitations. They rely on private APIs, accessibility APIs, or creative hacks to approximate tiling behaviour.

And that’s where the friction begins.


The Edge Cases That Break the Flow

Initially, things can work surprisingly well — especially if your workflow fits neatly into a tiled grid.

But over time, you run into problems:

  • Small pop-ups or modal dialogs appear in unusable positions.
  • Certain application windows don’t behave correctly.
  • Floating windows fight against tiling rules.

You start encountering scenarios where you just can’t do something easily, and that’s when productivity begins to drop.

The reality is that macOS’s default window management — while not great — does cover a wide range of edge cases. It’s messy, but it’s robust in ways that these tiling tools can’t always match.


Stability and the “Kill & Relaunch” Ritual

Another pattern I’ve noticed: many tiling window manager users on macOS regularly kill and relaunch their window manager.

Why? Bugs and layout desync issues. At times, OS updates break the behaviour of the window managers.

Even if this only happens occasionally, it adds cognitive overhead. Instead of the window manager disappearing into the background, it becomes something you have to maintain.

That’s not a productivity gain.


The Productivity Illusion

There’s a strong appeal to tiling:

  • Keyboard-driven workflows
  • No wasted space
  • Deterministic layouts
  • Less mouse usage

In theory, this should increase productivity.

In practice, on macOS, I’ve found that the gains are neutral at best — and often negative.

Because when the system and the window manager are pulling in different directions, you spend time managing the window manager instead of doing your work.


Where macOS Actually Falls Short

That said, macOS built-in window management is not perfect — especially in window switching.

The built-in Cmd + Tab Switcher works at the application level, not the window level. It doesn’t let you easily cycle through individual windows across apps.

In my workflow, this becomes painful: I might have a browser window connected to a Visual Studio Code instance. Another browser window for a completely different profile or project. When I switch, I want to pick a specific window, not just the application.

But macOS doesn’t naturally provide that.

This is where enhancement tools come in.


A Better Approach: Enhance, Don’t Replace

Instead of replacing macOS window management entirely, I’ve found it far more effective to enhance it.

For example:

  • AltTab – Adds proper window-based switching.
  • Lightweight window snapping utilities. I use BetterTouchTool to create automations and shortcuts for my workflow.

These tools respect the default macOS behaviour and improve it — rather than trying to override it completely.

That feels more stable, more predictable, and ultimately more productive.


Final Thoughts

Tiling window managers make sense on Linux, especially with Wayland compositors like Hyprland or niri. The architecture supports them natively.

On macOS, however, they always feel out of place.

You can get them to work. Enjoy them for a while. But in my experience, they never quite become frictionless.

For macOS, my conclusion — at least for now — is simple:

Enhance the default window management. Don’t fight it.

Hi, I’m Umar

2 Comments

  1. Hi Umar,

    I’ve had a similar experience to you and I agree with your conclusion overall. It’s a shame the experience isn’t better on MacOS.

    I now take a more minimal approach: manually placed windows with shortcuts plus some extra tricks from Rectangle Pro. I’ve also found FlashSpace (https://github.com/wojciech-kulik/FlashSpace) to be a really nice replacement for MacOS native spaces and I appreciate the approach the developer took with it in order to avoid these problems.

  2. I’ve had a similar experience too. As a developer, I tried to solve these issues and built option1.io, source code – https://github.com/Medvedev91/Option1.

    I focus on the features I miss in macOS. It is not a replacement but an addition to the built-in macOS window management.

    The main idea is binding shortcuts like ⌥-1, ⌥-2 to apps or projects you need. For example I bind ⌥-1 to open Safari, and ⌥-2 to open “Downloads” in Finder.

Leave a Reply

Your email address will not be published. Required fields are marked *