Syncing settings & packages between machines


#1

Hi,

I work on 2 machines and need to keep my atom setup synced between them. To experiment I created a git repo in the ~/.atom directory. I included all files except ~/.atom/storage and it seems to work fine across my machines. The only downside is that the config file includes the generated user_ids for analytics and crash reporting, so I’m reluctant to have the repo public on Github.

My question: Is there a better way to sync the setup between machines? It would be nice if the installed packages were specified in a package.json or similar file Then I could ignore the package sources in the repo. Also, it seems a bit dirty to include the node-gyp installation. Would it be safe to ignore it? Or would that cause issues if the machines have different versions of node-gyp

One idea I have is to automatically commit & push updates as configuration changes, automating the syncing. This could potentially be an atom plugin.

J


Configuration sync
Atom Account With All Your Atom Settings, Installed Packages and Themes
Sync settings and packages via Github account
Store preferences on cloud
Stylesheet Synchronisation
How can I synchronize the packages and themes when I use another computer?
Add Account Feature
Remote Sync Atom Projects and Settings
How to change the config folder in Atom?
Syncing Atom packages with git
Is there a way to import my atom settings and extensions from another device?
How do I make large, personal modifications to built-in packages?
Multicomp Settings Support
How would I script Atom setup and configuration?
Is there a method to import/export settings?
Moving Windows Install to Mac?
Remote Storage For Snippets
Atom should link to Github account to sync configs and packages between platforms
Newbie package customization etiquette question
Best way to manage Atom config files
Load the user profile
#2

In the past for other apps I’ve used Dropbox, moved the app settings directory to it and created a symlink between the two so everything stays synced between multiple machines. Not sure if that’s a solution for you.


#3

It would extra slick if you could have it sync with your Github account, so every time you install the app on a new machine it connects to your Github account and all your settings and packages get pulled down from there. I guess this would sort work the way Chrome keeps all your settings and extensions synced with your Google account…

It could be a very nice feature.


#4

@fleeting your suggestion works great by the way. I moved my atom folder into my Dropbox, and then just setup a symlink where it used to be. Now all my settings, styles, themes, packages, etc stay consistent between machines.

$ mv ~/.atom ~/Dropbox/Apps/Atom

$ ln -s ~/Dropbox/Apps/Atom ~/.atom

This is fantastic!


#5

I have simply just been treating ~/.atom like I have my dotfiles. It lives in my dotfiles repository and is symlink’d to my home directory; works like a charm.


#6

I emailed Github about adding this feature to Atom natively, but they said it would more than likely be a long time before it happened and suggested I build an extension. Something like this would be very interesting.


#7

It’d be interesting if the extension came as a service. Login and subscribe via GitHub OAuth, download the package and configure it with a token, hey presto, things sync for you.


#8

I would agree, Sync settings with my Git Hub account.

In theory you could also sync team settings based on organizations that you are a member of based on the current open project.


#9

Im using Mackup for this, which works beautifully although Im finding that syncing the entire .atom folder is bit heavy on the Dropbox sync process.

I was considering excluding from the sync process the following folders:

.atom/.node-gyp
.atom/compile-cache
.atom/storage

Can anyone confirm if it is ok to exclude those folders?


#10

To my understanding, which isn’t as complete as it should be, the following are for:

  • ~/.atom/.node-gyp — Storage of npm modules that your apm packages depend upon
  • ~/.atom/compile-cache — Compiled V8 code?
  • ~/.atom/storage — Serialized windows and their state

These are all probably reasonably machine-specific, so I don’t think excluding them should be a problem at all.


#11

Syncing the parts of the .atom folder would make sense. What I might do is just sync the config.cson and snippets.cson files across machines. I also setup a super-simple install script so when I get a new machine I can run a fresh install of all my commonly used packages.


#12

If you mark your commonly-used packages with stars now, you can install them super-simple by typing: apm stars --install.


#13

Cool. Didn’t realize that command existed; thanks for sharing.


#14

I just noticed that there is a .gitignore file in ~/.atom/ with the following contents:

storage
compile-cache
dev
.npm
.node-gyp

So it should be safe to exclude those.  Hope this helps!


#15

I’ve been pretty happy with a package I found called sync-settings

Will store all your Atom packages and settings in a secret gist, which you can then sync with (upload / download) on any number of your machines.


#16

Until now I used the symlink solution but I encountered a problem. I don’t use the same home folders name on my computers. This means I have to use relative paths to e.g. linter gems in the linters package settings, as these settings are synced, too. The problem is, relative paths don’t seem to work in the Atom settings? I always get an error that the specific gem couldn’t be found when using a relative path. With absolute paths, the gem is found.


#17

I just recently wrote article about Synchronizing Atom between computers where I wrote about three ways from this thread in little bit of more detail. Personal I use Atom Sync Settings, but I still feel that there could be done a lot more. Maybe we can think about some solution here?


#19

What do people use to sync Snippets and Keymap theses days?
Im using the Settings Synchroniser plugin but that only takes care of Atom’s main configuration.


#20

yea github dotfiles (i.e. a repo / private repo for your .atom folder, see bitbucket for privacy worries)

works fine for me (provided machines are either updated or kept at a consistent version, packages with native stuff will need a reinstall but if you gitignore the first node modules directory and apm install em after git pull you should be good.


#21

Another option would be to sync the directory with BitTorrent Sync. No need for symbolic links to your Dropbox folder