Jigsaw app icon

Like I said the other day, Jigsaw is one of those ridiculously fun (dumb?) ideas that come along and smack you upside the head one day and you can't help but take an afternoon to build.

It's also such a silly idea that I'd normally open source the code so other folks can tinker around with it. Unfortunately, my CloudKit syncing stack is based on a closed source framework that I can't distribute. (Ensembles, if you're curious. It's basically the greatest thing ever and makes my life as a Mac/iOS developer so easy.)

Instead, Jigsaw is free to download and have fun with.

In case you missed my post about why this app even exists...

Apple already lets you sync the contents of your Desktop using iCloud. But, if you're a visual person like me who often arranges their Desktop icons in meaningful ways, not having the positions of your files on screen also stay in sync is frustrating as I move between my laptop and desktop throughout the day.

Jigsaw solves that by syncing the positions of your Desktop icons over iCloud. Move a folder on your iMac, and a few seconds later it mirrors itself on your laptop. Here's a demo...


I've tested Jigsaw on Mojave and Catalina. I don't know of any reason why it wouldn't also work on Big Sur, but it's untested for now.

I also haven't even attempted to think about or solve any of the myriad problems that might arise from using multiple monitors.

Along those lines...

During testing this evening, I thought my sync code had gone haywire. I would move an icon on my iMac and almost immediately it would reposition itself into a random spot somewhere else rather than syncing across to my laptop.

What I finally realized was happening was this:

The position I happened to be moving that one icon on my large iMac screen was beyond the bounds of my laptop's smaller Desktop window. The icon position was syncing correctly, however Finder on my laptop immediately moved it into a new (random) location onscreen. That new location then synced back to my iMac, which made me think my syncing was off. Turns out, iCloud sync was so fast I didn't even notice it had round-tripped on me. (Nice work CloudKit folks!)

I mentioned in my previous Jigsaw post that I experimented with syncing the relative positions of icons instead of their absolute positions. It was as interesting solution in that it guaranteed icons would always remain on screen, but it led to odd behavior, so I took out that option.

Instead, Jigsaw's one and only Preferences setting is to enable debug mode. When turned on, Jigsaw will sync all of your connected Mac's screen sizes to iCloud, compute the smallest width and height among them, and then draw a red rectangle on your Desktop to show (in theory) the valid area you can safely arrange your icons within. (Again, I've tested this feature among my three computers - and only very briefly. YMMV.)

To support various screen sizes, I'm wondering about just ignoring icons that fall outside those bounds. But that presents its own sync challenges for another day.

Download Jigsaw

In any case, that's Jigsaw. Probably not very practical, but it was fun to build on a rainy day. Download the app and let me know what you think.