That's how I've been keeping my keepass password db sync'd across machines. So far keepassxc and related clients handle it pretty gracefully. If I try to save and the DB has changed out from under it in the meantime, I'm prompted whether I want to reload first. If syncthing notices conflicts when syncing and leaves a conflict file for me, I can use keepass to merge the extra copies of the db and then delete them.
Permissions are a little tricky. I think I want everything in syncthing's directory to be owned by syncthing, but I need to still have access.
I've chown'd the directory to syncthing.syncthing, but not everything is group-accessible, so my user can't access it anymore.
I could just recursively set everything to g+rwx, but that'd be weird for files that shouldn't be executable.
It'd be nice if there were a simple command to "copy the user permissions to the group permissions".
Since there shouldn't actually be any executables there I can probably get away with just setting everything g+rw, and then the directories go g+x.
```
sudo chmod -R g+rw /var/lib/syncthing/Sync/evolution
sudo find /var/lib/syncthing/Sync/evolution -type d -exec c
hmod g+x \{\} \;
```
Apparently syncevolution is a thing. I don't want to deal with teaching every program whose backing store I want to sync about which devices to sync to and how to contact them, though.
One of the mechanisms syncevolution can use is 'SyncML' which looks like a generic synchronization protocol. I wonder if there's a "syncthing for SyncML"...
I haven't bothered to actually populate the DB yet, so not actually that big of a deal...
Examining the strace output further, it doesn't appear to try to directly open the db at all... but *does* do a bunch of IPC.
There are some persistent /user/libexec/evolution-* processes, so most likely one of these is holding some kind of lock on the database.
I think it's back to the drawing-board here. Maybe I'll take a closer look at syncevolution...