Articles index

How to restore the Preferences menu item to macOS Ventura

September 5 2022 by Jeff Johnson
Support this blog: StopTheMadness, Tweaks for Twitter, StopTheScript, Link Unshortener, PayPal.Me

On the macOS 13 Ventura beta, the venerable "Preferences…" menu item has been replaced by the iOS-like "Settings…" menu item in Apple's built-in apps. The menu item also gets automatically replaced in third-party apps if they're compiled with the macOS 13 SDK in the Xcode 14 beta. Fortunately, I've discovered a way to undo this change and stop the creeping iOSification of the Mac. In Terminal, just enter the following command:

defaults write -g NSMenuShouldUpdateSettingsTitle -bool NO

The -g argument is short for -globalDomain or NSGlobalDomain, which means that it applies to every app. You'll need to quit and relaunch for this to take effect in running apps. If you ever want to undo the change and restore the system default:

defaults delete -g NSMenuShouldUpdateSettingsTitle

For developers using the macOS 13 SDK, you can fix your app using the following code:

-(void)applicationWillFinishLaunching: (NSNotification*)notification
{
    [[NSUserDefaults standardUserDefaults] registerDefaults:
        @{ @"NSMenuShouldUpdateSettingsTitle": @NO } ];
}

You need to do this in applicationWillFinishLaunching: because applicationDidFinishLaunching: is too late. For the functionally illiterate, i.e., developers who can't read or write Objective-C, here's the Swift code:

func applicationWillFinishLaunching(_ notification:Notification)
{
    UserDefaults.standard.register( defaults:
        [ "NSMenuShouldUpdateSettingsTitle": false ] )
}

And there you have it, macOS once again respects your Preferences. You're welcome!

Support this blog: StopTheMadness, Tweaks for Twitter, StopTheScript, Link Unshortener, PayPal.Me

Articles index