Tiling window managers on macOS?!
Here's a rabbit hole for you.
Weird YouTube serendipity suggested I look into various tiling window managers for Linux after I've been watching tutorial, reviews, and guides on server maintenance and single board computers.
Turns out there's similar stuff available on macOS. Here's a rough overview of the what -- the software -- that I found:
- Amethyst https://ianyh.com/amethyst/ (open source): Easy to install, offers shortcuts to tile windows, based on "binary partitioning" (aka you are constantly halving the spaces)
- BetterTouchTool https://folivora.ai/ (paid, available on SetApp): you can customize any input happening on your Mac. Incidentally also comes with window tiling actions, and a right-click popover on the "Full-screen" window button -- I happen to have this already, so I was experimenting with BTT in my "make this app native full-screen" attempts.
- Divvy https://mizage.com/divvy/ (paid): probably the most well-known window-space-divider thingie. You can select areas on the screen visually to put windows onto a grid. Works with shortcuts as well. Used this a lot of years ago. The habit never stuck
- yabai https://github.com/koekeishiya/yabai (free/open source): apparently also removes the window chrome, aka the window title?! Doesn't come with shortcuts, you have to use another app for shortcuts and then invoke the yabai functions. You can use Hammerspoon or a small keyboard shortcut tool called skhd or whatever you already have on your system. yabai is controlled via command line message sending.
- chunkwm https://github.com/kylef/chunkwm/ (free/open source): code base is older, apparently abandoned, but you can find articles on the web about "chunkwm" and can get a glimpse into what to do with yabai
So now that you know this does exist, why bother?
Proper automatic tiling window managers don't just put your free-floating macOS windows on a grid. That's a good first start, but you still have to deal with obstructions from other windows. Tiling window managers really manage the grid/tiles. You can often drag windows off the grid to make them floating, but windows by default spawn inside the grid and then stay there. There's no hiding of windows behind other windows, no half-overlapping. And, what I like most, you can get gaps between windows, which on macOS by default produce very obstrusive shadows. (@Will seems to enjoy them, though, so maybe it's just me).
This stuff is supposed to make keyboard navigation easier.
Imagine a workflow on a wide-screen monitor: "I want to process a PDF and take notes". So you need the PDF viewer and note-taking app to play nicely with each other. If you are a tiling window manager pro and got used to this, imagine that the idea of the layout, i.e. "I need the PDF at 1/3 and the note-taking app at 2/3 width of my monitor" quickly translates into a mixture of opening applications and laying out their windows at once.
I don't know if this is useful because fighting with macOS core functionality is often futile or error-prone.
But maybe you enjoy digging deeper into such things and benefit from this shallow overview.
The reason I'm interested in this stuff is the fact that I regularly work inside of the terminal/shell in macOS. I download and update open source code packages and execute build scripts that eventually produce the apps I ship on the internet, for example. And it became naturally to split the full (not quite, but close to) HD resolution in halves to have multiple processes running in tandem and orchestrating their output. Or just wait for 4 things that run in the background to finish and see if they are finished at a glance.
Couldn't this same mindset be useful to sometimes also tile a Firefox window with research and my todo files next to each other to process e.g. research for hardware/spare parts, and then return to maximized windows again, at the flick of a shortcut?
I'll try some time in the upcoming weeks and report back
Author at Zettelkasten.de • https://christiantietze.de/
It looks like you're new here. If you want to get involved, click one of these buttons!