On Linux, I used i3 and was absolutely in love with it. I could control my entire environment without touching my mouse, and keep my windows very organized. However, I've really struggled to find anything close to it on macOS. I'm very open to approaches which aren't apples to apples with i3...I just want something which significantly improves upon the default macOS experience. In other words, I'm not exactly sure what I'm looking for, but the default experience isn't it. One thing I know I'd prefer is to touch the mouse as little as possible, and I'd like to keep SIP (system integrity protection) enabled (which seems to exclude some promising options):
Among the things I've tried:
Divvy - looked promising initially, but requires a user to touch the mouse to draw the window in the pop-up.
Spectacle - too basic...while it allows me to quickly resize one window, that's about it.
Hammerspoon - very cool idea, but I'd have to basically write my own window manager in lua. None of the shared configurations from other users seem fully baked
TotalSpaces2 - I thought TS2 was going to be *the one* solution I found which, while a different approach, fulfilled my needs. However, it requires SIP to be disabled.
Amethyst - reading about it filled me with promise, but actually using it proved confusing and it didn't always manage the windows in intuitive ways. I couldn't tell if it was the software, the user, or a combination of both. I really need to revisit this one.
yabai - requires disabling SIP
I know many of you are long-time macOS users. Would you mind sharing your can't-live-without windows management and mouse management solutions?Thanks in advance!
Amethyst doesn't require disabling sip because it doesn't support the same features that yabai does. It does support different rules for layouts than yabai, which only supports floating and bsp rules.
If you didn't like Amethyst's handling of windows, you can try adding different layout rules; there are several that you can cycle through in the settings.
Tangentially related, Karbiner Elements [2] will let you modify your keyboard so you can say, invoke hyper by pressing down the caps lock keys so it would be easier to map keys to global functions like launching applications or moving windows around. I use it extensively for throwing windows to different spaces in yabai, or switching spaces. Yabai can swap spaces without any animation. You can reduce animation of changing spaces in macos from a swiping animation to a fade animation in accessibility settings, if that is sufficient for your needs. Karabiner can also bind keys to control the mouse cursor.
An app (that may be pretty much dead) that I found somewhat interesting is Switchem [3]. Dead as in the website for its independent release no longer exists, but the functionality for it might be enough for you anyway. It allows you to create workspaces that you can invoke with keyboard shortcuts that lay out the applications on the screen the same way each time. So rather than using spaces for managing windows, you switch from a "coding" workspace which has a terminal window and a web browser and an IDE to a "research" workspace which might open up a notes application and a web browser.
Moom [4] also allows you to define custom layouts and save them. It can be controlled by the keyboard entirely.
[1] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I... [2] https://pqrs.org/osx/karabiner/ [3] https://setapp.com/apps/switchem [4] https://manytricks.com/moom/
If you have a touchbar, pock.dev is excellent.