As my friend John has posted about, we recently worked together on a small utility application to re-enable the window management behavior that we’ve been used to for many, many years.
I had been using DragThing as an application dock since the mid-90s, back when I was actively developing LeeMail, and installing beta versions of MacOS 8.1. I remember having to reformat my 80 MB hard drive multiple times as the format for the brand-new HFS+ (ding!) changed between developer releases.
When Mac OS X came along and became usably less dog-slow, the new windowing behavior of clicking in a window and having only it come to the fore, leaving the rest of an app’s windows interleaved with other applications’ windows seemed messy and crazy. If I’m working in an app, why wouldn’t I want all of that app’s windows to come forward? Luckily, DragThing had an option for that. It’s possible that John pointed out this option to me, as we were working together at the time.
However, DragThing is a 32-bit application, and James Thomson indicated that he wasn’t going to update it for macOS Catalina. John told me in his gentle way that I should do something about it. I finally found some time to do that, and wrote the first version of Front and Center.
John and I both ran it on our Mojave machines for a while, and John had one incident where apps rapidly flicked to the foreground in rotation, forcing him to kill the Front and Center process from another machine. I have to say, that kind of bug cracks me up, but then, it didn’t happen to me.
John asked Gus Mueller of Acorn fame to take a look at it. Gus knew of a deprecated API that does the process-switching much more efficiently, that doesn’t exhibit the same bug, and makes the code much simpler. Given that the impetus of writing the app was to make the 32-bit to 64-bit transition cleanly, I wasn’t a fan of using an API that had been deprecated in OS X 10.9, but it works well.
As John describes, he added the shift-key behavior, changed the app icon and menu bar icon, and rewrote it in Swift. My Objective C code lives on perhaps only in the related Swift organization and comments, but here we are, with a new utility in the Mac world.