Funny to see this at the top of HN after just having uninstalled Yabai. I used Yabai for about 6 weeks. I was so thrilled about having a proper tiling window manager for Mac. I invested a lot of time setting up skhd and fine-tuning my configuration for the most intuitive hotkeys. The problem ultimately, however, is that Yabai just doesn't work well enough. It'll regularly just lose track of windows altogether, which requires restarting Yabai. This and other bugs happened frequently enough that it outweighed the benefits of Yabai. I'd be more than willing to try another tiling window manager on Mac if there's one out there that truly works. Related, I started checking out Stage Manager and it's pretty bad in my experience - obviously it's the opposite of a keyboard driven TWM, but I'm willing to try anything that helps me maximize the limited screen space I have. I'm all ears if anyone has had better experiences with other tools on Mac.
You might try Magnet. It's $10 on the mac app store. I've had zero issues with it, and it has some problems sorted that other tools don't or haven't always, namely correctly tiling across monitors. I used to use Rectangle, which is open source and frankly pretty good but at the time I was using it had some warts. macOS' window management seems to not be entirely transparent. I don't know all the details, but this is my workstation. I need(ed) this to work now, and if it's a system that might change a bit over time or has some weird idiosyncrasies then I'm happily willing to pay a low one-time fee for a tool like this.
One difference I've noticed is that with Magnet, if you have a window 'maximized' by dragging it into the top of the screen or pressing the shortcut for it, when you start dragging it down from the top of the screen to unmaximize it, it instantly returns to its original size, whereas with Rectangle it stays maximized for some time after you start dragging it which is pretty annoying.
Another thing is the way Magnet moves and resizes windows seems to create less visual 'flashing' than Rectangle's method, for instance Rectangle will resize, then move, then resize again when maximizing a window, which can create a really pronounced 'flashing' effect. That's not to say Magnet has no 'flashing' ever, there's certain situations where it does and to my understanding it seems necessary due to the limited nature of moving and resizing windows on macOS (I guess you have to do one then the other and can't both move and resize simultaneously?), but to me Magnet's methods often look visually better.
Rectangle is great though, I've switched to it from Magnet and these are just some minor gripes.
Good to know! I'm surprised that Magnet has any improvement over Rectangle in these areas, since Rectangle isn't really adding any overhead to the Accessibility API commands, but I'll have to investigate.
Rectangle Pro user here -- biggest frustration I've had is configuration. While the GUI is nice for seeing all the options and some basic stuff, when it comes to actually configuring App Layouts it's been a nightmare of clicking around. I went so far as to export my config so I could modify it with a text editor and then re-import it but the config itself includes serialized JSON as values so to accomplish what I wanted to I had to de-serialize the json, make the changes I wanted to, re-serialize it, then re-import it back into Rectangle, all while hoping I didn't mess up the re-serialization step. This ended up taking more time than if I had just painfully clicked through the interface.
Personally, I wish Rectangle had the option of storing configuration in a simple dot file in my home dir but I understand that would prevent syncing through icloud, which is a feature I imagine a lot of folks like. Barring that, I wish rectangle could export/import the configuration in a more editor friendly way so I could make these configuration changes much faster and more easily ensure consistency across settings.
Thanks for the feedback! I agree and have had some ideas for improving this - one of them being copy/paste and drag behavior where you could copy a selection in Rectangle Pro and paste it as prettified JSON in an editor, and vice-versa. The dot file idea is also one that I like - it's just a surprisingly large effort to "do it right". Making UI's for representing this complexity is kind of tricky, and what's there now is actually my first cut - something that I figured I would iterate on but haven't gotten the time together to do it.
Glad you like my software! A long time ago, I had some RSI issues that were alleviated by using the Magic Trackpad, and this led me to create the Multitouch app[0] to add a bit more functionality to the Magic Trackpad. From there I wanted to add in window management, and ended up rewriting Spectacle as Rectangle. I feel really lucky to have people enjoying the things I've built!
I have had a quick look at Rectangle. I'm currently using Hammerspoon, but it has problems moving windows quickly and precisely, so I wanted to see if Rectangle does better.
The main thing missing for me is being able to use mouse buttons to move windows: I have a Kensington Expert Mouse and I use buttons 3 and 4 for some actions.
Actually, the built-in keyboard shortcuts for moving spaces with Mission Control have the same problem, so I have configured Hammerspoon to turn the mouse clicks into key presses. I suppose I could do the same thing with Rectangle, tho it's annoying to have to rely on multiple apps.
You know, honestly I don't recall. From what I do remember, I had checked the repo and I believe it was something you were working on but it was going to require a really big lift. I wanted to be very charitable with you in my above comment. I used Rectangle for a decent amount of time and overall it was pretty great. I only switched because of a time/money consideration, not because of a vote of no confidence, which is not something I can always say. Keep up the great work!
Rectangle has worked well for me in the past, but recently, it's been losing a lot of windows. I often have to restart Brave to get Rectangle to be able to control it again.
I love magnet as well, have used it probably most of the last few jobs I've worked. The hot keys can be a little tricky to learn at first but after that it's a snap (heh).
I haven't had the same experience with Yabai. I've been using it happily and without issue since April, and I don't think I've had to restart it once.
Before Yabai I was using Amethyst, but like your experience with Yabai, I felt like it would suddenly stop working and needed to be restarted. Maybe your experience would be flipped.
It's usable if you can live with some small annoying inconveniences last I tried. I can't remember if there were more inconveniences but what bugged me the most was that the touchpad was too sensitive compared to MacOS, it seemed to register accidental touches on the edges more and accidental taps were easier. I tried figuring out if this is fixable with libinput or hwdb but eventually gave up. Also the shortcuts with Command key are way more convenient than the ctrl ones but this probably is configurable somehow. Some Java programs had scaling issues but that can be configured to work properly. Battery life was a bit worse I think, this is with the GPU drivers and no video playback, just regular browsing. Oh and external monitor support isn't there, I do use this sometimes on MacOS.
The installation process sets it up to you. You'd have to do more work to not have dual-boot (unless there was a setting in the installer that I forgot).
I'm not parent, but from my quick foray into (Fedora) Asahi on a Macbook Air M2, I at least noticed USB-C connection to my monitor and USB router behind it not working at all. There's something Mac-specific going on there, because from my x86-based linux laptop, this usually works fine.
same here! using yabai on my MacOS machines for about a year now, after being similarly disappointed with amethyst. Works pretty damn good for me, its a god send for me. It is part of the myriad of tweaks that make MacOS so damn good and unique to me.
Have you heard of Phoenix [1]? It seems relatively unknown but I actually found it to work better than Yabai in some ways. The gist is that it basically simulates a tiling wm and virtual desktops by internally tracking state. This also means it doesn't suffer from window animation delays when you switch "desktops" (since "desktops" are just hiding/unhiding windows). It's also highly hackable/extensible being written in JS. Spin2Win [2] is a config that's worked well for me.
That said, it seems there are no perfect solutions. At work where I can't really be futzing around with window management config I basically just use Raycast + hotkeys and try to keep everything inside maximized application windows. This means using Arc browser (tabbed), iTerm (tabbed), VS Code (with native tabs), etc mapped to cmd+1, cmd+2, cmd+3...Not much "tiling" going on but at least everything is pretty keyboard friendly.
Does this allow using the mouse? Maybe not common amongst tiling window users but I like to just drag a window over another to swap them or resize one window from the frame and have the other tiles adjust accordingly. So far it seems only Amethyst and Yabai do this, but if Phoenix internally tracks the states of windows (position, etc.) then this should be feasible to write code for without relying on Mac's windowing api?
Phoenix requires a little more futzing around than Yabai, but I like it much better. I had tried Yabai and had to switch back to Phoenix because of all the problems stated here about Yabai.
It’s fewer bells and whistles out of the box, but it works well.
The architecture of AeroSpace is that on every user input that may change window configuration (new window created, window moved, window resized, new app launched, etc), AeroSpace runs the same idempotent operation (I call it "refresh session") that tries to detect new window, checks all invariants, re-layouts windows, etc.
The "refresh session" performs all the mentioned steps regardless of the user input nature (it doesn't matter whether the window is moved, or a new app is launched)
I believe that this architecture may lose windows only if the macOS API returns invalid data.
I have been using AeroSpace for quite a while myself and I'm happy with it
Just tried it and my initial impressions are hugely positive. The main things missing that I frequently use like wrap around for focus and assigning applications to specific workspaces already have open issues that you've engaged on too!
I've been using i3 for over a decade now and hate using any computer that doesn't have it, been trying to find a suitable substitute for my work mac for ages. Amethyst, rectangle, magnet, yabai, each had its own problems. The virtual workspace idea is genius and solves some of the biggest issues with those alternatives. This is by far the closest thing to i3 on mac I've seen. Thank you so much for making this.
My suggestion: open up a way to take donations to the project, and/or sell a packaged version on the mac app store. I'd be happy to pay good money for this.
Very cool, looks great. Seems to hew pretty closely to i3 from what I could tell in the demo video. Will definitely give this a try. Thanks for your work on this!
After trying yabai, Amethyst, and many others, I landed on hammerspoon.org + https://github.com/miromannino/miro-windows-manager a few years ago and haven't looked back. I couldn't live on a Mac without hammerspoon tbh.
try hammerspoon. it isn't a tiling window manager, per se - it's more of an all-purpose desktop extension framework. it is fully customizable, has a well-documented API, and a large community.
I've used Yabai for about three years now, it generally only forgets windows or specifically their states if you use the swipe multi tasking features. However when this happens I have a keybind and Skhd command which quickly restarts the daemon [1] and fixes the windows.
It takes a little while to get used it, but Yabai is now an app I can't live without.
I have the exact same setup, I have to maybe restart the service 2-3x a week. Unsurprisingly, outlook is often the culprit of needing to restart the service
This may not be what you’re looking for, but I use Mizage’s Divvy on Mac & Windows and configure Gnome to match on Linux. It can be keyboard or mouse driven — I exclusively use custom keyboard shortcuts.
I used to use Divvy (and have a paid copy), but I've moved to Rectangle which also does everything I need and is open source. It doesn't have the same "drag" mouse capabilities that Divvy does, but I don't end up using that too often.
So basically, it's below the "Reliability*Utility" threshold (that's my term for the drastic dropoff in usefulness of a product/service/person when their reliability goes from 100% to 90% or lower) That's too bad. Maybe some unit tests (historically notoriously difficult to implement with GUI's) would help that dev.
Fleshing my concept out on a whim (since I am surprised I can't find another reference to this idea online!) with the help of ChatGPT (yes, it can do this now!), it looks like this equation would capture this concept:
U(r)=Umax ⋅e^(−k(100−r)^n)
where the total perceived Utility of a product/service/trusted person, given r=reliability percent (out of 100), is the maximum Utility times e to the (-k(100-r)^n), where k and n are tweakable based on the given product/service/person but which I want to assign values of 0.03 and 1.5 to, respectively, after plotting it.
> So basically, it's below the "Reliability*Utility" threshold (that's my term for the drastic dropoff in usefulness of a product/service/person when their reliability goes from 100% to 90% or lower)
That was my experience also especially the past year. I do programming and design and it seems many apps twist the ui api to do things that you can't naturally do in the interface and so Yabai, completely oblivious to it, will try to manage it and you have elements disappearing or appearing too large/small, behind other elements, etc. Even if you create exceptions, it seems things sometimes slip through the crack or start behaving unexpectedly. Flipping between native tabs for instance start throwing the tiling off for some apps that I use.
Yabai used to be pretty solid and usable, but I think with the author not using a Mac for his daily and with all the updates to the OS that he has to keep track of (and how some windowing Mac api are still blackboxed or not reliant to build logic atop of) it's only a matter of time before it gets into a poorer state.
I've certainly run into my problems with Yabai and have had to work through different versions to solve problems. It's certainly not perfect still but I've found a pretty stable workflow for me. I would certainly recommend turning off anything that's not nessiary like window borders. After that you'll need special configuration for a couple problematic apps (Chrome for me), and lastly some custom behavior using the events to get the exact behavior I want. I have had to debug and look at logs to figure out my problems..
Rectangle seems nice, but not quite what I'm looking for. I want automatic tiling. I'm not looking to just move some windows around with shortcuts. I want to be able to have predefined arrangements and automatic tiling, etc. Rectangle is similar to SizeUp which I've used. Good for what it is, but still want a true tiling window manager.
I had a similar experience. I find the default windowing experience on Macs to be miserable and so I was excited to jump in to a tiling WM, but Yabai was a pain to configure relative to linux tiling managers and was not reliable.
I‘m using Windows again as well (just loving the crap-/bloatware for corporate vpn, syncing powerpoint templates, group policies etc.) which is why I made a small window manager in AutoHotkey:
Nothing out there quite works like i3 because they all politely ask the actual window manager to set the position/size of windows. i3 controls the position and size of windows.