Making the System Setting Cube Farm Livable
by Jonathan Deutsch
Much has been said about macOS 13 Ventura’s upcoming System
Preferences Settings redesign. Quality of work aside, this release represents the most drastic change System Preferences has seen since the Mac OS X Public Beta in 2000. Yet it appears to be mostly re-arrangement, converting meticulously-laid-out controls to long scrolling lists. I liken the visual refresh to an office cube farm – inexpensive for the developer and unmemorable, uncultured, and soul-crushing for the user.
Often when developers convert a bespoke UI to a grid-based UI, it is due to refactoring each item to a common paradigm. This reduces backend complexity and lets all items benefit from central improvements. Unfortunately, it does not look like this was a driving force behind Apple’s redesign. I see no evidence the System Preferences team has rethought OS-level settings primitives or tried reconsidered how users should be able to customize and control their OS. The new System Settings is instead focused on blindly matching the design of iOS, resulting in arguably inappropriate UI patterns for a desktop platform.
It got me thinking… what if System Preferences was reimagined? What could have been better for the last 22 years if it was well-structured under the hood? What might be easier with all settings sharing an underlying setting primitive data structure (even if it is displayed in a cubicle UI)?
Here’s the first few ideas off the top of my head (from my twitter thread):
- All settings changes should be undoable (via ⌘Z, and redo via ⇧⌘Z).
- There should be a list of the most recently changed settings.
- There should be an easy way to restore defaults for a particular setting or group of settings.
- Time Machine should allow viewing a diff of settings and rolling back to previous states.
- Each setting should be deep-linkable. When a friend or family member asks how to do something, I can send them a link to the exact spot. When clicking on the link, it will highlight the entry.
- Taking it further, I should be able to also transmit the setting or group of settings via this deep link URL. Of course, there will need to be a confirmation before enacting the changes.
- Every setting should be able to be retrieved and modified via programmatic control. AppleScript is still fine by me.
- All changes from the defaults should be easily exportable and transferrable to other machines.
- I should be able to automatically sync relevant settings across different machines and devices via iCloud. Apple has done this to a small degree already with Focus states and Internet Accounts. We’re in the 21st century now, so all settings should have this option.
The information hierarchy and location for settings continues to be a fundamental problem. In the Ventura and pre-Ventura System Preferences, there’s no top-level categorization; often, disparate panes are grouped together, and there’s a mishmash of table groups, tabs, and sheets hidden behind buttons for sub-groups. Here’s a few examples:
- “Desktop & Dock” has groupings for Dock, Menu Bar, Windows & Apps, and Mission Control. I would not have any clue Mission Control is there from the title and even opening the pane, as it is at the bottom of the long scrollable list. Implied in the pane name but missing is anything related to the Desktop, aside from an option for the Show Desktop keyboard shortcut, shown in when you click on “Shortcuts…” at the bottom. Of course, this has duplicate information in the Keyboard’s “Keyboard Shortcuts,” which itself is a whole sheet with a sidebar.
- Displays has an “Advanced…” button, which has a “Battery and Energy” setting group! I’d never know that the option to prevent sleep when connected to the power adapter when the display is off would be tucked away here.
These messy hierarchies are common to most panes, and it is not a new problem. It isn’t a particularly easy problem to solve, either. A perfect hierarchy is impossible: some settings can be thought of as belonging to multiple areas (especially ones cutting across the system, like accessibility or privacy). Some settings have dependencies or cause multiple setting changes. However, there’s still plenty of room for improvement:
- Each setting should have a clear primary hierarchy, one which does not allow combined “&” groupings. It starts with high-level categories in the OS (e.g., “hardware”, “software”) and extends as far down as needed.
- This hierarchy is entirely exposed through a browser or outline view, not a simplistic sidebar. All groupings use the same UI, and nothing is hidden behind a labyrinth of buttons.
- Each setting should also allow for alternate hierarchies under the hood to help with searching.
- Each path component in the hierarchy can be considered a tag. Therefore, when searching, the browser/outline view can appropriately surface where matching items exist in the hierarchy.
- The search could act as a tag browser, allowing me to AND items like “accessibility” and “mouse” to see the options that cut across both.
- The search display could be made bigger and have a search history.
- The search should be able to find dynamic items, such as those which may be populated when applications are installed.
The root of System Preferences’ problems is the sheer quantity of settings. As a software developer, it is often hard to make the call between allowing customization for users and avoiding complexity – both in the UI, and in my own test matrix. With only a few exceptions, Apple has been commendably conservative at adding new settings. 22 years of macOS adds up, and the complexity is there, like it or not. Hopefully, this post has a few ideas that Apple could ponder to help manage some of the complexity.
What do you think? What other “big picture” changes could be made to the System Settings?
Thanks to Ken K., Neil J., and Giovanni D. for feedback on this post.