http://bjoernstechblog.rueffer.info/posts/mac/bibdesk/2015/07/30/Synchronizing-App-Preferences-across-different-machines-in-Yosemite/
last updated on 25 May 2018

30 July 2015

Synchronizing app preferences across different machines (on a Mac with Yosemite)

I use an application called BibDesk to maintain my BibTeX files. I basically have only two of these files: One for my own publications and one for any reference I have ever looked at or cited. I keep these in a particular folder that is under git version control and synchronize it across the computers I use. On all these computers I use BibDesk with exactly the same settings for automatically generated cite-keys and other goodies. So far so good. That’s not the story here.

Everything was working fine until very recently: Started to notice that the application settings that Mac OS used to store in files like ~/Library/Preferences/*.plist seem to have no effect any longer under Mac OS Yosemite. In my particular use case, I care about the file ~/Library/Preferences/edu.ucsd.cs.mmccrack.bibdesk.plist and I synchronize that using the same approach described above across machines.

It turns out that Yosemite no longer seems to rely on these files for saving application preferences (although it does re-generate these if you delete them). So how can you still synchronize per-application preferences in Yosemite?

The answer lies, as so often, in the command line: There is a command line tool to extract preferences and to restore them. That is what one needs to use in cases like mine. The simple work-flow is basically as follows, and it should work for any app, not just BibDesk.

To make a backup into a file BibDesk-Preferences-Backup-File of your current preferences for an application (BibDesk in my example), use

defaults export edu.ucsd.cs.mmccrack.bibdesk - > BibDesk-Preferences-Backup-File

To restore the preferences for the same app from this very file, use

cat BibDesk-Preferences-Backup-File | defaults import edu.ucsd.cs.mmccrack.bibdesk -

If you have a different application you care about, you need its app-id or domain and replace the text edu.ucsd.cs.mmccrack.bibdesk in the above commands by this id. To find out what this id might look like in your own case, use

defaults domains

and look for the name of your application. To learn more about the defaults utility, type

man defaults

And that’s already it.

Björn Rüffer — Copyright © 2009–2018 — bjoern.rueffer.info