Sincronizza le preferenze di applicazioni tra più Mac

Tendo a mantenere tutta la mia roba in Dropbox. Ora che ho comprato un secondo Mac, ho pensato che mantenere le mie preferenze di applicazioni in Dropbox sarebbe stata una buona idea.

Sono riuscito a sincronizzare alcune delle cartelle di supporto delle applicazioni (voglio solo che le applicazioni più importnti siano in sincronia) collegando semplicemente la cartella condivisa su Dropbox al collegamento sui Mac:

ln -s ~/Dropbox/SharedPrefs/AnApp ~/Library/Application Support/AnApp 

in questo modo assicuro che each, diciamo, il text Sublime 2 creo che creo su un Mac verrà sincronizzato sull'altro Mac.

Ma ho difficoltà a sincronizzare i file .plist effettivi. Ho fatto la stessa cosa come sopra (l'esempio è per iTerm 2):

 mv ~/Library/Preferences/com.googlecode.iterm2.plist ~/Dropbox/SharedPrefs/ ln -s ~/Dropbox/SharedPrefs/com.googlecode.iterm2.plist ~/Library/Preferences/com.googlecode.iterm2.plist 

Così ora ho il file fisico reale di .plist su Dropbox e un collegamento di segnaposto sul Mac.

Ma questo non sembra funzionare: quando chiudo e riapre iTerm (o qualsiasi applicazione), non è in grado di utilizzare il simbolo per accedere alle preferenze di Dropbox.

Cosa dovrei fare?

Apprezzerò each consiglio su come mantenere le preferenze delle applicazioni sincronizzate tra due Mac; Sto usando la linea cmd solo perché sono abituata, ma anche un'utilità GUI è ok. Inoltre, un'utilità che non sincronizza solo la cartella di Supporto applicazioni , ma anche i file .plists e altre cose condivise sarebbero fantastiche!

Apri le preferenze e seleziona la casella contrassegnata "Carica le preferenze da una cartella o URL del cliente" "

È ansible accedere alla cartella Dropbox e fare clic su "Salva impostazioni nella cartella"

esempio

Un altro modo, utile per altri tipi di file o altri programmi, è quello di utilizzare collegamenti duri invece di quelli simbolici. Usare "ln" invece di "ln -s". Attenzione – un legame duro è molto diverso da quello simbolico. Un collegamento di simbolo è solo un puntatore del file. È ansible eliminare il collegamento e il file non è toccato. Un collegamento duro è una voce duplicata per il file nella directory del disco. È come se il file fosse davvero in due punti contemporaneamente. Un programma non può distinguere tra i due. Se si elimina il collegamento elimina il file effettivo. Questi sono così diversi che usando lo stesso nome per entrambi probabilmente non dovrebbero essere stati fatti.

È ansible impostare un elemento di azione della cartella che controlla le cartelle relative e gestisce un Applescript che copia i file di preferenza relativi alla cartella Dropbox quando la cartella cambia.

Un altro approccio (simile) sarebbe quello di scrivere un agente di lancio:

  <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.yourname.yourapp</string> <key>Program</key> <string>/Users/yourname/path/to/your/script</string> <key>ProgramArguments</key> <arrays> <string>script</string> </arrays> <key>WatchPaths</key> <arrays> <string>/path/to/preferencefile1.plist</string> <string>/path/to/preferencefile2.plist</string> </arrays> </dict> </plist> 

Salvare questo come un file com.yourname.yourapp.plist quindi copiarlo in ~ / Library / LaunchAgents /. Carica nel lancio utilizzando

 launchctl load ~/Library/LaunchAgents/com.yourname.yourapp.plist 

avviarlo: launchctl start com.yourname.yourapp

Ora l'agent launchd eseguirà lo script / Users / yourname / path / to / your / script each volta che "preferencefile1.plist", "preferencefile2.plist", ecc., Vengono modificati.

Ad esempio, "script" potrebbe essere qualcosa che copia i file di preferenza nella cartella dropbox.

Un altro agente di lancio dovrebbe essere impostato sull'altra macchina per monitorare i file nella cartella dropbox e copiarli nella posizione corretta quando si cambiano.