I would like to change the Safari default search engine programmatically on Mac OS X. I know there are 3 possible values, but where Safari stores the current value? I would like to change from Google to Yahoo from Cocoa code. Is it possible?
I've seen in the a SearchProviderIdentifierMigratedToSystemPreference
variable is set to YES in the com.apple.Safari.plist
file, that can be located at ~/Library/Preferences
. This could be the key to the current value, but where the "System Preference" is stored? Do you have any clues about this?
Update: I've found the this command defaults read -g NSPreferredWebServices
always returns the selected default search engine. The problem with this is that when I change the value of it, the safari doesn't changes the value.
Here's the command that changes the value to Bing:defaults write -g NSPreferredWebServices '{NSWebServicesProviderWebSearch = { NSDefaultDisplayName = Bing; NSProviderIdentifier = "com.bing.www"; }; }';
This command should be executed in the terminal.
Apparently (tested with macOS 11.5), the NSPreferredWebServices
sets the System search engine (where Spotlight redirects you when launching a web search with Spotlight for instance).
This key is updated whenever Safari’s search engine is updated.
Another key is updated too when Safari’s search engine changes: SearchProviderShortName
(in domain com.apple.Safari
). And apparently this is the one to update to change Safari’s search engine. (Set to DuckDuckGo
to use DuckDuckGo for instance.)
Previously (before SearchProviderIdentifierMigratedToSystemPreference
), the key was SearchProviderIdentifier
, and the value was com.duckduckgo
for the DuckDuckGo search engine.
My recommendation would be to set all of them to be safe:
defaults write -g NSPreferredWebServices '{NSWebServicesProviderWebSearch = { NSDefaultDisplayName = Bing; NSProviderIdentifier = "com.bing.www"; }; }'
defaults write com.apple.Safari SearchProviderIdentifier -string com.bing.www
defaults write com.apple.Safari SearchProviderShortName -string Bing
Related question: https://stackoverflow.com/a/16224386
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With