Syncing settings
Do you have multiple computers you’d like to run your slicer on but don’t want to manually keep your settings in sync? This is for you!
These direction are written for OrcaSlicer as that’s what I regularly use, but should be adaptible between other slicers.
Cloud sync
Section titled “Cloud sync”Some slicers (e.g. Bambu and OrcaSlicer) include a network / cloud plugin you can enable to sync your settings between computers. This is often the most straightforward way.
External sync
Section titled “External sync”If you can easily do so, you can make a shortcut to pass the correct option for your slicer. For OrcaSlicer, this would look like
/path/to/orcaslicer --datadir PATH_TO_YOUR_SYNC. This can be done in the KDE menu editor, or easily via a shortcut on Windows. It’s somewhat
more obnoxious to do on macOS.
If you’d prefer something a bit more granular, you can use the below approach that creates symlinks to your config.
Initial setup
Section titled “Initial setup”First off, you need something to physically do the sync. Options include:
- Dropbox
- Syncthing
- Git repository (my preferred method — less automatic but lets you version your changes)
Set up one of these on the computer you’re starting out with.
Then, you’ll need to run the following. Choose PowerShell if you’re on Windows, and Bash if you’re on macOS or Linux:
# SET OR CONFIRM THESE VARIABLES v
SLICER='OrcaSlicer'SRC="PATH_TO_YOUR_SYNC" # e.g. "$HOME/Dropbox/Slicer Settings"
# SET OR CONFIRM THESE VARIABLES ^
if [[ "${SLICER}" == 'OrcaSlicer' ]]; then DEST_SUBPATH='user/default'fi
case $(uname -s) inDarwin) DEST="$HOME/Library/Application Support/${SLICER}" ;;Linux) DEST="$HOME/.config/${SLICER}" ;;*) echo 'Unsupported system; please set $DEST manually and submit a PR!' 2>&1 ;;esac
# ensure SRC is empty; this is a fresh setupif find "${SRC}" -mindepth 1 -maxdepth 1 | read -r; then echo "${SRC} contains files -- check the path or run the sync script" 2>&1fi
mkdir -p "${SRC}"
pushd "${DEST}/${DEST_SUBPATH}" >/dev/null || exitfor d in *; do echo "backing up ${d}" cp -r "${d}" "${d}.orig" mv "${d}" "${SRC}/${d}"
echo "linking ${d}" ln -s "${SRC}/${d}" "${d}"donepopd || exit
echo "Successfully copied and linked $SRC to $DEST"# SET OR CONFIRM THESE VARIABLES v
$SLICER = 'OrcaSlicer'$SRC = "PATH_TO_YOUR_SYNC" # e.g. "$env:HOME/Dropbox/Slicer Settings"$DEST = "$env:APPDATA\$SLICER"
# SET OR CONFIRM THESE VARIABLES ^
$DEST_SUBPATH = ""if ($SLICER -eq 'OrcaSlicer') { $DEST_SUBPATH = 'user\default'}
# ensure SRC is empty; this is a fresh setupif ($(Get-ChildItem $SRC).Length -gt 0) { Write-Error "${SRC} contains files -- check the path or run the sync script" -ErrorAction Stop}
New-Item -ItemType Directory -Force -Path $SRC
Push-Location "$DEST\$DEST_SUBPATH"
Foreach ($d in Get-ChildItem -Directory){ Write-Host "backing up $d" Copy-Item -Path $d -Destination "$d.orig" -Recurse
Move-Item $d "$SRC\$($d.Name)"
Write-Host "linking $d" New-Item -Path $d -Target "$SRC\$($d.Name)" -ItemType SymbolicLink}Pop-Location
Write-Host "Successfully copied and linked $SRC to $DEST"Setting up additional/new machines
Section titled “Setting up additional/new machines”Once you’ve set up your source of truth, you can set up additional machines like so:
# SET OR CONFIRM THESE VARIABLES v
SLICER='OrcaSlicer'SRC="PATH_TO_YOUR_SYNC" # e.g. "$HOME/Dropbox/Slicer Settings"
# SET OR CONFIRM THESE VARIABLES ^
if [[ "${SLICER}" == 'OrcaSlicer' ]]; then DEST_SUBPATH='user/default'fi
case $(uname -s) inDarwin) DEST="$HOME/Library/Application Support/${SLICER}" ;;Linux) DEST="$HOME/.config/${SLICER}" ;;*) echo 'Unsupported system; please set $DEST manually and submit a PR!' 2>&1 ;;esac
pushd "${SRC}" >/dev/null || exitfor d in *; do dest="${DEST}/${DEST_SUBPATH}/${d}"
if [[ -L "${dest}" ]]; then echo "${d} already linked; skipping" continue fi
echo "backing up ${d}" test -d "${dest}" && mv "${dest}" "${dest}.old"
echo "linking ${d}" ln -s "${PWD}/${d}" "${dest}"donepopd >/dev/null || exit# SET OR CONFIRM THESE VARIABLES v
$SLICER = 'OrcaSlicer'$SRC = "PATH_TO_YOUR_SYNC" # e.g. "$env:HOME/Dropbox/Slicer Settings"$DEST = "$env:APPDATA\$SLICER"
# SET OR CONFIRM THESE VARIABLES ^
$DEST_SUBPATH = ""if ($SLICER -eq 'OrcaSlicer') { $DEST_SUBPATH = 'user\default'}
Push-Location $SRC
Foreach ($d in Get-ChildItem -Directory){ $dest = "$DEST\$DEST_SUBPATH\$($d.Name)"
if ((Test-Path $dest) -and (Get-Item -Path $dest).LinkType -eq "SymbolicLink") { Write-Host "${d} already linked; skipping" Continue }
if (Test-Path -Path $dest) { Write-Host "backing up ${d}" Move-Item $dest "${dest}.old" }
Write-Host "linking ${d}"
New-Item -Path $dest -Target "$SRC\$($d.Name)" -ItemType SymbolicLink}