> System Integrity Protection needs to be (partially) disabled for yabai to inject a scripting addition into Dock.app for controlling windows with functions that require elevated privileges.
To me, this is a dealbreaker. I don't want to disable SIP (it seems to break some software..), even if temporarily. I'm assuming that as soon as my OS gets updated, I would need to go through this process all over again... I'm getting too old for this.
You can use Yabai perfectly well without disabling SIP. I ran it for a while like that, and only stopped using it because I wanted something else entirely.
I use Hammerspoon to get something like tiled window management.
Hammerspoon is not a window manager out of the box - it's more a toolkit for building the one you want, along with a lot of tools for automating various aspects of OS X.
The thing I like most about my config is how I have windows automatically resizing and positioning themselves when monitor count changes.
Maybe OS X is better now than it used to be, but I used to subconsciously dread connecting or disconnecting external monitors because I'd spend several minutes fixing my windows afterwards.
Yeah I chose amethyst because the ease of setup. It’s not 100% perfect but it works decent enough. I really like the tiling workflow for my desktop computer in conjunction with spaces. On my laptop I still prefer manual management. One thing I would like to add to the tiling setup is auto layout switching depending on which space and application is focused. I think there’s a way to do it but I haven’t gotten that deep in the tools to make that work.
I'd like to second this recommendation. I've been running Amethyst for so many years now I've forgotten how long ago I came across it. It's indispensable to my workflow on macOS!
It usually looks like a bunch of normal windows next to each other, and maybe some kind of border around the focused window. Probably a video would be a better illustration. I looked at a few minutes of the top videos for “yabai” on YouTube and liked this one the most:
Window managers on Aqua do a lot less than you're thinking if you're coming off of conventional UNIX window managers. All they do is move the windows; they don't draw anything.
If you don't understand enough from the readme, you are most likely not the target market.
But yes, if they want to attract new people to tiling in general, they should use screenshots. But trust me when I say screenshots don't do tiling justice. It's something you have to use, and feel, to understand. The "look" of tiling is possible without tiling, so it doesn't look all to impressive. It's all about the usability, not the look.
Screenshots wouldn't help explain what it is, it would just tell everyone what this window manager would look like? Why wouldn't you have screenshots, it's a window manager, who would download without first seeing what it looks like?
Yabai is awesome and a complete game changer on MacOS with skhd setup as a hotkey daemon. I set it up to mirror my i3 setup on ArchLinux and couldn't be happier. Switching to that and VIM per "The Mouseless Dev" book sped up my coding speed 3-4 times within a few months. I recommend everyone try to make the switch, but few are brave enough to do so.
If the author’s around, one thing I’d like to ask is why the entire thing appears to be in C except for the small parts that apparently had to call into Objective-C. Some sort of personal challenge? Undying love for the language? I seem to recall this replacing another project that was similarly all in on C++ called chunkwm (now totally nuked?) and I’m curious what the history is here.
I love yabai. I don't do anything fancy with it, but I found that its one of the few twms for MacOS that can do three up on the left with a large window on the right.
I also love that it isn't locked into auto-balancing windows. For me, I don't want my three-up to be the same size.
For those concerned that SIP needs to be completely disabled, you can use [1]
csrutil enable --without fs --without debug
All in all, yabai is great and really is the best twm for MacOS at this time. The installation and config is a breeze, too.
The main difference of note is virtual desktops (typically 10). While it may seem like a large limitation to not have overlapping windows (aside from modern tiling managers also having the ability to have floating windows) having multiple workspaces automatically partitioned into useful layouts that can be called instantly (rather than tabbing through windows lists or otherwise selecting something with a mouse) can be beneficial to some people's workflows.
It's not the end all be all of how you can use a computer, but some people manage to make it quite effective and fast to have a keyboard driven tiling wm.
Other commenters are speaking to the ability to have them auto-configure to specific layouts, which is indeed useful for some people. I also find they provide easier window management/navigation on laptops. Rather than using gestures, task view, or alt-tabbing to find your window, you typically have specific groups of windows on specific virtual desktops which are bound to predictable hotkeys. So you might have something going on like:
I don't really have any hard and fast rules for what goes where, I just let things develop organically and don't restart my computer that often. For me, I find the ease/convenience of this makes working on a laptop 10x better. It sounds crazy but I almost prefer working on a laptop screen with a good Tiling WM to docking it with multiple screens.
On a larger/multiple screens, I find it's less necessarily to have the full features of a tiling WM. Something like FancyZones in PowerToys is good enough.
You're right they are different features and you could have one without the other. But imo it's the implementation of them together you see in most linux wms (i3, bspwm, sway, etc) that makes my example scenario work so well. When I try to use virtual desktops on windows without tiling/hotkeys, I just get confused about what windows are on what desktop. And if I had tiling without virtual desktops, I would just run out of space, or be forced to use the i3 "tab mode" which I'm not a fan of.
I disagree. While it's possible to use them separately, in my experience virtual desktops don't make sense without tiling, and tiling doesn't make sense without virtual desktops.
I find it impossible to do programming work on a large monitor without a tiling WM. With one, it's a delight. No alt-tabbing, just switching between many desktops.
I'm not sure what was the use case back then, but today plus-sized 4k+ screens or ultra wide screens are commonplace. There's simply too much real estate for a single application window.
It's not a binary choice between tiling applications and just one at a time. Overlapping windows are a thing, and arguably were the thing in a lot of windowing systems for approaching four decades now.
I did not make myself clear, yes it is not a binary choice. Yes overlapping is one of the solution. Hand-managed layout (where you just place a window wherever you want) is one too. And so is tiling, which counters the point the original comment made (no use case for tiling WM in modern era).
> Yabai is an adjective denoting that something is bad or dangerous. Its original connotations were that the speaker felt he or she was in imminent danger or was about to be inconvenienced.
Maybe it’s an apt name because it needs SIP disabled :-)
Yabai has a bunch of meanings, including a slang meaning along the lines of "awesome". Based on the author's other projects, I suspect they are, for lack of a better term, a weeb.
When an app has a name starting in YA, it's fairly common that it stands for Yet Another. No idea if that's true here, or what the rest of their name stands for though.
I mostly saw the value from watching Twitch coding streams. I found "The Mouseless Dev" book really helpful in setting up Archlinux with i3 and VIM as a guideline to try it out, then once I saw the value spent some time setting up MacOS with Yabai and similar hotkeys to my Archlinux setup. I'll say, it's pretty much increased my productivity by 3-4x and keeps my mind fully engaged on the coding task at hand.
I recently had to move to a Mac from windows at work. It's all propaganda, UX for macOS sucks. Apple doesn't know shit about a good UI. Despite the hardware shenanigans of windows 11 the UX was spot on. WSL2 on windows was a really good spot.
WTH should I need a 3rd party tool to do half decent window tile management?
Yabai looks very neat, but I've always wondered if it's replacing the window server on MacOS or merely existing on top of it. Does it disable things like the dock and menubar when they're not in use, or are they still loaded and consuming CPU/GPU resources?
It does the latter and unfortunately it doesn't compare to i3/sway for that reason. It feels way too sluggish and clunky, with windows often not conforming to the right size.
The main feature that requires SIP to be disabled is managing multiple workspaces without animating the swap between them which saves a ton of time and is key to the seamless feel. There are some workarounds of course, but there's no way to get around the 1-2s animation without turning off SIP.
Under accessibility toggling reduce motion serves a similar purpose. It is not instantaneous like yabai but I’ve found it quick enough to not be frustrating as someone who utilizes spaces heavily.
For most basic features, like tiling, Yabai doesn’t need SIP disabled. However, for transparency, borders, and other more complex features, SIP does need to be disabled for Yabai to inject features into the dock.
Glad there's someone else who's seen the light, I'll never go back :). I wish it was more natively supported, it might make me make the switch to MacOS for good (well if they fix their new trash keyboards and ditch USB-C).
I used to use chunkwm and yabai but ultimately shifted away from using it after I got an ultra wide monitor. It’s a pretty faithful recreation of bspwm and sxhkd but I do feel like that form of tiling doesn’t work that well on ultrawides. Something more akin to xmonad like amethyst or i3 (equivalent doesn’t exist to my knowledge) seems more useful in that realm.
I’m now using hammerspoon to handle window management. I do wish that there was more support for this baked into MacOS itself, the performance of all of these is quite bad compared to their counterparts in Linux.
I have to confess that without a prior experience with tiling managers and after a few months with yabai+skhd, only feature I use is `alt - t : yabai -m window --toggle float;`
I guess that this is very limited experience, anyone got hints ?
To me, this is a dealbreaker. I don't want to disable SIP (it seems to break some software..), even if temporarily. I'm assuming that as soon as my OS gets updated, I would need to go through this process all over again... I'm getting too old for this.