all micro contact rss

Full Screen is a Preference

Apple sells far more laptops than desktops these days. And the majority of those laptops have screens that are 13 inches or smaller.

When you use a smaller-screened laptop as your primary machine, you learn quickly that full-screen apps are actually quite useful on a Mac with a smaller screen. There are obviously some apps, particularly utilities, that I run as windowed apps, but I’d say the majority of my apps are running full screen most of the time now.

Which is why I get so frustrated that so few Mac apps remember my preference to be running in full screen.

Every time I relaunch these apps, I need to wait for the window to load, then click on the full-screen button to get it back to full-screen mode. It’s a small thing, but add it up over time with most of my apps every time I launch or reboot, and it becomes annoying quickly.

At first, I wasn’t sure it was even possible for developers to have an app launch in full screen. But then I realized Apple’s own manages to remember my full-screen preference between launches just fine.

Maybe they are using a private API to do this? I wondered. So I started looking for third-party apps that remembered my full-screen preference. Sure enough, a few of them do it. (One of those apps, Ulysses, I’m using to write this, in fact.)

It’s clearly possible. Why do so few of my third-party apps do it, then? Maybe it’s really hard.

So I fired up Xcode (where I was working on my own Mac app x2y anyway). A little research, a few lines of code to save a user default on windowWillEnterFullScreen and windowWillExitFullScreen, and sure enough, x2y was remembering my full-screen preference between launches. Check the pref on launch and toggle full screen if needed. Took me all of five minutes.

So what’s going on here? My guess is most Mac devs don’t use full screen apps very often. They are using large monitors or multiple monitors for Xcode, and while they might test their apps in full screen, they don’t think to save the full screen preference between launches, because they don’t use apps that way themselves.

The isRestorable property in macOS conveniently saves window position between launches without much effort for developers. Unfortunately, isRestorable doesn’t have any knowledge of whether the app is in full-screen mode. It would be nice if Apple provided a simple checkbox for remembering full-screen status in IB somewhere.

Meanwhile, on behalf of Mac laptop users everywhere, allow me to plead with my Mac developer friends: When I put your app in full screen and keep it that way, I’m showing intent. And good developers always pay attention to a customer’s intent, and use it to anticipate their preferences. Consider taking a few minutes on your next version to implement saving a preference for running the app full screen. It’ll go a long way to making your customers happy.