Sync Settings
Effortlessly synchronize and manage your editor's settings, extensions, profiles, and more across all your devices.
Works with VS Code, Theia, and compatible editors.
☑️ Quick Start
Step-by-step example
-
Open repository settings:
Sync Settings: Open the repository settings
-
Upload your settings:
Sync Settings: Upload (user → repository)
-
Download settings on another device:
Sync Settings: Download (repository → user)
⚙️ Configuration Overview
Sync Settings uses a settings.yml file for initial configuration:
hostname: "my-laptop"
profile: main
repository:
type: git
url: "https://github.com/username/repo.git"
Example: Rsync Repository
repository:
type: rsync
host: "my.server.com"
path: "/backup/vscode-settings"
Example: WebDAV Repository
repository:
type: webdav
url: "https://webdav.server.com/remote.php/webdav/vscode-settings"
username: "yourUser"
password: "yourPassword"
Repository Types
file | Store config locally |
git | Use local/remote Git repo (GitHub, GitLab) |
rsync | Sync via rsync/SSH to remote dir |
webdav | Use a WebDAV server |
🔗 Resource Sync
You control what to sync in your settings.json:
{
"syncSettings.resources": [
"extensions",
"keybindings",
"settings",
"snippets",
"tasks",
"uiState"
],
"syncSettings.ignoredExtensions": [
"theme-vintage",
"company.plugin"
],
"syncSettings.ignoredSettings": [
"editor.fontFamily",
"workbench.colorTheme"
],
"syncSettings.keybindingsPerPlatform": true
}
Example: Only Sync Extensions & Settings
"syncSettings.resources": [ "extensions", "settings" ]
📄 External Files
You can also sync your custom files. Add them in settings.json:
"syncSettings.additionalFiles": [
"~globalStorage/my-app-data.json",
"~/.bash_aliases",
"~/Documents/my_note.md",
"~editorStorage/plugin.backup"
]
Supported path prefixes:
~/ | Home directory |
~editorStorage/ | Extensions folder |
~globalStorage/ | User global state location |
⚠️ Syncing settings.yml is not required and will result in an error!
Example: Only Sync a Project File
"syncSettings.additionalFiles": [
"~/src/project/settings.local.json"
]
💾 Extensions Management
If your profile's data/extensions folder contains a .vsix file, it will take priority for extension installation.
Reveal the extensions directory:
Sync Settings: Reveal the profile in the file explorer
Example folder structure:
data
└── extensions
├── ms-python.python-2024.5.123456789.vsix
└── ms-vscode.cpptools-1.17.4.vsix
🗂 Profiles & Inheritance
Profiles store separate setups for different use-cases.
You can create or switch any time.
Creating a new profile
Sync Settings: Create a new profile
Switching profiles
Sync Settings: Switch to profile
Example: Profile Inheritance
Profiles can inherit (extend) resources from another:
profile: dev
extends:
- base
- work
💡 Essential Commands
- Open repository settings
- Upload/download settings
- Review configuration differences
- List missing extensions
- Manage profiles (create, delete, switch)
- Reveal profile in explorer
- Remove all local user settings and extensions (⚠️ destructive!)
Show all commands: Command Palette
Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
Type: Sync Settings
🛠 Advanced Features
JSONC Conditional Attributes
Enable settings for specific platforms or editor versions:
{
// #if(os="mac")
"editor.fontWeight": "300",
// #elif(os="windows")
"editor.fontWeight": "400",
// #else
"editor.fontWeight": "500"
// #endif
}
Hooks – Run Shell Scripts
Add hooks to run scripts before/after sync in settings.yml:
hooks:
beforeUpload: "sh ./pre-upload.sh"
afterDownload: "npm run local-setup"
Crons – Automate Tasks
Schedule tasks using cron syntax in settings.json:
"syncSettings.crons": {
"review": "0 * * * *", // Every hour
"download": "0 9 * * *", // 9:00 AM daily
"upload": "0 17 * * *" // 5:00 PM daily
}
Remote Mode
Note: Remote sync only supports extensions.
This is useful for Codespaces/WSL/Remote SSH.
Eclipse Theia Support
Partial support: settings, keybindings, tasks, and additional files.
Extensions sync is not available in Theia.
❤️ Support & Contribute
Thank you for using Sync Settings!