So I was inspired to write this post on workflow-centric computing from playing around with a couple of MacOS utilities recently: specifically, Aerospace for window and virtual desktop management, and BetterDisplay for screen resolution. I’ve been trying to accomplish my goal of:
Making the best use of my computing screen real estate
But getting here has required me to get into a ton of technical, straight-up nerdy, details about windows tiling managers and high-res screen resolutions and MacOS bugs. This is stuff that 99% of users wouldn’t care about, but if you’re in that 1% of folks that get unusually annoyed by your browser window chrome taking up 4 pixels more than it should—this blog post might contain useful information.
It starts with workflows, and setting up my computing desktop to run the apps needed for each complex task with multiple steps. For PCs, this is commonly referred to as “virtual desktops,” and has been an operating system feature for a long time. For me, I first encountered them working in the computer labs in the basement of UC Berkeley’s Computer Science building, running X Window System on Solaris Sun Blade clients.
On consumer products, Windows had third-party utilities that implemented virtual desktops for a while before supporting them natively, but OSX/MacOS introduced Spaces in an early version of the OS and eventually rolled it into what they now call Mission Control. More recently, MacOS and iPadOS have introduced another feature that manages groups of windows known as Stage Manager, but the initial versions were quite buggy and slow and I haven’t seen any active development since; it still feels like an iPad feature shoehorned onto a Mac without appreciating the difference in workflows and window management that the latter provides.
Speaking of managing apps and their windows, MacOS has historically relied on third-party utilities like Moom and Magnet to organize windows but has rolled out OS-native tools with their latest release. The utilities are still much more powerful and provide a level of configuration and customization that will likely not be matched by the operating system, so still have a place in the menu bar.
Aerospace is a beta, open source windows and virtual desktop manager that uses the same tiling mechanism as Linux-based i3. It’s unabashedly an advanced, power user utility; configuration is done via a text file, there is only keyboard control to manipulate window sizes and positions, and the windows are tiled via a tree model—the computer science data structure—which allows for more flexibility but requires its users to keep a mental model of how the windowing structure is invisibly organized underneath.
But if you buy into its premise and spend some time setting up its virtual desktops—”workspaces” in Aerospace nomenclature—then the app allows for dozens of virtual desktop spaces, individually named, with arbitrarily defined keyboard shortcuts to move windows in and around and between these workspaces. And as you add windows into the tree and tweak their sizes, the tiling manager automatically resizes and rearranges the rest of the windows on the desktop, a bit reminiscent of AutoLayout on iOS and MacOS. The utility eschews MacOS’s Spaces feature entirely, which I find a plus since Spaces remains buggy with multiple monitors and dealing with sleep/wake functions, and after 20 years I don’t have much confidence those bugs will ever get prioritized.
BetterDisplay is an app that allows users to tweak a bunch of parameters related to the display, either an external monitor or a MacBook screen, that isn’t natively exposed in the operating system. There are lots of tweaks available and some workarounds earned through years of trial and error, but my main use case for BetterDisplay is unlocking screen resolutions for Apple Silicon Macs.
The resolution of the screen essentially determines how big the UI elements are on the desktop; the higher the resolution, the smaller the windows and their rendered content. Old Intel-based Macs supported a wide spectrum of resolutions, since they used graphics drivers already written for Windows systems and the variety in hardware necessitated a wide range of support. With Apple Silicon, however, the OS simplified the selection down to 4–5 options by default, and even with other tools like SwitchResX, limited how high you can customize screen resolutions, even if the hardware can support it.
This is complicated by the introduction of HiDPI displays, and how MacOS scales its screens. To oversimplify, for sharp rendering of resolutions that aren’t native to the screen, MacOS employs a technique where it renders 4× the desired screen resolution, and then downscales that buffer onto the physical display to keep most of the clarity. This works well as long as the hardware is fast enough to virtually render screens that large, and BetterDisplay gets around the OS’s limitations on its limited set of resolutions by creating a fake dummy virtual display and leveraging the screen mirroring system, which doesn’t have the same constraints. Essentially, with some hackery, you can render to any reasonable screen resolution with a mild performance hit.
Putting these two utilities together, I’m able to set up any number of desktops, with ~4 windows at once on my 15″ laptop screen1 and 8+ on 32″ desktop monitors2, sized so each app’s UI elements and window chrome don’t take up disproportionate amounts of space. The separate workspaces keep the desktop from feeling overly cluttered, and of course, modern hardware can support running dozens of apps and sites at the same time. Moreover, Safari now supports adding webapps as pseudo-native apps, and most apps now allow for inline content zooming and font-size tweaks to make content readable, which has been particularly useful with these higher resolutions.
So yeah, it’s a lot of work and tinkering to get my Macs to behave the way that I want them to. I suppose the next step would be to write apps to enforce desired UI/UX behaviors; fortunately, I’m not that obsessed—yet.