Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.


If you don't mind me asking, what are the warts? I'm always interested in improving the app.


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.


Are you the Rectangle dev? I appreciate your work! How did you get into developing tools for macOS? Were you filling your own needs?


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!

[0]https://multitouch.app


You do great work!


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've been using Magnet for years. It's simple and reliable.


Has anyone transitioned from moom to magnet?


Why would you pay for magnet when you can use rectangle, which is the same but open source? https://github.com/rxhanson/Rectangle


Magnet rocks. Very worth paying for. I hate using Macs without it


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 just bought this, but I don't see an option for automatic tiling?


It can’t do automatic tiling, it’s a window snapping/resizing app


Actually, only $5.


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.

https://github.com/ianyh/Amethyst


I tried amethyst but it was essentially useless to emulate an awesomewm or sway like experience.

Switching to asahilinux was a *far* better solution. Not really sure what the use of macOS for me is when asahi exists now.


Is Asahi your daily driver on MBP?


Curious about this as well...I thought it wasn't quite there as a daily driver OS, but would be happy to be wrong ;-)


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.


Yes, absolutely.

Asahilinux >> MacOS

It's wonderful to use the M2 with incredible battery life and performance without having to have a subpar OS.


Can I ask: is setting up dual-boot trivial? I’d love to check it out but can’t ditch MacOS entirely.


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).


AFAIK dual boot is currently the only way to use Asahi on Apple Silicon Macs.


Is there anything that doesn't work for you?


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.

[1] https://github.com/kasper/phoenix

[2] https://github.com/nik3daz/spin2win

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?


Yeah if I recall correctly there is support for the mouse and doing all the kinds of things you usually use mouse for in tiling wm setups.


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.


I think I had come across Phoenix briefly, but never took it for a spin. Thanks for the recommendation, I'll definitely take a look.


> I'd be more than willing to try another tiling window manager on Mac if there's one out there that truly works

Hello, AeroSpace author speaking :)

I'd be happy if you could try AeroSpace (it's and i3-like window manager for macOS) and report me back if it loses track of windows.

https://github.com/nikitabobko/AeroSpace

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!


The demo looks pretty nice! I'll be trying this out over the weekend and report any issues. Thanks for building 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.


Yeah I'm using hammerspoon & miro too with this basic binding:

```

hs.window.animationDuration = 0.2 spoon.MiroWindowsManager:bindHotkeys({ up = {hyper, "up"}, right = {hyper, "right"}, down = {hyper, "down"}, left = {hyper, "left"}, fullscreen = {hyper, "f"} })

```

Works well enough for years.


Can you share your config please? Trying to get a better idea of what's possible and how to get started. Thanks


My full hammerspoon config is a mix of things I've collected/written over the years, but the Miro-specific section is simply:

  -- window management
  hs.loadSpoon("MiroWindowsManager")
  -- set to 0.x for animation, 0 for none
  hs.window.animationDuration = 0.3

  spoon.MiroWindowsManager:bindHotkeys({
    up = { hyper, "k" },
    down = { hyper, "j" },
    left = { hyper, "h" },
    right = { hyper, "l" },
    fullscreen = { hyper, "f" },
    nextscreen = { hyper, "n" }
  })


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.

for window arrangement the hs.grid component is plenty for me. see an example: https://www.youtube.com/watch?v=nRJ0477KFp8


Hammerspoon is literally the only thing I miss from leaving macOS.

If I ever have to go back, it'll be one of the first things I install again.



I use the PaperWM spoon, a port of the Gnome thing.

It does not make sense to me to use a "normal" tilling wm that automatically messes up windows' dimensions without asking me

I just need the windows to be automatically put side by side:

[1] https://github.com/mogenson/PaperWM.spoon

[2] https://github.com/paperwm/PaperWM


Check out https://github.com/agzam/spacehammer if you're using Hammerspoon.


There's also somewhat similar extension for Hammerspoon: https://github.com/FryJay/MenuHammer/


I use hammerspoon with https://github.com/miromannino/miro-windows-manager...it's a great tiling experience.


Do you have a config example I can look at that demonstrates how to set this up?


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.

1: launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"


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

# Reload yabai ctrl + shift + alt -r : launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"


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.


I've also been using Divvy since as long as I can remember but it hasn't been updated in 4 years, looks like abandonware.


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)

Useful concept, that's exactly it.


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 is absolutely great


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.


https://github.com/ianyh/Amethyst

This is what I used for years. Sadly I'm back in Windows land these days due to work.


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:

https://github.com/imawizard/MiguruWM

The wiki also contains a list of other window managers for Windows one might want to check out.


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.


I just use Grid, it already has shortcuts (I don't like that Yabai doesn't) and it's pretty easy to get used to.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: