mkl
SyncThing. It can be run in both Windows and WSL on the same machine.

If you were exclusively working in MS Office, OneDrive could work, but with anything else it gets really frustrating as it syncs when it feels like it - you can't force it.

solardev
In practice, 100% sync is too complicated. I aim for like 80% application-level syncing instead. That means I let the web browser handle its own syncing (login to a profile), my IDE (Jetbrains) does the same, my passwords and passkeys and 2FA are in 1Password, then I just git push and pull to my private branches or forks to work across different machines. Most of the rest of it is cloud-native anyway (email, Slack, project management, time tracking, designs, etc.).

It doesn't sync everything (open tabs, terminal history, browser cookies, etc.) but gets the most critical things.

The main benefit to me of this approach is that it's pretty much login and forget. I don't have to worry about remembering to start a manual sync or waiting for it to finish. It's most of what I need for minimal effort.

eszed
I keep dotfiles and configuration scripts on GitHub. Use a password manager for any kind of authentication. An MDM takes care of application installation, apart from some of my own idiosyncratic needs, which I install for myself - they're all OS or direct-download, so no appstore involved. Dropbox handles files.

I got to stress-test this a few weeks ago, when I stupidly left my laptop at my dad's house, three-ish hours away. It took me far less time to get myself set up and fully-productive on another machine than it would have to even make the one-way drive.

My only real frustration so far: installing all of the SublimeText packages I've come to rely on. Once I get my my other laptop back they (or at least their configs) are going into git as well.

navjack27
OneDrive? WSL is already in Windows so you don't really need to sync anything if you think about it. Each of my devices kind of play a role and they don't need to all be whatever you would consider synced. Edge syncs... OneDrive shares data... What else do you need to sync?

I'm not dismissing you I just think you need to come up with a more cohesive definition of synchronization of blank. Do you want your terminals to have their histories synchronized? Do you want the entire hard drives to be the same? Do you want your web browsers settings to be the same?

You could even use git for something like this. And you could just pull repos locally for projects that you're working on and just synchronize them between computers that way and just host a local gittea or something.

stephenr
I use a simple approach.

I use an external TB3 m.2 SSD for everything work related. When going away when I may/will need to work, I unplug the drive from my desktop and put it in my bag with my laptop.

The drive (and tb3) is fast enough to run multiple VMs from it without a problem.

For smaller things I use regular sync tools (ie browser bookmarks in iCloud; IDE settings sync via JetBrains).

hammyhavoc
Personally, I switched to NixOS to be able to turn any computer into "my computer" via a reproducible and declarative config, and I keep the config in a Git repository, sync files via Nextcloud, amidst a smattering of other Docker containers on my server.

Chezmoi is good for imperative dotfiles too—I keep those in a Git repository too.

java-man
I'd recommend sync.com - end-to-end encrypted, cross-platform, and have one convenient feature called "vault" which is basically a partition that lives in the cloud only, that is it's not being sync'ed across the clients.

(i am not affiliated with them, just a happy customer)

stop50
Im not sure about wsl, but for most data i would use my own nextcloud and syncthing.
silb
Run Debian stable on both PCs. Have /home on ZFS and zfs-send it between the PCs.
nathants
git.